BBUWOO'S [ LIKE UNIX ] WORLD Home > Lecture > Bind9 > Bind9-14  

HOME
WHAT's BBUWOO?
LInux AnNyung
Open Source
    GitHUB
    GitHUB (for PHP)
LECTURE
MINI LECTURE
QnA BOARD
ENGLISH POEM


WARNNING

강좌의 모든 권리는 본인 김정균에게 있으며 이 강좌를 상업적 목적 으로 이용
하거나 다른 곳으로 옮길시에는 본인의 허락이 있어야 한다. 이글의 가장 최신글은
http://oops.org 에서 확인할수 있다.



15. Method of Dynamic Update
Dynamic Update 는 해당 도메인의 Authority 를 갖는 네임서버를 통해  Zone 파일을 수정치 않고
도 레코드를 동적으로 원격 갱신할 수 있도록 한다. 도메인 관리를 자동화 하거나,  사용자 별로
접속 도메인을 실시간 변경하여 제공하거나, DHCP에서의 주소-IP 매칭등과 같이 실시간적으로 레
코드가 변경, 갱신 될 필요가 있는 서비스에 특히 유용할 수 있겠다.

Dynamic Update 는 BIND 8 부터 지원이 되며 BIND 9 에서의 변화는 dnssec-key 를 이용한 인증부
분의 강화에 있다.

일단 Dynamic Update 를 가능하게 하기 위해서는 named.conf 의 zone block 정의에서 allow-update
에 정의가 되어 있는 key 를 사용해야 한다.



 Hanterm - cat /etc/named.conf

 [root@bbuwoo /etc]$ cat /etc/named.conf           

  ...
  zone "oops.org" IN {
    type master;
    file oops.zone
    allow-update { key "oops-key"; };
  };
  ...

 [root@bbuwoo /etc]#


위와 같이 allow-update 에 인증을 위한 key 를 설정을 한다.  ip address 로도 설정을 할 수 있
지만 별로 권장하지는 않는다.  ip address 와 key 를 동시에 설정했을 경우 AND 연산인지 OR 연
산인지는 필자도 잘 모르겠다. 일단 설정은 여기까지만 되면 된다.

단 주의할 것은, 퍼미션 관리를 잘해야 한다는 것이다. 일단 key-name 과 secret 값만 알면 누구
나 변경을 할 수 있기 때문에, rndc.conf 와 named.conf 의 소유권과 퍼미션을 변경해 주도록 한
다.

chown root.named /etc/named.conf /etc/rndc.conf
chmod 750 /etc/named.conf /etc/rndc.conf

다음, journal file 이 생성될 수 있도록 /var/named 디렉토리에도 named user 에게 쓰기 권한을
줘야 한다.

chown -R root.named /var/named
chmod -R g+rw /var/named

여기까지 Dynamic Update 를 하기위한 설정을 마쳤다.  이제 nsupdate 를 이용하여 update 를 시
도해 본다. nsupdate 를 실행하기 위해서는 /etc/named.conf 의 key name 과 secret 값을 이용하
여 접속을 한다.

nsupdate -d -y key-name:secret_value

의 형식으로 실행을 한다. nsupdate 는 shell mode 에서 응답식으로 진행을 하게된다. 그럼 여기
서는 간단하게 oops.zone 에 있는 babo.oops.org 의 A record 를  210.24.154.156 에서 200 번으
로 변경하는 예제를 들겠다. 원격 호스트에서 한다고 예를 들겠다.



 Hanterm - nsupdate -d -y oops-key:n+h/daGNTmmEKimn25/h4g==

 [root@bbuwoo /etc]$ nsupdate -d -y oops-key:n+h/daGNTmmEKimn25/h4g==

  Creating key...
  namefromtext
  keycreate
  > server 210.24.154.2
  > prereq yxdomain babo.oops.org
  > update delete babo.oops.org A
  > update add babo.oops.org 86400 A 210.24.154.200
  > send

  Reply from SOA query:
  ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id:  55957
  ;; flags: qr aa rd ra ; QUESTION: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
  ;; QUESTION SECTION:
  ;babo.oops.org. IN SOA

  ;; AUTHORITY SECTION:
  oops.org.     0 IN SOA oops.org. root.oops.org. 2002051811 10800 900 604800 86400


  Found zone name: oops.org
  The master is: oops.org

  Reply from update query:
  ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:  12736
  ;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1
  ;; TSIG PSEUDOSECTION:
  oops-key.     0 ANY TSIG hmac-md5.sig-alg.reg.int. 1024649869 300 16 \
                90YFfkY0HZIEEcKKG67Wuw== 12736 NOERROR 0 

  oops-key. 라인의 마지막 \ 문자는 한줄로 라는 의미이다.

  > quit

 [root@bbuwoo /etc]# nslookup babo.oops.org

  Server:         10.0.0.1
  Address:        10.0.0.1#53

  Name:   babo.oops.org
  Address: 210.24.154.200

 [root@bbuwoo /etc]#

위의 예제는 babo.oops.org 의 A 레코드를 156 번에서 200 번으로 변경하는 예제이다.  nsupdate
에는 edit 가 없기 때문에 존재하는 도메인은 삭제를 하고 다시 설정을 해야한다. 그래서 update
delete 후에 update add 를 행하게 되는 것이다.

그럼 nsupdate 의 명령행에 대해서 논하겠다.

server servername [ port ]

모든 dynamic update 의 요청을 지정한 서버로 보낸다.  server 가 지정이 되지 않았을 경우에는
master server 로 지정된 서버로 요청을 보낸다. 포트는 기본값으로 53 번을 사용한다.

local address [ port ]

모든 dynamic update 요청을 local address 를 이용해 전송한다. 만약 지정되지 않는다면 시스템
에 의해 선택된 주소와 포트를 이용해서 요청을 전송한다.

zone zonename

업데이트가 이루어질 zone 이름을 지정한다. 만약 지정되어 있지 않다면 요청된 정보에 의거하여
알맞은 zone 을 선택하도록 시도를 한다.

prereq yxdomain domain-name

domain-name 이 존재(하나 이상의 레코드가 설정되어 있음) 함을 연속된 명령의 선행조건으로 삼
는다. 

prereq nxdomain domain-name

domain-name 에 어떠한 레코드도 설정되어 있지 않음을 연속된 명령의 선행 조건으로 삼는다.

update delete domain-name [ ttl ]  [ class ]  [ type  [ data... ]  ]

TYPE 이 명시되지 않았을 경우엔 해당 domain-name 에 소속된 레코드를 모두 삭제한다.  TYPE 이
명시될 경우엔 매칭되는 레코드만이 제거된다.

update add domain-name ttl [ class ]  type data...

지정된 레코드를 해당 도메인에 추가한다.

show

마지막 send 전 까지의 모든 선행 조건과 업데이트 스펙을 포함한 모든 메세지를 출력한다.

send

현재 메세지를 서버로 전송하여 업데이트를 시도한다.


더 자세한 것은 manual page 를 참고하기 바란다.


Dynamic Update 에 의해 변경된 사항은 즉시 반영이 되며, named 가 종료될 때 해당 Zone 파일에
직접 기록을 하여 다음번 구동시 적용이 될 수 있도록 한다. 단 named 가 종료될 때는 rndc stop
으로 종료가 되어야 한다.



>> 이전 : Name Server Error Debugging
>> 다음 : INTERNET Service를 위한 NAME Service의 바른이해



    



 Home > Lecture > Bind9 > Bind9-14

Copyright 1997-2024 JoungKyun Kim 
LAST MODIFIED: 2017/01/18