ASUS 공유기에서 개인도메인 CloudFlare DDNS 설정하기 (멀린롬 사용) [2016/07/24 전면개정]

[2016/07/24 최근개정] 최근 CloudFlare API 개정으로 인해 전체적으로 내용이 바뀌었습니다. 그 내용을 수정해 두었으니 참고해 주세요.

 

▶ 들어가며

ASUS 공유기에는 기본적으로 ASUS DDNS(*.asuscomm.com)를 통해 외부에서 도메인을 활용해 유동 IP로 연결되어 있는 공유기에 접속이 가능합니다. 하지만 집에서 웹서버를 운영하는 경우 또는 기타 사유로 인해 CloudFlare에 DDNS를 설정해야 하는 분들이 있으실 겁니다.

저의 경우에는 집에 웹서버를 만들다 보니 도메인을 CloudFlare에 연결시켜 CDN 서비스를 이용하려고 했습니다만, CloudFlare에서 A 타입 레코드(도메인의 원본 주소, 예를 들면 example.com, sample.org 같은 도메인)로 실시간으로 나의 ASUS 공유기 IP를 연동시켜주어야 할 필요가 있었습니다.

CloudFlare의 A 타입 레코드에는 반드시 IPv4(혹은 장차 v6가 될 수도 있지만) 주소를 입력해줘야 하는 만큼, CloudFlare API를 활용해 내 ASUS 공유기가 실시간으로 바뀌는 유동 IP를 CloudFlare로 전송할 수 있도록 하는 방법을 소개하고자 합니다.

 

 

▶ 준비물

– Merlin-Firmware(이하 멀린롬)을 지원하는 ASUS 공유기여야 합니다. 자세한 사항은 멀린롬 홈페이지를 참고하세요. (아래 링크)

– SSH 접속을 위한 클라이언트 프로그램, 본 팁에서는 PuTTY를 활용할 예정

– 간단한 Linux 관련 지식 (저도 없습니다만 (…), 있으면 좋기야 하겠지요. ^^;)

 

 

▶ 멀린롬 다운받아 설치하기

먼저, ASUS 공유기를 좀 더 자유롭게 만들어주기 위해, ASUS 공유기에 멀린롬을 설치해 주도록 합시다. 멀린롬 최신 버전은 아래 사이트에서 다운로드가 가능합니다.

Merlin Firmware 홈페이지 (클릭)

 

아래 홈페이지에서 Download를 눌러, 메인 다운로드 사이트나 미러 다운로드 사이트로 들어갑니다.

[Download를 누르고 다운로드 사이트 서버 중 하나를 선택합니다.]

[Download를 누르고 다운로드 사이트 서버 중 하나를 선택합니다.]

본인 ASUS 공유기 제품명을 선택하여, 최신 버전의 멀린롬을 다운로드 합니다.
(※ 이 때, MODIFIED 버튼을 눌러 최신으로 업로드 된 멀린롬을 다운로드 합니다.)

2_merlin_down1

[ 최신 버전의 펌웨어를 꼭 다운받도록 합니다. ]

[ 최신 버전의 펌웨어를 꼭 다운받도록 합니다. ]

다운로드 받은 멀린롬을 평소 공유기 업데이트 하는 것과 같이 넣어주고 업로드를 눌러 멀린롬 설치를 완료합니다.

[압축을 풀어 여러분들이 원하는 곳에 파일을 둡니다.]

[압축을 풀어 여러분들이 원하는 곳에 파일을 둡니다.]

[이어서 통상 펌웨어 업그레이드를 하는 것처럼 진행하시면 됩니다.]

[이어서 통상 펌웨어 업그레이드를 하는 것처럼 진행하시면 됩니다.]

(※ ASUS 공유기 펌웨어 변경 중 공유기 이상이 생긴 경우, 제품 지원을 받지 못할 수 있다는 점을 명심하시기 바랍니다.)

 

 

▶ ASUS 공유기 SSH 및 JFFS2 파티션 설정

멀린롬 설치가 완료된 ASUS 공유기에서 이제 SSH 접속을 가능하게 하고, JFFS 파티션을 활용하고자 합니다.

멀린롬 설치가 완료된 ASUS 공유기 메인 페이지에서 관리 – 시스템으로 들어가 아래와 같이 설정을 맞추어 줍니다.

[ JFFS2, SSH 부분을 다음과 같이 설정해 줍니다. ]

[ JFFS2, SSH 부분을 다음과 같이 설정해 줍니다. ]

그리고 PuTTY로 공유기에 직접 SSH 접속이 가능한지 확인하고, JFFS 파티션이 있는지 확인해 봅시다.

[ SSH ID랑 비밀번호는 여러분들 공유기 관리자 ID와 비밀번호와 같습니다. PuTTY 사용법은 인터넷에 찾아보면 많이 나옵니다. ]

[ SSH ID랑 비밀번호는 여러분들 공유기 관리자 ID와 비밀번호와 같습니다. PuTTY 사용법은 인터넷에 찾아보면 많이 나옵니다. ]

 

▶ CloudFlare 사전 준비

먼저, CloudFlare에 네임서버를 연결하고 A Type 도메인이 제대로 연결되었는지 확인합니다.

[ A 레코드는 꼭 설정되어있어야 합니다. CNAME도 이와 같이 설정되어 있는 것이 정상입니다. ]

[ A 레코드는 꼭 설정되어있어야 합니다. CNAME도 이와 같이 설정되어 있는 것이 정상입니다. ]

CloudFlare에서 여러분들이 꼭 알아야 할 것은 5가지인데, 쉽게 알 수 있는 것이 3가지, 그리고 알아내기 조금 어려운 것이 2가지입니다.

 

 1) CloudFlare에 등록한 이메일 (=CloudFlare 아이디)

 여러분들이 등록한 CloudFlare 이메일입니다.

 

 2) CloudFlare API Key (사실상 비밀번호 대용으로 쓰이기 때문에 외부에 유출되지 않게 소중하게 간직하셔야 합니다.)

CloudFlare API Key는 CloudFlare 홈페이지 오른쪽 상단의 여러분들 등록된 이름을 누르고, My Settings에서 찾으실 수 있습니다.

[ My Account를 눌러 나온 곳에서, View API Key를 눌러 API Key를 확인합니다. ]

[ My Account를 눌러 나온 곳에서, View API Key를 눌러 API Key를 확인합니다. ]

 

3) CloudFlare 도메인 존

CloudFlare의 API 에서 ‘존(ZONE)’의 의미를 잘 몰랐는데, 사실상 개별 도메인이라고 생각하시면 됩니다.

클라우드플레어 API 개정으로 이제 ZONE ID를 찾으실 필요가 없게 되었습니다. 클라우드플레어 공식 홈페이지에서 여러분들 사이트를 대표하는 이름이 바로 존 ID가 되었습니다.

 

[ ZONE 이름은 클라우드플레어 페이지에서 찾으실 수 있습니다. ]

[ ZONE 이름은 클라우드플레어 페이지에서 찾으실 수 있습니다. ]

이 ZONE 이름을 잘 적어두시면 됩니다.

 

4) 도메인 존의 A 레코드 고유 ID (= 즉, 등록된 도메인의 A 레코드 고유 ID) & A 레코드 이름

ZONE 이름을 알아내셨으면, 그 존에 소속된 도메인의 A 레코드 값을 알아내시면 됩니다. 그냥 ID가 ‘A’ 거나 하면 좋았겠지만, 여러분들 도메인의 A 레코드는 고유의 값(ID)을 가지고 있습니다. 이제 그 고유값을 알아내기 위해 PuTTY에 다음과 같은 명령어를 입력해 줍시다.

curl https://www.cloudflare.com/api_json.html -d 'a=rec_load_all' \
 -d 'tkn={YOUR_API_KEY}' \
 -d 'email={YOUR_EMAIL_ADDRESS}' \
 -d 'z={YOUR_DOMAIN_NAME}'

 

예를 들어, CloudFlare 아이디 hello@mail.net 에 등록된 example.com 도메인(ZONE 이름은 같다고 생각하고)의, 레코드 ID를 알기 위해서,
(CloudFlare API 키 값은 똑같이 a1b2c3d4e5f6g7h8i9j10k11l12m13n14o15p라고 가정하면)

curl https://www.cloudflare.com/api_json.html -d 'a=rec_load_all' \
 -d 'tkn=a1b2c3d4e5f6g7h8i9j10k11l12m13n14o15p' \
 -d 'email=hello@mail.net' \
 -d 'z=example.com'

라고 입력하시면 됩니다.

 

입력하면 다음과 같은 결과값을 만나실 수 있는데, 여기에서 그림 아래 빨간색으로 표시된 부분이 여러분들 도메인의 A레코드 고유 ID입니다. 잘 적어두시면 됩니다.

[ 이전보다 레코드 ID를 알아내는게 쉽게 되었습니다. ]

[ 이전보다 레코드 ID를 알아내는게 쉽게 되었습니다. ]

이 고유값을 @@@@@@@@@@@@@@@@ 라고 가정해 보고 아래로 넘어가시면 됩니다.

또한 이 A 레코드의 name 부분도 같이 기억해 두셔야 할텐데, 보통은 여러분들 WWW를 뺀 도메인일 겁니다(예: example.com).

 

 

▶ CloudFlare DDNS 스크립트 완성하기

이제 여러분들이 ASUS 공유기가 CloudFlare에 동적 IP를 보내줄 수 있는 스크립트를 만들도록 해 봅시다.

아래와 같은 스크립트를 공유기 SSH를 통해 /jffs/scripts/ 폴더에 ddns-start 라는 스크립트를 아래와 같이 만들어 주면 됩니다. [2016/07/24 내용수정]

#!/bin/sh

NEW_IP='wget http://ipinfo.io/ip -qO -'

curl https://www.cloudflare.com/api_json.html \
 -d 'a=rec_edit' \
 -d 'tkn={여러분들의 API 키를 여기에 입력하면 됩니다}' \
 -d 'email={여러분들의 CloudFlare ID 메일 주소를 입력하시면 됩니다}' \
 -d 'z={여러분들의 ZONE 이름을 여기에 입력하시면 됩니다}' \
 -d 'id={A 레코드의 ID를 여기에 입력하시면 됩니다}' \
 -d 'type=A' \
 -d 'name={A 레코드의 이름을 여기에 입력하시면 됩니다 (보통 WWW 없는 도메인)}' \
 -d 'ttl=1' \
 -d "content=$NEW_IP"

echo $NEW_IP > /var/tmp/current_ip.txt

if [ $? -eq 0 ]; then
 /sbin/ddns_custom_updated 1
else
 /sbin/ddns_custom_updated 0
fi

 

아까 위에서 알아본 정보들을 예시로 하여 토대로 만들면 예시는 다음과 같습니다. [2016/07/24 내용수정]

#!/bin/sh

NEW_IP='wget http://ipinfo.io/ip -qO -'

curl https://www.cloudflare.com/api_json.html \
 -d 'a=rec_edit' \
 -d 'tkn=a1b2c3d4e5f6g7h8i9j10k11l12m13n14o15p' \
 -d 'email=hello@mail.net' \
 -d 'z=example.com' \
 -d 'id=@@@@@@@@@@@@@@@@' \
 -d 'type=A' \
 -d 'name=example.com' \
 -d 'ttl=1' \
 -d "content=$NEW_IP"

echo $NEW_IP > /var/tmp/current_ip.txt

if [ $? -eq 0 ]; then
 /sbin/ddns_custom_updated 1
else
 /sbin/ddns_custom_updated 0
fi

 

※ 리눅스를 잘 하지 못하시는 분들은 SSH 창에 vi /jffs/scripts/ddns-start 라고 입력하시고 난 뒤에,  공백 창이 나오면 i 버튼을 한번 눌러주시고, 위에 스크립트에서 여러분들 정보를 넣어 복사하여 PuTTY 창에서 오른쪽 버튼을 눌러 붙여넣으신 후, ESC 키를 한번 누르신 뒤 :wq 라고 치시고 엔터를 누르시면 됩니다.

 

이후, 권한 및 소유자 설정을 다시 한번 확인해 주셔야 하기 떄문에, 아래와 같은 명령어를 실행해 주시기 바랍니다.

(#은 콘솔을 나타내기 위한 표시로, 입력하진 않습니다.)
#  chmod 755 /jffs/scripts/ddns-start
#  chown -R admin:root /jffs/scripts/ddns-start

 

 

 

▶ 적용하기 및 정리

이제 대망의 장정이 끝났습니다. 다시 ASUS 멀린롬 설정창으로 돌아와 [WAN > DDNS]로 들어가서 아래와 같이 설정합니다.

[ 위와 같이 설정해주면 등록 성공! 이라고 뜨면서 성공합니다. ]

[ 위와 같이 설정해주면 등록 성공! 이라고 뜨면서 성공합니다. ]

적용을 누르시면, 여러분들의 IP가 CloudFlare로 들어가 있으신 것을 확인하실수 있습니다.

[ 이와 같이 A 레코드에 여러분들의 WAN IP가 들어가 있다면 성공한 것입니다. ]

[ 이와 같이 A 레코드에 여러분들의 WAN IP가 들어가 있다면 성공한 것입니다. ]

축하합니다. 모두 끝나셨습니다. 이제 여러분들은 앞으로 여러분들의 도메인으로 CloudFlare DDNS 서비스를 받아보실 수 있게 되었습니다. :))

이상으로 ASUS 공유기에서 CloudFlare DDNS 를 적용할 수 있는 방법 소개를 마치겠습니다. 감사합니다.

 

※ 스크립트 등은 출처가 Github RMerl님의 asuswrt-merlin에서 퍼왔습니다. 원본 링크를 남깁니다.
https://github.com/RMerl/asuswrt-merlin/wiki/Custom-DDNS#introduction

gomgom

무엇을 하든 곰곰히 생각하는 곰곰입니다.

You may also like...

25 Responses

  1. okdk 댓글:

    저한테는 정말 최고의 정보였습니다.
    정말 감사합니다.
    따라해보겠습니다.

    • 곰곰 댓글:

      댓글 감사드립니다. 근데 생각해보니 최근 클라우드플레어 API 개정으로 인해 DDNS 스크립트의 변경이 있었습니다. 글을 갱신할 생각을 못했는데, 선생님 댓글을 보고 수정하게 됩니다. 글을 다시 한번 잘 읽어봐 주시면 고맙겠습니다. 감사합니다. ^^

  2. 란스 댓글:

    이런 정보 너무너무 감사합니다. 가이드 대로 잘 세팅 하였습니다.
    헌데 제 경우에는,
    NEW_IP=’wget http://ipinfo.io/ip -qO -‘
    이부분이 NEW_IP 에 ip가 할당이 되지않고.. 그냥 스트링이 들어가 버리네요.
    공유기에서 해당 스크립트 실행 시, 파라미터로 ip 를 넘기는 것 같습니다.
    NEW_IP=${1}
    로 수정하니 잘 작동 됩니다~

    • 곰곰 댓글:

      아하… 스트링으로 들어갈 수도 있겠네요! 댓글 정말 감사드립니다.
      확인 후 문제가 있으면 수정하도록 하겠습니다. ^^ 정보 감사합니다.

  3. ㅁㅇㄹ 댓글:

    업데이트 해주셔서 정말 감사합니다.
    정말 유용하고 유일무이한 정보입니다.

  4. buglab 댓글:

    좋은 정보 감사합니다.

    admin@RT-AC56R-0F70:/jffs/scripts# . ddns-start
    실행시 다음과 같은 오류가 나타납니다.
    {“request”:{“act”:”rec_edit”},”result”:”error”,”msg”:”You entered ‘wget http:\/\/ipinfo.io\/ip -qO -‘ which is not a valid IP address.”,”err_code”:”content-id값이 출력”}

    -d “content=$NEW_IP” 이부분에 $NEW_IP대신 아이피를 직접 넣어주면 오류는 없어지는거 같은데 어떻게 해야될지 모르겠네요.

    • 곰곰 댓글:

      아마 쉘에서 ./ddns-start를 하시면 그렇게 에러가 나시는게 맞으실겁니다.
      혹시 공유기 페이지(보통 192.168.1.1)에서 WAN – DDNS를 들어가셨을때 ‘등록 성공!’ 이라는 메시지가 나타나시나요?
      나타나신다면 정상 적용되고 있으실겁니다. ^^

      혹시 되신다면 그 사유로 예상되는 것은, asus 공유기 jffs 스크립트로 사용되는 부분에서는 저게 인식이 되는데 보통 bash에서는 작동이 안하는게 아닐까 싶네요.
      만약 공유기 페이지에서도 문제가 발생하시면 꼭 알려주시기 바랍니다. 댓글 감사드립니다. ^^

  5. 오케이맨 댓글:

    안녕하세요? 좋은 자료 감사합니다. 권한및 소유자 설정에서 명령어를 입력하면 no such file or diretory 가 뜹니다. 그리고 다시 vi /jffs/scripts/ddns-start 를 입력하면 이전에 입력했던 스크립트가 나옵니다. 어떻게 해야 할까요? 그리고 마지막 설정에서는 처리중으로만 나오고 등록성공 메시지가 뜨지 않습니다. 도움 주시면 정말 감사하겠습니다.

    • 곰곰 댓글:

      안녕하세요. 아, 혹시 제가 붉은 부분으로 해 둔 곳을 보시고 적용하신것일까요? ^^ 그런 경우에는 한번 chmod 755 /jffs/scripts/ddns-start 과 chown -R admin:root /jffs/scripts/ddns-start 순서대로 퍼미션 조정을 해보시면 될 것 같기도 합니다. ^^ 한 번 시도해주시고 댓글 다시 달아주시기 바랍니다. 감사합니다 ^^

  6. 감사감사 댓글:

    자세한 설명 너무 감사합니다.
    혹시 두개의 사이트를 연동시키는 방법 있을까요?

    • 곰곰 댓글:

      감사감사님, 댓글 감사드립니다. ^^ 혹시 두개의 사이트를 연동시키는게 어떤 것인지 설명을 부탁드려도 될까요? ^^

      • 감사감사 댓글:

        새해 복 많이 받으세요
        인사도 제대로 못드렸네요 ^^
        윈도우가 깔린 minipc를 서버로 사용하고 있고오토셋을 이용해서 사이트 하나를 운영하고 있습니다. 곰곰님 정보를 통해 공유기 ddns 설정을 마쳤습니다.
        오토셋은 100개까지 사이트를 추가할 수 있는데요 저는 추가로 하나의 사이트를 더 만들고 싶습니다. 공유기 ddns 설정에서 클라우드와의 연동을 추가로 더 할 수 있을까요?
        항상 감사합니다. 곰곰님

        • 곰곰 댓글:

          저번에 vi 스크립트가 작동하지 않으셨던 분이셨군요. 몰라뵈서 죄송합니다. ^^
          오토셋이라 하면 아마도 윈도우 APM 설치 패키지겠지요? 제가 오토셋을 사용해 보지 않아 일단 기본적인 경우에 한해 설명하겠습니다.

          현재 상태가 80번 또는 443번 포트(HTTP/HTTPS 웹 서버)로 아마 웹 서버를 운영중이신 것이라면, sample.net(공유기 IP를 가르키고 있는 도메인)의 80 또는 443 포트로 접속을 하면 윈도우 minipc로 접속이 되고 계실겁니다.
          이렇게 하기 위해서 공유기로 접속(외부IP -> 192.168.1.1)이 이루어지는 80번 포트를, 미니PC(192.168.1.x)의 80번 포트로 포트포워딩을 해 두셨으리라 믿고 답변드리겠습니다.

          현재 별개의 사이트를 운영하기 위해서는 두 가지 방법이 있습니다.

          1. 별개의 사이트를 본 도메인의 다른 포트번호로 접속할 수 있게 하는 방법
          이런 경우에는 별다른 설정은 필요하지 않겠지요. 80번 포트가 아닌 다른 포트로 접속(예를 들어 8000)하면 다른 사이트의 웹 페이지가 뜨도록 아파치 내에서 서정을 해 주시면 되겠습니다. 이런 경우에는 접속하기 위해 sample.net:8000 이런 방식으로 접속을 진행하셔야 할 것입니다.

          2. 1번의 경우를 새로운 도메인/서브도메인에 연결시키는 방법
          개인적으로 이용하시는 경우에는 뒤에 포트번호를 써 주시며 이용하셔도 별다른 문제는 없겠습니다만, 실제 운영하는 사이트에서는 조금 부담이 있겠지요. 그러므로 다른 포트로 연결해 주는 것이 아니라 가상 호스트(VirtualHost)를 통해서 연결되는 방법을 이용할 수 있겠습니다.
          아파치 httpd-vhosts.conf 설정 파일을 수정하셔서 운영하시면 될텐데, 이에 대해서는 댓글 내에서 설명하기 어려우므로 잘 설명된 것 처럼 보이는 사이트를 하나 추천하도록 하겠습니다.
          http://joont.tistory.com/46 (아파치 VIRTUALHOST 설정)
          이 사이트의 설명처럼 sample.net 외에 sample2.net 도메인을 가지고 계신다면 그 도메인을 이용하시면 될테고, 추가 도메인을 구입하시기 어렵다면 기존에 가지고 계시던 sample.net 의 서브도메인으로 cloud.sample.net 이런 식으로 임의로 만드셔서 설정을 진행하셔도 좋을 것 같습니다. ^^
          혹시 이 사이트에서 원하는 결과를 찾지 못하셨다면, 구글에서 ‘아파치 2개 도메인’, ‘아파치 가상호스트’ 또는 ‘오토셋 가상호스트’ 따위의 검색어로 검색하시면 원하시는 결과를 얻으실 수 있을 것 같습니다. ^^

          도움이 되셨을런지 모르겠네요. 행복한 하루 되세요. ^^

          • 감사감사 댓글:

            장문의 댓글 너무나 감사합니다.
            저번에 vi 스크립트는 제가 폴더를 이동해서 해보니 잘 되더군요 답글을 드렸어야 했는데 깜빡 했습니다. 죄송합니다. ㅠㅠ

            사이트 추가는 오토셋의 가상호스트 기능으로 해당 사이트 폴더와 도메인을 연결해주고 dns서비스 업체와 연결을 설정해주면 되는 것 같습니다.

            그런데 저는 곰곰님 덕분에 dns 서비스 업체와 연결할 필요없이 공유기 ddns 설정을 통해서 도메인을 연결하고 클라우드 플레어와 연결을 시켰는데요

            혹시 추가로 만드는 사이트도 공유기에서 ddns 설정을 하고 클라우드 플레어로 연결을 할 수 있을까 하는 질문입니다.

            제가 자세히 설명못드린점 대단히 죄송하고 또 열정적으로 도움을 주시는 곰곰님께 다시한번 감동하며 글을 마칩니다.

            항상 건강하시고 좋은 일만 있으시기를 진심으로 기원드립니다.

          • 곰곰 댓글:

            아닙니다. 댓글 남겨주시는 것만으로도 감사드립니다. ^^

            공유기 DDNS를 CloudFlare와 연결하였으므로, 현재 특정 도메인(예: sample.net)은 클라우드플레어에서 DNS 서버 처리를 하게 됩니다.
            즉, sample.net —–> CloudFlare DNS에서 A레코드 탐색 —–> 클라우드플레어에 등록된 IP(즉, 공유기 IP) 과정을 거치게 되지요.

            따라서 추가로 만드시는 사이트가 다른 도메인(예: newsample.net)을 가지게 될 경우에는, CloudFlare에 이 도메인을 연결해 준 후, 도메인 A레코드에도 공유기 IP가 제공될 수 있게 해야겠지요. 이런 경우에는, 2가지 도메인의 CloudFlare에 공유기 DDNS로 각각 IP를 업데이트 해줘야 할 것입니다.
            저도 시도는 안 해봤지만 ddns-start 스크립트에서 가운데 curl로 시작하는 부분 ~ “content=$NEW_IP” 부분 까지 한번 더 복사하셔서 기존 도메인(sample.net) 바로 아래에 다른 도메인(newsample.net)의 정보를 넣어주면 될 것 같습니다.
            그런 이후 가상호스트 기능에서 새로 추가한 도메인(newsample.net)을 해당 사이트 폴더와 연결해 주시면 됩니다.

            혹시 다른 도메인이 아닌 서브도메인으로 연결이 필요한 경우에는, 위의 과정은 불필요하고 기존 도메인의 CloudFlare DNS에서 CNAME 레코드를 추가해 준 뒤 서브도메인을 추가하시고 난 후, 오토셋 가상호스트에서 새로 추가한 서브도메인 (예: test.sample.net) 을 입력해 주시면 되겠습니다. ^^

            제 설명이 너무 난해한 것 같아서 죄송합니다. 잘 이해가 되셨으면 좋겠습니다. ^^

  7. 감사감사 댓글:

    아 정말 감사합니다.
    제가 이번 주 안에 해보고 결과를 말씀해드리겠습니다.
    행복한 주말 되세요^^

  8. 감사감사 댓글:

    말씀하신 것처럼 스크립트를 다시 작성했습니다. 그리고 클라우드 플레어 a레코드 ip 주소를 111.111.111.111 이렇게 바꿔놓고 공유기 ddns 설정을 하고 인터벌을 365로 설정했습니다.
    아이피주소가 바뀌길 기다리고 있는데 바뀌질 않고 있네요 ㅠㅠ 제가 뭐를 잘못한 걸까요?

    제가 작성한 스크립트는

    #!/bin/sh

    NEW_IP=’wget http://ipinfo.io/ip -qO -‘

    curl https://www.cloudflare.com/api_json.html \
    -d ‘a=rec_edit’ \
    -d ‘tkn=e253cdxxxxxxxxc8df38bddea53c’ \
    -d ’email=b@naver.com’ \
    -d ‘z=a.com’ \
    -d ‘id=727xxxxxx’ \
    -d ‘type=A’ \
    -d ‘name=a.com’ \
    -d ‘ttl=1’ \
    -d “content=$NEW_IP”

    curl https://www.cloudflare.com/api_json.html \
    -d ‘a=rec_edit’ \
    -d ‘tkn=e253cd9e2xxxxxxxxa04c8df38bddea53c’ \
    -d ’email=b@naver.com’ \
    -d ‘z=b.com’ \
    -d ‘id=727xxxxxx’ \
    -d ‘type=A’ \
    -d ‘name=b.com’ \
    -d ‘ttl=1’ \
    -d “content=$NEW_IP”

    curl https://www.cloudflare.com/api_json.html \
    -d ‘a=rec_edit’ \
    -d ‘tkn=e253cd9e2c35xxxxxxxxx8df38bddea53c’ \
    -d ’email=c@naver.com’ \
    -d ‘z=c.com’ \
    -d ‘id=72xxxxxxx’ \
    -d ‘type=A’ \
    -d ‘name=c.com’ \
    -d ‘ttl=1’ \
    -d “content=$NEW_IP”

    echo $NEW_IP > /var/tmp/current_ip.txt

    if [ $? -eq 0 ]; then
    /sbin/ddns_custom_updated 1
    else
    /sbin/ddns_custom_updated 0
    fi

    후에 권한설정도 하고 공유기 ddns 설정에서는 a.com 도메인으로 설정하고 등록성공 메시지도 나왔습니다.

    자꾸 귀찮게 해드려서 죄송해요 ㅠㅠ 오늘도 좋은 하루 되세요

    • 곰곰 댓글:

      작성하신 쉘 스크립트가 틀린 내용(토큰값, 이메일, 존 이름, 존 ID, A레코드 이름 등)이 없는 부분이라면 이상 없이 작동해야 될 것 같은데 이상하네요.
      curl을 통해 3번의 전송이 이루어졌다면 3개의 도메인이 전부 정상적으로 IP가 변화해야 정상인 것 같습니다.

      딱 한 가지 시도해볼만한 것이라면 curl과 curl 사이(첫 번째 도메인 명령어와 두 번째 도메인 명령어 사이)마다 sleep 2 이라고 해서 2초 후 다음 명령어가 실행되게 한번 해보시겠습니까? 클라우드플레어 측에서 동시에 전송되는 전송이라 막고 있는 것은 아닌가 싶어 한 번 이거라도 시도해 봐야 할 것 같습니다.

      제 지식 상으로는 여기까지밖에 도움을 못 드릴것 같군요…ㅠㅠ
      혹시 제가 모르는 부분이 있는 것인지 한번 찾아보아야 할 것 같습니다. 혹시 알게 되는 것이 있다면 댓글 남겨드리겠습니다.
      도움이 되지 못해 죄송합니다. ㅠㅠ

      • 감사감사 댓글:

        정말 큰 도움이 되었습니다.
        정말 감사합니다.
        저도 혹시 문제를 해결하게 되면 꼭 남기겠습니다.

  9. JK 댓글:

    이게 아수스 공유기만 되는거죠? 다른 공유기 같은경우 위처럼 shell환경이나 이런걸 제공하지 못해서 못하는 거 맞죠? 공유기라면 모두 적용가능한 genernal 한 method 인지 알고 싶어서요

    • 곰곰 댓글:

      멀림펌이 적용된 ASUS 공유기만 이용 가능하다고 보시면 될 것 같습니다. 다른 공유기들은 쉘 스크립트를 적용할 수 있는 자유도를 주지 않아 적용하기 어려울 것 같습니다. 각 사 별로 혹시 custom DDNS를 만들 수 있는 경우에는, 그에 맞추셔서 적용하실 수 있을 것 같습니다. 🙂

  10. zipi 댓글:

    ASUS 멀린펌에 DDNS 서비스중 dnsomatic 라는 서비스와 연동이 가능합니다.

    이게 정말 강력한데 한국에는 소개가 안된듯 하네요.
    이걸 이용하면 ASUS공유기 -> dnsomatic -> 등록된 다른 도메인
    이렇게 업데이트가 됩니다.

    저는 이렇게 해서 dnsomatic에서 2개의 다른 ddns서버와 매핑했습니다.
    이글 보고 가보니 cloud flare와도 연동이 됩니다. api키같은걸 넣고 하죠.

    위에처럼 스크립트 없이 자동으로 연동해줍니다. 편리편리.

    • 곰곰 댓글:

      zipi님, 저도 처음 보는 서비스네요. 한번 거쳐서 설정이 되는 거라 컴퓨터를 어려워 하시는 분에게도 설정도 용이하고 좋을 것 같아 보입니다. ^^
      나중에 관련 서비스를 소개할 수 있도록 노력해 보겠습니다. 댓글 감사드립니다. ^^

감사감사에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다