이번 포스팅에서는 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



결론

다음 두 사항을 다시한번 확인해 본다.

  1. 동작 테스트의 이상여부
  2. ps 명령어로 "/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0" 프로세스 확인

위 두 가지 조건이 만족되면 10분 간격으로 IP가 변경되었는지 확인하여 변동사항이 있으면 도메인에 IP를 업데이트 해준다. 그러면 도메인으로 언제든 공유기에 접근이 가능한 준비가 된다.



참고사이트
  1. http://wiki.openwrt.org/doc/howto/ddns.client




2015.01.01 Barrier Breaker 에서 ddns 설정시 이전 버전과는 약간 다른 점 수정


저작자 표시 비영리 변경 금지
신고
Posted by Life 스토리
TAG ,