|
주) 이 글은 리눅스 상에서의 작업을 기술해 놓은 것이어서 어느정도 리눅스에 대한 지식이 있는 분이 이해할 수
있을 것입니다. 나중을 위해 작업과정을 기록하는 의미에서 올려 놓은 것입니다.
주말을 이용해 진해에 내려와 라즈베리파이 2 모델 B 에 X 리플렉터 서버 프로그램 dxrfd를 설정해
보았습니다.
dxrfd 서버 프로그램은 KI4LKF 가 원저자인 것으로 아는데 이분이 더이상 개발을 하지 않고, 다른 HAM
들이 변종 버전을 내놓고 있는 것 같습니다.
가장 안정적인 버전은 V3.08 이라고 알려져 있으나 대부분의 소스코드가 CentOS Linux 기준으로 되어
있어서 라즈베리파이에서 컴파일이 되지 않았습니다. 제 리눅스 실력이 부족해서 소스파일을 점검해
컴파일 에러를 잡기에는 무리가 있네요.
Yahoo Group에 올려져 있는 V3.08 및 V3.08a 도 마찬가지로 컴파일이 안되어서 유일하게 컴파일이 되는
V.3.11 로 설정을 해 봤습니다.
이 버전은 앞글에서 소개한 이태리 사이트의 글을 참조해 거의 따라하기 수준으로 해본 것입니다.
라즈베리파이는 2 모델 B 를 하나 구매해 사용했습니다. 구 버전에 비해 쿼드코어 CPU에 1GB RAM
때문인지 구버전에 비해 상상할 수 없는 빠른 속도가 나오네요. 예전에 거의 기어다니다던 화면이
날라다니네요.
먼저 https://www.raspberrypi.org/downloads/ 에서 Rasbian (Debian wheezy) 최신 이미지 파일을 다운
받아 Win32 Disk Imager 프로그램을 사용해 16GB 마이크로 SD 카드에 기입했습니다.
라즈베리파이에 모니터, 키보드, 마우스를 연결하여 사용하는 불편함을 해소하고자 일반 PC에서 라즈베리
파이로 원격 접속할 프로그램을 2개 설치하였습니다.
먼저 Scure Shell (SSH) 프로그램인 Putty 입니다. 인터넷 검색을 하면 윈도우용 프로그램을 쉽게 찾아서
다운로드 할 수 있는 프로그램으로, 원격으로 암호화 된 접속을 하는 터미널 프로그램입니다. 라즈비안에
이미 SSH 서버가 구동되고 있으므로 윈도에 Client 프로그램만 설치하면 됩니다.
다음은 윈도우 PC에서 라즈베리파이로 파일을 복사해 넣을 목적의 프로그램으로 scp (Secure Copy)
프로토콜을 사용하는 winscp 프로그램입니다. 이 또한 웹상에서 쉽게 다운로드할 수 있는 프로그램
입니다.
Putty 연결 설정
Putty 연결된 화면 기본 User인 pi/raspberry로 접속한 후 sudo -s 로 super user인 root로 변경
WInscp 연결 설정 화면 (사용자 ID/Passwd는 pi/raspberry로 설정합니다.)
WInscp 연결된 화면
맨처음 부팅하면 raspi-config 가 자동으로 기동되면서 다음 화면이 나옵니다.
1번 파일 시스템 확장을 선택해 엔터를 누르면 3.2GB 정도였던 파일시스템 용량을 SD 카드의 최대용량까지 확장시켜 줍니다.
완료후 Tab 키를 사용헤 Finish 메뉴를 사용해 빠져나온후 시스템 리부팅을 합니다.
----- 추가 : 2015.08.24 -----
위 메뉴중 "4 Internationalisation Options" --> "I2 Change Time Zone" 에서 "Asia" --> "Seoul" 로 변경하면 시스템 시간이 UTC에서 Local Time으로 변경됩니다. 이렇게 하면 나중에 XRF070 Dashboard에서 한국시간으로 볼 수 있게 됩니다.
----- 추가 끝 -----
일단 시스템 파일부터 최신 상태로 만듭니다.
Putty 터미널 화면에서 (root 상태에서, pi로 로그인한 상태라면 명령어 앞에 sudo 를 추가해야 함)
apt-get update
apt-get upgrade 를 실행합니다. 인터넷에서 최신 파일을 다운 받아 설치하므로 시간이 조금 걸립니다.
다음은 컴파일러를 설치합니다.
apt-get install gcc
apt-get install c++
다음은 dxrfd 설치용 디렉토리를 만듭니다.
mkdir /root/dxrfd
Winscp를 사용해 소스코드를 /root/dxrfd 폴더로 복사해 넣습니다.
Winscp는 기본적으로 사용자 pi로 로그인된 상태이므로 root가 만들어 놓은 /root/dxrfd 폴더로 직접 access를 할
수 없습니다. 따라서 /home/pi 밑의 적당한 곳으로 소스코드를 복사해 넣은후 putty 터미널 프로그램에서 root
자격으로 파일을 복사해 넣습니다.
일부 소스코드 배포본은 zip 형태로 압축되어 있어서 그대로 라즈베리파이에 복사후 unzip 명령으로 압축을 풀수도
있으나 서브 디렉토리가 생성되는 압축파일도 있으므로 윈도우에서 압축을 풀어 라즈베리파이의 /root/dxrfd 폴더로
옮기는 것을 추천합니다.
root@raspberrypi : /home/pi# cp ./* /root/dxrfd
설치 디렉토리로 이동합니다.
cd /root/dxrfd
컴파일용 스크립트 파일에 대한 실행권한을 설정합니다.
chmod +x *.doit
컴파일을 합니다.
./dxrfd.doit ==> 컴파일이 완료되면 실행파일 dxrfd가 생성됩니다. XRF 리플렉터 서버 메인 실행파일입니다.
./xrf_lh.doit ==> 컴파일이 완료되면 실행파일 xrf_lh가 생성됩니다. Dashboard 를 만들어 내는 프로그램입니다.
다음은 리플렉터 설정파일을 수정합니다.
nano 에디터를 사용합니다.
nano dxrfd.cfg
OWNER=XRF070
ADMIN=HL5BPL
이 두개 정도만 설정하고 나머지는 화면과 같이 디폴트 값으로 놔둬도 되겠습니다.
OWNER는 리플렉터 번호입니다. 웹상에서 검색하여 빈 번호를 선택해야 합니다.
이곳 http://db0fhn.efi.fh-nuernberg.de/doku.php?id=projects:dstar:xreflector
또는 http://xrefl.net/ 을 참조해 보면 되겠습니다.
이제 메인 실행파일인 dxrfd 가 라즈베리파이 리눅스 라즈비안이 실행될 때 자동시작되도록 (윈도우의 시작프로램 과 동일 작동)
하겠습니다. 리눅스에는 약 2가지 정도의 방법이 있지만 다음과 같이 /etc/rc.local 파일에 명령을 집어 넣도록 하겠습니다.
nano /etc/rc.local
아래쪽 fi 와 exit 0 사이에 넣은 두 줄입니다.
sudo mv /var/log/dxrfd.log /var/log/dxrfd.old
sudo /root/dxrfd/dxrfd /root/dxrfd/dxrfd.cfg /var/log/dxrfd.log &
reboot 명령으로 시스템을 리부팅한후 dxrfd 데몬 (RAM 상주 Background 구동 서버 프로그램)이 정상적으로 구동되는지
ps -ef 명령으로 확인해 보면 됩니다.
dxrfd 리플렉터 서버는 리룩스 쉘에서 netcat 명령어를 사용해 직접 control 할 수 있습니다.
서버는 디폴트 포트 30002로 수신하므로
nc -u 127.0.0.1 30002 를 실행한 후 여러 명령어를 사용합니다.
pu : 연결된 "사용자"를 표시합니다.
mu : 사용자를 침묵시킵니다.
uu 사용자에게 보이스 트래픽을 다시 가능하게 합니다.
pl : 연결을 표시합니다.
sh : 서비스를 스위치 off 합니다.
pb : 차단된 이름을 표시합니다.
ab NAME : NAME에 대해 트래픽을 차단합니다.
rb NAME : NAME에게 블록을 제거합니다.
mc NAME : NAME을 침묵시킵니다.
uc NAME : NAME에게 보이스를 회복시킵니다.
qsoy : QSO 상세를 활성화 시킵니다.
qson : QSO 상세를 off 시킵니다.
pv : 사용하고 있는 소프트웨어의 버전을 표시합니다.
다음은 dxrfd 서버가 운용되는 동일 라즈베리파이 안에 웹서버를 설정하고 XRF 리플렉터 Dashboard 를 설정하는
방법입니다.
아파치 웹서버 설치입니다.
일반적으로 리눅스에서 웹서버로 많이 사용하는 것이 APM입니다. (Apache 웹서버 + PHP + MySQL 조합)
우리가 사용하려 하는 Dashboard는 xrf_lh 실행파일이 웹페이지 하나를 만들어내어 웹서버상에 올려주는 것으로
끝나므로 PHP 스크립트나 MySQL Database 프로그램은 굳이 필요치 않은 것으로 보입니다.
Putty를 사용해 SSH 로 라즈베리파이에 연결한 후 Super User로 변경후
apt-get install apache2
으로 아파치 웹서버를 설치합니다.
정상작동하는지 테스트 하려면 웹브라우저를 사용해 http://localhost 로 접속합니다.
Dashboard 설정입니다.
아파치 웹서버 루트디랙토리인 /var/www 하부에 디렉토리를 하나 만듭니다.
mkdir /var/www/g2_ircddb
파일 2개를 복사합니다.
cp /root/dxrfd/mm_spacer.gif /var/www/g2_ircddb
cp /root/dxrfd/mm_training.css /var/www/g2_ircddb
이제 매 2분마다 xrf_lh 실행파일이 구동하여 dashboard 화면을 만들어내어 웹서버로 넘겨주는 작업을 자동으로 수행하기 위하여
명령어를 crontab 테이블에 등록합니다. Crontab 은 반복적으로 수행해야 할 명령을 설정하는 서비스입니다.
Cron tab 테이블 편집은 crontab -e 명령을 사용합니다.
가장 아래 줄에 다음과 같이 입력합니다.
*/2 * * * * /root/dxrfd/xrf_lh HL5BPL XRF070 "Korean D-Star User Group" 127.0.0.1 > /var/www/XRF070_status.html 2> /dev/null
리부팅후 정상작동하는지 확인해 보면
이러한 화면이 표시됩니다.
Dashboard 도 여러 버전이 있습니다. xrf_lh 소스를 컴파일하여 다른 모양으로 변경도 가능합니다. Yahoo Group에 올려져있습니다.
여기까지가 XRF 리플렉터 서버 프로그램을 라즈베리파이에 설정하는 방법에 대한 설명입니다.
다음에는 서버를 작동하여 인터네상에서 서비스하기 위한 공유기 설정에 대한 방법 설명입니다.
인터넷 연결을 전용선을 사용한 고정 IP 주소를 사용한다면 이러한 절차가 필요없지만, 가정에서 유동 IP 인터넷 회선을 받아
공유기를 사용하는 환경에서는 추가 설정이 필요합니다.
이 설명에는 국내에서 많이 사용하고, 제가 사용하는 iptime 유무선 공유기를 기준으로 설명합니다.
먼저 DDNS 설정입니다.
DDNS 는 dynamic DNS의 약자입니다. DNS 는 Domain Name Server 또는 Service 의 약자로 도메인 명을 IP 주소로 변환해서
연결할 수 있도록 해주는 서비스입니다.
DDNS는 유동 IP를 사용항 경우 IP 주소가 변경되어도 도메인명으로 찾을 수 있게 해주는 서비스입니다.
iptime 공유기에는 이 DDNS 무료 서버 기능이 있어서 쉽게 설정이 가능합니다.
웹브라우저에서 192.168.0.1로 연결하면 공유기 관리 화면으로 연결되는데 다음과 같이 DDNS 를 설정합니다.
호스트이름에 사용하고자 하는 호스트명 과 iptime.org (예: xrf070.iptime.org) 를 지정하고, 사용자 ID에 자신의 이메일 주소,
암호를 설정한 후 추가 버튼을 누르면 잠시 후 접속 상태가 "정상 등록" 으로 바뀌면 설정이 완료된 것입니다.
이제 인터넷 IP 주소가 바뀌어도 등록된 도메인이름만 치면 항상 접속가능한 상태로 됩니다.
다음은 포트포워딩 설정입니다.
공유기 내부 Intranet 속에 위치한 컴퓨터에 서버 프로그램이 구동되고 있다면, 외부에서 서버로의 접속요구가 있을때 공유기에서
접속이 차단되는 효과가 생기는데, 이 때 공유기에 포트 포워딩을 설정하면 접속 요청 종류에 따라 내부 컴퓨터중 해당 서비스를
하는 PC로 접속을 이어줄 수 있습니다.
내부 PC 중 dxrfd 서버로 사용하는 라스베리파이는 192.168.0.8 로 내부 IP를 설정했으며,
UDP 30001 포트는 D-Star 리피터가 dxrfd 리플렉터로 연결해 오는 포트이며,
UDP 20001 은 Dongle 등 일반 사용자가 연결해 오는 포트이고,
TCP 80 또는 8080 포트는 Dashboard를 보기위해 라즈베리파이의 웹서버로 연결해 들어오는 포트입니다.
이러한 외부 연결 요청이 들어오면 공유기는 192.168.0.8 의 라즈베리파이 해당 포트로 연결을 시켜줍니다.
여기까지가 XRF 리플레터 서버 설정방법 설명입니다.
내부적으로 프로그램이 작동하고 있다는 것은 확인했지만, 진해 숙소에서는 공유기가 이중으로 걸려있는 상태로
초단 공유기는 관리자가 따로 있어서 제가 임의로 수정할 수 없는 상태여서 Real 인터넷 테스트가 불가능했습니다.
울산으로 공유기 등을 가지고 올라가서 연결을 해 놓을 예정이므로 가능하신 분들은 XRF070A~E 접속테스트를
부탁드립니다.
제가 사용하던 ID-51A가 갑자기 고장나서 울산에서는 당분간 D-Star 운용이 어렵게 되었습니다.
소스파일 첨부해 놓습니다.
dxrfd_311 (D-star Radio Group Florence).zip
|
첫댓글 아 드디어 XRF 리플렉터 구축에 거의 성공하신듯 하군요 . 정말 대단하십니다. 저는 올려 놓으신 글을 읽어보아도 잘 이해가 안되는데 아무튼 집에 가는 대로 한 번 TEST해 보도록 하겠습니다. 일단 Reflextor로 등록이 되었다면 WinDV 프로그램에서 리스트가 뜰것 같고 Xreflector.net 에서도 확인이 가능한 것인지 모르겠네요 .
아직 조금 기다려야 할 것 같습니다.
다시 검색해 보니 이태리에 XRF070으로 설정해 놓은 dashboard 가 보이던데.... 070을 쓸 수 있는지도 다시 검토해 봐야겠구요.
그리고 제대로 작동을 하려면 아무래도 D-star network 상에 등록을 해야 할 것 같은데, 이 부분을 잘 몰라서 yahoo group에 질문을 올려 놓았습니다. 곧 파악이 되겠지요....
수고 많으십니다
모니터 구해 놓았습니다
핸디랑 전달해 드리겠습니다
좋은 시간때 알려주시면 좋겠습니다
WinDV에서 Gateway를 열어 봐도 XRF70은 보이지가 않네요. 아직 등록이 안되서 그런건지도...