[도메인] 인터랙티브 인터넷 네임 서버 업데이트 – nsupdate
인터랙티브 인터넷 네임 서버 업데이트 – nsupdate
nsupdate 는 bind에 속한 프로그램으로, 네임서버의 다이나믹 업데이트를 제공한다.
nsupdate는 dns 자원 레코드의 삭제 혹은 추가를 하기위해서 리저버 라이브러리를 통해 dns 서버로 데이터를 보내는 프로그램입니다.
이를 잘 활용하게 되면, Dyndns 구조의 프로그램을 제작하는데 상당히 도움이 된다.
또한 시리얼을 업데이트할때마다 변경해주기 때문에 시리얼 변경을 하지 않아도 된다.
1. nsupdate 를 사용하기 위한 named.conf 설정
named.conf 의 사용할 도메인의 존설정에 한줄을 추가한다.
zone “dgtalx.com” IN {
type master;
file “zone-dgtalx.com”;
};
위는 기존의 존 설정이다.
여기에 allow-update { 211.172.226.23; }; 를 추가한다.
(업데이트 쿼리를 허용할 주소)
추가를 하면 아래와 같이 된다.
zone “dgtalx.com” IN {
type master;
file “zone-dgtalx.com”;
allow-update { 211.172.226.23; };
};
2. nsupdate를 사용하게 될 경우 변경되는 zone 파일
bind 덤프 v8 로 존파일이 싹 바뀌게 된?
그리고 nsupdate를 써서 추가/삭제된것이 네임서버가 종료될때
반영된다.
실제 적용된 dgtalx.com 의 존파일을 예제삼아 올린다.
;BIND DUMP V8
$ORIGIN com.
dgtalx 128 IN SOA ns.dgtalx.net. xiopadm.dgtalx.net. (
2000071910 1800 600 14400 3600 ) ;Cl=2
128 IN NS ns.dgtalx.com. ;Cl=2
128 IN MX 0 mail.dgtalx.com. ;Cl=2
128 IN A 211.172.226.23 ;Cl=2
$ORIGIN dgtalx.com.
mirc 128 IN A 211.172.226.23 ;Cl=2
ns 128 IN A 211.172.226.23 ;Cl=2
앞의 ns 128 IN A ip 를 보면 128은 TTL값입니다. 기존의 $ttl 128 이 반영된것입니다
3. nsupdate 사용법과 명령어
사용법 : nsupdate [ -d ] [ -v ]
-d 디버그 모드
-v tcp 통신을 한다. (기본은 udp로 서버와통신함)
$ nsupdate
>
(프롬프트가 바뀝니다. 이후는 선행명령어와 선행판별식 실행명령으로 구분됩니다.)
명령들 ————-
prereq nxdomain domain-name
지정한 도메인 네임에 대한 레코드가 존재 하지 않을경우 참이된다.
(참고로 위의 RR은 리소스 레코드의 약자임, 라운드 로빈과 무관함)
prereq yxdomain domain-name
지정한 도메인 네임에 대한 레코드가 존재할 경우 참이된다.
prereq nxrrset domain-name [class] type
지정한 도메인 네임에 지정한 type의 데이터가 없어야 참이된다.
prereq yxrrset domain-name [class] type [data…]
지정한 도메인 네임에 값이 존재해야 하며, data 값을 대입하였을 경우
아주 정확히 매치되어야 참이된다.
update delete domain-name [class] [type [data…]]
지정한 도메인네임을 삭제한다. (type과 데이터가 지정되면 매치되는 레코드만이 삭제된다)
update add domain-name ttl [class] type data…
새로운 도메인 네임을 삽입한다. ttl과 type과 data는 지정하는것이 좋다.
———————
prerequest 를 날린 후에 그 값이 참일 경우 다음줄의 명령어들이 실행된다.
update가 대부분의 선행판별식 명령이다.
update add 명령어로 기존의 a.com 의 ip가 변경되지 않음으로
기존의 데이터를 삭제하고 새로 추가해야한다.
이것은 아래의 예제를 통해 알 수 있다.
1. 새로운 네임을 추가할때의 스크립트 작성예
$nsupdate
>prereq nxdomain nx2.dgtalx.com.
>update add nx2.dgtalx.com. 128 IN A 211.58.88.61
문법해석 : prereq 로 nxdomain 체크한다.
나는 사전에 점검한다. nx2.dgtalx.com. 이라는 도메인이 존재하지 않아야
이 다음의 모든 명령이 실제 서버로 쿼리로 전송하게 할것이다
nx2.dgtalx.com 의 도메인을 ttl 128로 A type 으로 지정, 211.58.88.61로
새로운 설정을 적용한다. 이 모든것은 prereq의 값이 참일때만 적용하도록 한다
2. 기존의 네임의 ip를 변경할때의 스크립트 작성예
$nsupdate
>prereq yxdomain test.dgtalx.com.
>update delete test.dgtalx.com.
>update add test.dgtalx.com. 128 IN A 211.58.88.61
문법해석 :
나는 사전에 점검한다. test.dgtalx.com. 이라는 도메인이 “정의되어” 있어야
이하에 내가 실행하는 모든 명령어는 서버로 반영되게 한다
기존의 test.dgtalx.com. 의 도메인을 삭제한다.
새로운 도메인을 추가한다. test.dgtalx.com 으로 128ttl의 A 타입으로
211.58.88.61 로 업데이트 한다
Last TIP : 도메인은 오리지널 도메인 네임으로 지정해야한다.
TEST.DGTALX.COM 이와같은 도메인은 처리가 되지 않을 수도 있다.
TEST.DGTALX.COM. 이처럼 뒤에 . 으로 마친 도메인의
처리가 정상적으로 이루어진다.