질문/조언팁/리소스 공유

아래 글에 이어서 오늘 드디어 Custom DDNS을 성공했습니다.

 

우선 아수스 공유기에 멀린 펌을 올리는 것은 매우 간단했습니다.

 

그냥 공유기 펌웨어 올리듯이 멀린 펌을 선택해서 올리면

 

1456934978969.jpg

 

위와 같이 펌업그레이드가 진행됩니다.

 

그리고 DDNS 설정에 가보면~

 

1456935391000.jpg

 

위와같이 CUSTOM 항목이 생깁니다.

 

일단 CUSTOM을 생긴 것을 보고... 위에 보시면 경고가 뜨는데,

 

우선 관리->시스템에 가셔서

 

Persistent JFFS2 partition 이라는 항목이 있는데,

 

두번 쨰 Enable JFFS custom script and configs을 예로 바꿔주고요..

 

SSH 데몬 설정에 Enable SSH 을 예로 바꿔줍니다. 그럼 이제 공유기 IP주소 192.168.1.1로 SSH 접속을 하실 수 있습니다.

 

# cd /jffs/scripts 

jffs/script 폴더로 이동하시구요.. 만약 해당 폴더가 없다고 나온다면 jffs파티션이 허용이 안된겁니다.

 

이제 접속 준비는 됐고... CloudFlare DDNS 예제 코드를 봅니다.

 

#!/bin/sh

EMAIL= # Your CloudFlare E-mail address
ZONE= # The zone where your desired A record resides
RECORDID= # ID of the A record
RECORDNAME= # Name of the A record
API= # Your CloudFlare API Key
IP=${1}

curl -fs -o /dev/null -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records/$RECORDID" \
    -H "X-Auth-Email: $EMAIL" \
    -H "X-Auth-Key: $API" \
    -H "Content-Type: application/json" \
    --data '{"id":"'$RECORDID'","type":"A","name":"'$RECORDNAME'","content":"'$IP'"}'

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

 

친절하게 멀린펌에서 위와 같은 예제 코드를 제공하고 있습니다.

 

커스텀으로 입력해야할 부분을 설명해드리겠습니다.

 

1. EMAIL

클플의 ID를 입력하세요 (클플은 이메일아이디입니다.)

 

2. ZONE

이 부분을 헤맸는데, 쉽게 입력할 수 없는 부분입니다. curl을 이용하여 ZONE ID를 알아내야 합니다.

 

curl -X GET "https://api.cloudflare.com/client/v4/zones?name=도메인&status=active&page=1&per_page=20&order=status&direction=desc&match=all" \
-H "X-Auth-Email: 클플ID" \
-H "X-Auth-Key: 클플APIKEY" \
-H "Content-Type: application/json"

 

굵게 표시한

 

도메인 = 등록한 도메인 예 abc.com이면 abc.com

클플ID = 클플ID(이메일형식)

클플API KEY = 클플 API KEY 는 클플 로그인 후 우측 상단 자기네임을 클릭하면 My Settings 메뉴가 있습니다.

눌러서 내리다 보면 API Key 항목에[ Global API Key가 있는데 View API Key를 눌러 뜨는 키 값을 입력하시면 됩니다.

 

SSH 터미널에서 위의 코드를 입력하면 JSON 형식으로 반환되는데,

여기서 ID:"~~~~~~~~~~~~~~~~~~~~~~~~" 라고 되어 있는 부분이 ZONE 값입니다. 만일 비어있거나 항목이 없다면, 잘못 기입하신 겁니다.


3.RECORDID

레코드 ID는 변경할 ID입니다. 이것도 ID를 알아내야 하기 때문에 아래코드를 SSH 터미널에 입력하세요.

 

curl -X GET "https://api.cloudflare.com/client/v4/zones/위에서알아낸ZONE값/dns_records?type=A&name=도메인&order=type&direction=desc&match=all" \
-H "X-Auth-Email: 클플ID" \
-H "X-Auth-Key: 클플APIKEY" \
-H "Content-Type: application/json"

 

여기서 참고할 것은 도메인은 대표 도메인이 아닌, 변경할 도메인입니다.

만약 abc.com의 A 레코드를 변경할 목적이라면 abc.com을 입력하면 되지만,

test.abc.com과 같이 서브도메인을 변경하려면 test.abc.com을 입력하시면 됩니다.

 

그럼 Zone 값을 구한 것과 마찬가지로 id:"~~~~~~~~~" 형식으로 값을 리턴되는데, id 항목의 내용 값만 캐치하시면 됩니다.

 

4. RECORDNAME

위에 입력한 도메인을 입력합니다. abc.com을 하셨다면 abc.com, test.abc.com와 같이 서브도메인을 입력하셨다면 test.abc.com

5. API

클플 API KEY입니다.

 

 

이제 모든 정보를 수집했습니다.

 

# vi /jffs/scripts/ddns-start

을 입력하여 아래와 같이 입력해주세요

 

#!/bin/sh

EMAIL=1.EMAIL
ZONE=2.ZONE
RECORDID=3.RECORDID
RECORDNAME=4.RECORDNAME
API=5.API
IP=${1}

curl -fs -o /dev/null -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE/dns_records/$RECORDID" \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $API" \
-H "Content-Type: application/json" \
--data '{"id":"'$RECORDID'","type":"A","name":"'$RECORDNAME'","content":"'$IP'"}'

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

 

이렇게 입력한 후 esc키 :wq 를 눌러 저장하고 나옵니다.

 

그리고 가장 중요한 부분인데, 권한 설정을 해줘야 합니다.... 이 부분을 설명하는 곳도 없고 해서 혼자 헤맸습니다..ㅠ

 

# chmod 707 /jffs/scripts/ddns-start

 

 

이제 다시 아수스 공유기 관리자 패널에 가셔서 처음 가셨던 DDNS 설정에서

 

CUSTOM을 선택하고 도메인 주소를 입력합니다. (테스트해봤는데 아무거나 입력해도 되는 듯 합니다. 어차피 API 통신으로 업뎃하기 때문에..ㅎㅎ)

 

저장을 누르고 등록 성공이 뜨면 클플에서 변경된 IP를 확인하실 수 있습니다.

 

만약 오랫동안 등록중.... 과 같은 메시지가 뜬다면, 권한설정이 안돼서 그런 겁니다.

 

혹은 등록실패로 나온다면, 위에 기입한 API 키라든지, ID 값이라든지 등등이 틀린 겁니다.

 

 

이상 끝..

글쓴이 하늘희

profile
てててててて
  • profile
    여긴 ISP에서 모뎀과 라우터가 빌드된 제품을 줘서 그냥 씁니다만, 기회가 되면 꼭 사용 해보고 싶네요.