다이나믹 DNS 프로토콜

1. 요청

요청에 대한 사용자 인증은 HTTP Basic Access Authentication을 이용합니다. 예를 들어 DNSEver 아이디가 test이고 인증코드가 123456이라고 했을때 test 사용자의 다이나믹 DNS 호스트 목록 가져오려면을 아래와 같이 요청합니다.
GET /gethost.php HTTP/1.0
Host: dyna.dnsever.com
Authorization: Basic dGVzdDoxMjM0NTY=
User-Agent: DDNS Client 

Authoriztion의 헤더에 'dG?VzdDoxMjM0NTY='는 사용자 아이디와 인증코드를 아래와 같이 encoding한 결과입니다.

// PHP의 경우
base64_encode("test:123456");

// Python의 경우
import base64
base64.b64encode("test:123456")

// Perl의 경우
use MIME::Base64;
encode_base64('test:123456'); 

linx, wget 등을 이용하면 쉽게 테스트 할 수 있습니다.

  • lynx -source -auth=아이디:인증코드 http://dyna.dnsever.com/gethost.php
  • wget -O - --http-user=아이디 --http-passwd=인증코드 http://dyna.dnsever.com/gethost.php

2. 응답

요청에 대한 응답은 일반적으로 아래와 같은 형태입니다.
<dnsever>
    <result type=":type" code=":code" msg=":msg">
    </result>
</dnsever> 
  • type : 요청 종류입니다. gethost와 update가 있습니다.
    • gethost : 사용자가 보유하고 있는 다이나믹 DNS 호스트 목록 요청에 대한 응답입니다.
    • update : 다이나믹 DNS 호스트 업데이트에 대한 응답입니다.
  • code : 응답 코드입니다. 요청에 대한 처리 결과를 나타납니다.
    • 101 : No ID
    • 102 : No AuthCode
    • 103 : Login Failed
    • 104 : No DDNS Authcode, You Should Create DDNS authcode first
    • 201 : Fail to get DDNS HostName List
    • 202 : No DDNS Host List
    • 203 : DNSEver service checkup
    • 210 : Update Failure
    • 301 : No Update Host Name
    • 302 : Invalid Domain
    • 303 : Invalid IP
    • 304 : DDNS not registered or Not Your Domain
    • 305 : Unknown Option
    • 311 : Not DDNS Host, the host is set to WebForwarding or WebParking
    • 312 : Does not allow offline
    • 320 : Too Many updates sent. Update is allowed once per minute
    • 700 : Login Success
    • 701 : DDNS Update Success
    • 702 : Some DDNS Update failed
    • 720 : Update Success
    • 721 : Already Updated
  • msg : 응답 코드에 대한 메세지입니다.

3. API

3.1 GET /gethost.php

사용자가 보유하고 있는 다이나믹 DNS 호스트 목록을 가져옵니다.
GET /gethost.php에 대한 응답

<dnsever>
    <result type="gethost" code="700" numOfHosts="2" msg="Login Success" lang="kr">
        <host name="bbs.myhome.com" status="ONLINE" ip="XXX.XXX.XXX.XXX"></host>
        <host name="www.myhome.com" status="ONLINE" ip="XXX.XXX.XXX.XXX"></host>
    </result>
</dnsever> 

3.2 GET /update.php&host[:name]=:ip

다이나믹 DNS 호스트 아이피를 업데이트 합니다. host[:name]=:ip에 대한 자세한 설명은 다이나믹 DNS 관리의 이용시 주의사항을 참고 합니다. 업데이트할 호스트명이 길어지면, GET 방식이 아니라 POST 방식으로 요청하는 것이 좋습니다.
GET /update.php?host[bbs.myhome.com]&host[www.myhome.com]에 대한 응답

<dnsever>
    <result type="update" code="701" numOfSuccess="2" numOfFailure="0" msg="DDNS Update Success">
        <host name="bbs.myhome.com" code="720" msg="Update Success"></host>
        <host name="www.myhome.com" code="720" msg="Update Success"></host>
    </result>
</dnsever>   
}

3.3 GET /getip.php

인터넷에 접속한 IP주소를 알아냅니다.
http://dyna.dnsever.com/getip.php
와 같이 호출하면 IP주소가 반환됩니다. IP공유기와 같이 내부사설망에서 인터넷접속을 한 IP주소를 알아낼 때 사용하면 됩니다.
또 다른 질문이 있으십니까? 문의 등록

0 댓글

댓글을 남기려면 로그인하세요.