이번 포스팅에서는 OpenWrt가 올라간 장비에 DDNS를 설정하여 사용할 수 있는 방법을 포스팅 해보도록 하겠다. 이에 앞서 [동적DNS를 무료로 사용해보자 - FreeDNS]를 참고하여 도메인을 생성하고 유동IP를 이 도메인에 연결하는 작업을 선행하도록 한다.
패키지 업데이트 및 설치
우선 SSH로 공유기에 접속하여 패키지 추가를 위해 패키지 목록을 업데이트 하여야 한다. 아래와 같이 "opkg update" 를 입력하면 된다.
root@OpenWrt:/etc/config# opkg update Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz. Inflating http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz. Updated list of available packages in /var/opkg-lists/attitude_adjustment. root@OpenWrt:/etc/config#
그리고 ddns-scripts 패키지를 설치하기 위해 "opkg install ddns-scripts"를 입력하여 패키지를 설치한다.
root@OpenWrt:/# opkg install ddns-scripts Installing ddns-scripts (1.0.0-20) to root... Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/ddns-scripts_1.0.0-20_all.ipk. Configuring ddns-scripts. root@OpenWrt:/#
ddns-script 설정
여기를 열어 맨 아래 사진을 보자. "Direct URL"이라고 보일 것이다. 여기서 마우스 우클릭을 하여 링크주소를 보면 물음표 뒤에 알 수 없는 문자열이 보인다. 이것이 IP를 업데이트시 필요한 키이다. 이 키를 복사하여 놓는다.
이제 변경되는 IP를 도메인과 주기적으로 연결할 수 있도록 설정을 해주어야 한다. /etc/config/ddns 파일을 vi에디터로 열어 다음과 같이 수정해준다. 별다른 것은 수정할 것은 없고 service_name, domain, username, password 정도만 수정해줘도 된다.
config service "myddns" option enabled "1" option interface "wan" option service_name "freedns.afraid.org" option domain "본인이 생성한 서브도메인" option username "freedns 로그인 계정" option password "IP업데이트시 필요한 키" option ip_source "network" option ip_network "wan" option force_interval "72" option force_unit "hours" option check_interval "10" option check_unit "minutes" option retry_interval "60" option retry_unit "seconds" #option ip_source "interface" #option ip_interface "eth0.1" #option ip_source "script" #option ip_script "path to your scrip" #option ip_source "web" #option ip_url "http://www.whatismyip.com/automation/n09230945.asp" #option update_url "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
그리고 중요한 설정을 해줘야 한다. 위에서 IP업데이트시 필요한 키에 '=' 문자가 들어가 있는 경우가 있다. 이 경우 다른 문자열로 치환되어 IP갱신을 시도하는데, 키가 맞지 않아 오류가 발생한다. 이 부분에서 많이 헤맸다. 분명 세팅은 했는데 IP의 갱신이 이루어지지 않았다. 스크립트를 디버깅하며 찾아낸 부분이다. 아래와 같이 파일을 연다.
vi /usr/lib/ddns/url_escape.sed
쭉~ 보다보면 s:=:%3D:g 부분이 있는데 이를 주석처리 해준다.
#s:=:%3D:g
초기 실행 (Attitude Adjustment 12.09 의 경우)
이 과정은 Attitude Adjustment 12.09 에서 동작하는 것 같다.(사실 예전의 포스팅 후 새 버전에서 설정하느라 이 포스팅을 확인해 보니 잘 되지 않았다.) BarrierBreaker 14.07 의 경우는 서비스를 등록해 줘야 공유기 재기동 후에도 동작하는 듯 하다. Barrier Breaker 이상의 경우 아래 정의된 서비스 절차를 따른다.
ddns-scripts는 핫플러그 이벤트 또는 IP가 변경이 되면 실행된다. 그래서 처음에는 수동으로 실행해 줘야 한다. 다음과 같이 명령을 한 라인씩 수행하도록 한다.
root@OpenWrt:# sh root@OpenWrt:# . /usr/lib/ddns/dynamic_dns_functions.sh # 점으로 시작하는 것에 유의한다. 점 다음은 스페이스이다. root@OpenWrt:# start_daemon_for_all_ddns_sections "wan" root@OpenWrt:# exit
다음과 같이 보일 것이다. 본인이 수행했던 것을 캡쳐한 것이므로 참고하길 바란다.
root@OpenWrt:/# sh BusyBox v1.19.4 (2012-07-16 05:30:14 MSK) built-in shell (ash) Enter 'help' for a list of built-in commands. root@OpenWrt:/# . /usr/lib/ddns/dynamic_dns_functions.sh root@OpenWrt:/# ps | grep dns 1182 nobody 948 S /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf 1359 root 1492 S grep dns root@OpenWrt:/# start_daemon_for_all_ddns_sections "wan" root@OpenWrt:/# ps | grep dns 1182 nobody 948 S /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf 1361 root 1572 S {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 1660 root 1504 S /usr/bin/wget -O - http://freedns.afraid.org/dynamic/update.php?업데이트 키 1662 root 1492 S grep dns root@OpenWrt:/# exit root@OpenWrt:/#
그리고 ps 명령으로 확인해 보면 다음과 같이 프로세스가 떠있음을 볼 수 있다.
root@OpenWrt:/# ps | grep dns 1182 nobody 948 S /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf 1361 root 1572 S {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 1671 root 1492 S grep dns root@OpenWrt:/#
서비스 등록 (Barrier Breaker 14.07 의 경우)
OpenWrt의 Barrier Breaker 버전에서는 위 초기 실행 절차를 수행하여도 공유기 재기동시 프로세스가 정상 동작하지 않았다. 그래서 검색을 좀 해보니 서비스로 등록되어야 하는 듯 했다. 공유기 재기동 후 {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 프로세스가 없다면 아래와 같이 서비스로 등록해본다.
root@OpenWrt:/# /etc/init.d/ddns enable root@OpenWrt:/# /etc/init.d/ddns start
이와 같이 하고 재기동 후 해당 프로세스가 기동되는지 확인한다.
동작 테스트
위 설정대로 하여 제대로 변경된 IP가 갱신되었는지 확인해 보기 위해서 다음과 같이 입력하여 오류가 없는지 확인한다.
/usr/lib/ddns/dynamic_dns_updater.sh myddns
위와 같이 하여 아래와 같이 결과가 나오면 정상인 것이다.
Update Output: Updated 1 host(s) 사용자가 생성한 도메인 to 공유기가 받은 공인IP in 1.154 seconds
결론
다음 두 사항을 다시한번 확인해 본다.
- 동작 테스트의 이상여부
- ps 명령어로 "/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0" 프로세스 확인
위 두 가지 조건이 만족되면 10분 간격으로 IP가 변경되었는지 확인하여 변동사항이 있으면 도메인에 IP를 업데이트 해준다. 그러면 도메인으로 언제든 공유기에 접근이 가능한 준비가 된다.
2015.01.01 Barrier Breaker 에서 ddns 설정시 이전 버전과는 약간 다른 점 수정
'컴퓨터 > OpenWrt' 카테고리의 다른 글
버팔로 WZR-HP-G450H에서 OpenWrt 설치 후 LED 켜기 (0) | 2012.07.06 |
---|---|
OpenWrt에 Samba(삼바) 서버 설치 (8) | 2012.07.05 |
OpenWrt 펌웨어 업그레이드하기 (6) | 2012.07.04 |
OpenWrt에 DDNS 설정하기 (11) | 2012.07.03 |
버팔로 WZR-HP-G450H에 OpenWrt 설치 (54) | 2012.07.03 |
버팔로 WZR-HP-G450H 공유기 구입하고 벽돌되다. (0) | 2012.06.29 |