-
Notifications
You must be signed in to change notification settings - Fork 30
Instructions in Korean
- 간디 도메인
- 리눅스가 설치된 서버
먼저 간디 도메인 사이트에서 API 키를 발급받아야 한다. 아래 순서를 따르자.
간디 도메인 사이트에 로그인한 다음 My Account -> Account management -> API management 메뉴를 클릭한다.
Activation of the API on the test platform (OT&E) 섹션의 Status를 Activated로 지정하고, Change status 버튼을 누른다.
그러면 API 키 생성 중이라는 메시지가 나온다. 5~10분 정도 기다리면 키가 발급된다.
주의: 키를 외부에 노출하지 말 것.
사실 테스트 플랫폼용 API 키는 필요없다. 다만 진짜 API 키는 먼저 테스트 플랫폼용 키를 받은 다음에 받을 수 있기 때문에 2) 과정을 거친 것이다. 이제 진짜 API 키를 발급받자.
Activation of the production API 섹션의 API XML Status를 Activated로 지정하고, 암호를 지정한 다음, Submit 버튼을 누른다.
그러면 이번에도 API 키 생성 중이라는 메시지가 나오고 5~10분 정도 기다리면 키가 발급된다.
주의: 키를 외부에 노출하지 말 것.
간디 도메인 사이트에 로그인한 다음 My Account -> Services -> Domains -> DNS Zones 메뉴를 클릭한다.
수정할 DNS Zones 파일을 하나 열고, Create a new version 을 클릭해 새로운 DNS Zones 버전을 생성한다.
그후 Add 버튼을 눌러 관리하고자 하는 DNS 네임 레코드를 추가한다. 각 필드에 입력할 값은 다음과 같다.
- Type: A 선택
- TTL: 설정값 유효기간. 즉, 갱신 주기다. 5분에서 3시간 등 다양하게 지정할 수 있다. 나는 15분으로 했다.
- Name: www, home, blog, app 등 사용할 레코드 네임.
- Value: 링크할 주소. 우리는 API를 통해 이 값을 꾸준히 수정할 것이다. 일단 잘 변경되는지 테스트를 하기 위해 대충 아무 ip 주소 또는 도메인을 입력해 두자. (예: 127.0.0.1, google.com 등)
Use this version 을 클릭해 이 버전을 사용하도록 지정한다.
터미널에서 다음을 입력한다.
$ cd ~
$ git clone https://github.com/lembregtse/gandi-dyndns.git
$ sudo chown -r root:root gandi-dyndns
$ sudo mv gandi-dyndns /usr/local
설치 완료.
gandi-dyndns 사용법은 다음과 같다.
$ gandi-dyndns --api=APIKEY --domain=DOMAIN --record=RECORD
시험삼아 터미널에 이 명령을 입력해보자. 물론, APIKEY, DOMAIN, RECORD는 적절한 값으로 바꿔야 한다. 프로그램을 실행하고 잠시 기다리면 현재 IP가 도메인 서버의 네임 설정에 반영되고 그 결과가 터미널에 출력될 것이다. 이 부분이 제대로 안 되면 무언가 잘못 한 것이고 더 진행할 수 없으므로 잘 확인하자.
갱신이 된 후에도 도메인 네임 서버에서 이것이 적용되기까지는 시간이 걸릴 수 있으니 바로 되지 않는다고 조바심을 내지 말자.
gandi-dyndns 프로그램을 그냥 써도 무방하지만, 업데이트 설정을 쉽게 고치고 로그 기록도 남기기 위해서 간단한 쉘 스크립트를 만들어 볼 수 있다.
선호하는 편집기를 이용해 /usr/local/bin/update-ddns 텍스트 파일을 생성한다. root 권한이 필요하다. vim 사용자라면 다음과 같다.
$ sudo vim /usr/local/bin/update-ddns
편집기가 실행되면 아래 코드를 입력하고 저장한다.
#!/bin/sh
# config
UPDATER="/usr/local/gandi-dyndns/gandi-dyndns"
LOG="/var/log/update-ddns.log"
API="Your-API-Key"
DOMAIN="yourdomain.net"
RECORD="www"
# update & leave log
TIME_STAMP=$(date +"%F %T")
RESULT=$($UPDATER --api=$API --domain=$DOMAIN --record=$RECORD --ipv4 2>&1)
echo [$TIME_STAMP $RECORD.$DOMAIN] $RESULT >> $LOG
위 스크립트에서 config 항목의 각 값은 알맞게 수정하자. API 에는 간디 API 키를, DOMAIN에는 자신의 도메인 주소를, RECORD에는 갱신하고자 하는 이름을 지정하면 된다.
다음으로, 아래와 같이 실행 권한을 설정한다.
$ sudo ug+x /usr/local/bin/update-ddns
다음 명령을 실행해 crontab 편집기를 실행한다.
$ sudo crontab -e
편집기가 실행되면, 마지막 줄에 다음 줄을 입력하고 저장한다.
*/15 * * * * /usr/local/bin/update-ddns
여기서 맨 앞의 */15
는 매 15분마다 이 명령을 실행하라는 뜻이다. 5분에 한 번씩 갱신하고 싶으면 */5
로 바꾸면 된다.
ddns 갱신 기록이 잘 이루어지고 있는지 확인하고 싶다면 다음과 같이 /var/log/update-ddns.log 파일을 열어보면 된다.
$ less /var/log/update-ddns.log
[2014-03-24 19:30:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 19:45:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 20:00:01 home.bakyeono.net] Can't find address for record type 'A'
[2014-03-24 20:15:02 home.bakyeono.net] Can't find address for record type 'A'
[2014-03-24 20:30:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 20:45:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 21:00:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 21:15:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 21:30:01 home.bakyeono.net] The IP for 'home' did not change
[2014-03-24 21:45:01 home.bakyeono.net] The IP for 'home' did not change
/var/log/update-ddns.log (END)
Written by Bak Yeon O([email protected])
Also posted on my blog (http://www.bakyeono.net)