asuscomm.com에서 갈아타야 하는 이유는 아래 링크들로 대신합니다. (금방 복구된건 생략)
2016년 5월 21일 https://www.clien.net/service/board/cm_nas/9177138CLIEN
2016년 7월 22일 https://www.clien.net/service/board/cm_nas/9416989CLIEN
2016년 9월 30일 https://www.clien.net/service/board/cm_nas/9700448CLIEN
2017년 4월 18일 https://www.clien.net/service/board/cm_nas/10611501CLIEN
2017년 7월 15일 https://www.clien.net/service/board/news/10976754CLIEN
원문 작성자 x검은그림자x님 글에 링크되어 있던 이미지가 보이지 않아 보강하는 김에, 스크립트 부분을 교체하고 다시 정리해봤습니다.
x검은그림자x님의 원문 : http://www.ppomppu.co.kr/zboard/view.php?id=nas&no=21815
※ Asus 공유기에는 최신버전의 Merlin 펌웨어가 설치되어 있고, duckdns.org에 가입 및 도메인 설정은 되어있다고 가정합니다.
※ 이 게시물이 작성될 시점의 Merlin 펌웨어 버전은 380.64_2였고, 이후 업데이트된 380.65에서도 작동하는걸 확인했습니다.
※ Merlin 펌웨어가 아닌 정식 펌웨어에서 duckdns등을 사용하시려면 johnair님의 강좌 게시물(링크)을 참고하시기 바랍니다.
※ 관리/설정 페이지의 언어는 [영문] 기준입니다.
1. 웹브라우저에서 공유기 관리 페이지 → Administration → System 으로 이동합니다.
2. Persistent JFFS2 partition과 SSH Daemon의 세부 항목을 아래와 같이 설정하고 적용합니다.
Format JFFS partition at next boot : No
Enable JFFS custom scripts and configs : Yes
Enable SSH : LAN only (외부에서 작업한다면 LAN+WAN)
SSH service port : 22
Allow SSH password login : Yes
3. SSH로 공유기에 접속해서, 아래 반전 표시된 부분을 입력하세요.
※ 저는 macOS라 터미널을 사용했습니다. 윈도는 putty등을 사용하면 됩니다.
USER$ ssh 공유기관리자ID@192.168.0.1
공유기관리자ID@192.168.0.1's password: 공유기관리자패스워드
ASUSWRT-Merlin RT-AC88U 380.61 -- Fri Aug 5 :01:21:01 UTC 2016
관리자@RT-AC88U-8B10:/tmp/home/root# cd /jffs/scripts/
관리자@RT-AC88U-8B10:/tmp/home/root# vi ddns-start
이 상태에서 키보드의 'I' 키를 누르면 편집모드로 들어갑니다. 아래 두개의 스크립트중 하나를 입력하거나 붙여넣으세요.
※ duckdns의 본인 계정정보 페이지에서 도메인과 토큰을 확인합니다.
---------------스크립트1---------------
#!/bin/sh
# register a subdomain at https://www.duckdns.org/ to get your token
SUBDOMAIN="도메인이름"
TOKEN="토큰"
# no modification below needed
curl --silent "https://www.duckdns.org/update?domains=$SUBDOMAIN&token=$TOKEN&ip=" >/dev/null 2>&1
if [ $? -eq 0 ];
then
/sbin/ddns_custom_updated 1
else
/sbin/ddns_custom_updated 0
fi
---------------스크립트1---------------
※ 코드 출처 : https://github.com/RMerl/asuswrt-merlin/wiki/Custom-DDNS
---------------스크립트2---------------
#!/bin/sh
SUBDOMAIN="도메인이름"
TOKEN="토큰"
QUERY="https://www.duckdns.org/update?domains=$SUBDOMAIN&token=$TOKEN&ip=$1&verbose=true"
RESULT=`curl --silent "$QUERY"`
if [ "$RESULT" = "KO" ]
then
/sbin/ddns_custom_updated 0
LOGFILE=/jffs/scripts/ERROR_`date +%Y%m%d`.log
date >> ${LOGFILE}
echo $QUERY >> ${LOGFILE}
echo $RESULT >> ${LOGFILE}
echo >> ${LOGFILE}
else
/sbin/ddns_custom_updated 1
LOGFILE=/jffs/scripts/result.log
date >> ${LOGFILE}
echo $RESULT >> ${LOGFILE}
echo >> ${LOGFILE}
fi
---------------스크립트2---------------
※ 코드 출처 : 클리앙 nas당 메두사_님
도메인등록이 실패해도 duckdns에 질의만 성공하면 성공처리 되던걸... 도메인등록을 성공해야 성공으로 처리하게 바꾸고, 실패했을때 날린 질의문을 따로 저장하고, 성공한 이력도 모아서 저장하게 해놨습니다. (시간,IP주소, 변경여부)
그리고 ip주소도 자동으로 받는게 아니라, 멀린펌에서 실행할때 던져주는 ip주소를 이용하게 했구요.
---------------------------------------------
※ 반드시 반전된 부분만 본인의 도메인과 토큰값으로 수정해서 쓰세요. 모바일 클리앙 앱 혹은 모바일 브라우저에서는 반전표시가 보이지 않을 수 있으니 되도록이면 PC의 웹브라우저로 확인해보세요.
※ 스크립트는 둘중 하나만 사용하세요.
그리고 esc 키를 눌러 편집모드를 빠져나온 뒤에 :wq 를 입력하고 엔터를 누르면 저장하고 SSH 상태로 돌아옵니다.
4. 권한을 변경합니다.
admin@RT-AC88U-8B10:/tmp/home/root# chmod a+x ddns-start
여기까지 하면 이제 터미널(혹은 putty)에서 볼일은 끝났습니다.
5. 웹브라우저의 공유기 관리페이지 → WAN → DDNS 항목으로 이동해서 아래와 같이 설정합니다.
Enable the DDNS Client : Yes
Server : Custom
Host Name : 도메인.duckdns.org
"Request error! Please try again" 같은 에러가 뜨기도 하지만, 6번에서 테스트해보고 문제 없으면 5. 항목은 생략하고 아예 설정하지 않아도 무방합니다.
6. 잠시 후에 외부망에서 "도메인.duckdns.org"으로 접속해서 연결이 정상적으로 이루어지는지 확인해봅니다.
7. 잘 작동한다면 2번으로 돌아가 Enable SSH : No로 변경하여 SSH 서비스를 닫아줍니다.
----- 추가 -----
위 방법으로 duckdns와 같은 서드파티 ddns를 세팅하더라도, 기존에 사용하던 asuscomm.com 역시 유지(접속)되는 것 같습니다. 저는 원격지에서 duckdns와 asuscomm 두 도메인 모두 연결에 성공했습니다. 일단 asuscomm설정을 먼저 해두고, 나중에 duckdns가 죽었을때의 백업으로 asuscomm을 사용하면 될 것 같습니다.
https://github.com/RMerl/asuswrt-merlin/wiki/Custom-DDNS
작성하신 글엔 사진 링크가 죽어있는데 마침 예전에 스크랩한 글이 있더라구요. 찾아보니 클량에 없기도 하고, 저도 정리하는 차원에서 올렸습니다;;
덕분에 잘 이용하고 있습니다. 감사합니다!
https://bitbucket.org/padavan/rt-n56u/
#CLiOS
멀린펌이 정펌기반이라 사용중인데, duckdns정도는 지원했으면 좋을 것 같긴 합니다.
대체할 무료 ddns 업체를 알아보니 나스당원들을 비롯해서 duckdns를 사용&추천하는 분들이 꽤 많았습니다. 처음엔 시놀로지 nas에 세팅해서 유사시 백업용으로만 사용하다가, 얼마전 duckdns에 두글자짜리 서브도메인을 득템하면서 아예 공유기에 세팅했습니다. 기존 xxxx.asuscomm.com에서 yy.duckdns.org로 세글자 줄였습니다!
관리자 화면에선 Request error! Please try again!! 계속 나오네요.
적용 눌리면 적용중..중중중....
원래 그런걸까요? ^^
아이디.duckdns.org 만 치면 접속이 안되고
아이디.duckdns.org:포트포워딩숫자 이렇게 입력해야 접속되는데 정상인건가요?
asuscomm으로 설정해서 연결되는 것 확인하고, 이후에 본문처럼 duckdns 세팅하고나면 아마도 둘다 되는 것 같기도 합니다. (우연히 된건지, 원래 그런건지 확인할 길이 없으니 보장할 순 없습니다만...)
도메인등록이 실패해도 duckdns에 질의만 성공하면 성공처리 되던걸... 도메인등록을 성공해야 성공으로 처리하게 바꾸고,
실패했을때 날린 질의문을 따로 저장하고..
성공한 이력도 모아서 저장하게 해놨습니다. (시간,IP주소, 변경여부)
그리고 ip주소도 자동으로 받는게 아니라, 멀린펌에서 실행할때 던져주는 ip주소를 이용하게 했구요
---------------
#!/bin/sh
SUBDOMAIN="도메인이름"
TOKEN="토큰"
QUERY="https://www.duckdns.org/update?domains=$SUBDOMAIN&token=$TOKEN&ip=$1&verbose=true"
RESULT=`curl --silent "$QUERY"`
if [ "$RESULT" = "KO" ]
then
/sbin/ddns_custom_updated 0
LOGFILE=/jffs/scripts/ERROR_`date +%Y%m%d`.log
date >> ${LOGFILE}
echo $QUERY >> ${LOGFILE}
echo $RESULT >> ${LOGFILE}
echo >> ${LOGFILE}
else
/sbin/ddns_custom_updated 1
LOGFILE=/jffs/scripts/result.log
date >> ${LOGFILE}
echo $RESULT >> ${LOGFILE}
echo >> ${LOGFILE}
fi
자동으로 crontab 작업으로 등록을 시켜주네요.
굳이 custom ddns 로 설정하지 않아도 잘 동작합니다. :)
https://gist.github.com/johnpark82/35eaeca5661bbc521dc0521b857cae88