Bind 세팅 및 DNS 세팅에 관한 내용입니다.. 참조하세요..
bind 버전은 bind-9.1.3-4hl 입니다..
중간에 정균님의 설명을 참조한것이 있습니다..
참고 문서) http://www.oops.org/?t=lecture&sb=bind&n=1
###################################################################
DNS 세팅 요약 정리
aaa.com -- DNS 로 사용할 도메인
bbb.com -- 가상 도메인으로 사용한 도메인
kan.aaa.com -- 2차 도메인
12.34.56.78 -- 아이피 주소
- /etc/named.conf
- /etc/resolv.conf
- /etc/hosts
- /var/named/aaa.com.zone
- /var/named/78.rev
위 파일 수정후 named 재 실행
#/etc/rc.d/init.d/named restart
###################################################################
# vi /etc/named.conf
// reverse of 12.34.56 ////////////////////////////////////////////
zone "56.34.12.in-addr.arpa" IN {
type master;
file "78.rev";
allow-update { none; };
};
// zone of aaa.com //////////////////////////////////////////
zone "aaa.com" IN {
type master;
file "aaa.com.zone";
allow-update { none; };
};
# vi /etc/resolv.conf
domain aaa.com
search aaa.com www.aaa.com
nameserver 12.34.56.78
nameserver 61.81.63.1
nameserver 168.126.63.1
# cd /var/named
# vi aaa.com.zone #####################################################
$TTL 86400
@ IN SOA ns.aaa.com. kan.aaa.com. (
0206031220 ;Serial
10800 ;Refresh
3600 ;Retry
3600000 ;Expire
43200 ) ;Minium
; Name Server
IN NS ns.aaa.com.
IN MX 10 aaa.com.
; Host Name
localhost IN A 127.0.0.1
@ IN A 12.34.56.78
ns IN A 12.34.56.78
; Virtualhost
kan IN A 12.34.56.78
; Alias
www IN CNAME @
#####################################################################
맨 윗부분의 $TTL 86400 를 주위하자..
8.2.3 에서는 $TTL 86400이 지정이 되지 않으면 message file에 Default TTL이 지정되지 않아서 기본값인 86400초를 사용 한다는 메세지가 남는다. 하지만 9.x 부터는 이것이 지정되지 않을 경우 database error가 발 생하여 아예 해당 zone file에 지정된 name은 찾아 지지 않게 된다. 그러므로 이 부분은 8.2.3 이후 버젼이라면 꼭 지정을 하는 것이 좋다.
사용하지 않을 경우 named 데몬 실행시 다음과 같은 에러를 출력하게 된다..
------------------------------------------------------
Jun 3 11:51:31 aaa named[13358]: dns_master_load: aaa.com.zone:1: no TTL specified. THIS ZONE WILL NO LONGER WORK IN FUTURE VERSIONS. Add a TTL.
------------------------------------------------------
# vi bbb.com.zone ########################################################
$TTL 86400
@ IN SOA ns.bbb.com. chtla.bbb.com. (
0206031253 ;Serial
10800 ;Refresh
3600 ;Retry
3600000 ;Expire
43200 ) ;Minium
; Name Server
IN NS ns.bbb.com.
IN MX 10 bbb.com.
; Host Name
@ IN A 12.34.56.78
ns IN A 12.34.56.78
; Alias
www IN CNAME @
#####################################################################
가상 도메인 세팅시 사용되는 zone 파일 예제..
# vi 78.rev ##############################################################
$TTL 86400
@ IN SOA ns.aaa.com. kan.aaa.com. (
0206031231 ;Serial
10800 ;Refresh
3600 ;Retry
3600000 ;Expire
43200 ;Mininum (TTL)
)
;Name Server
IN NS ns.aaa.com.
IN MX 10 aaa.com.
;in.addr-arpa
78 IN PTR aaa.com.
78 IN PTR bbb.com.
78 IN PTR kan.aaa.com.
#####################################################################
예전 습관처럼
78 IN A mail.aaa.com.
를 사용했는데.. 이것을 사용할 경우 name 실행시 다음과 같은 에러를 출력하게 된다..
-----------------------------------------------
Jun 3 12:09:02 aaa named[13636]: dns_rdata_fromtext: 78.rev:21: near eol: bad dotted quad
-----------------------------------------------
주의)
만약 이 reverse mapping이 제대로 설정이 되어 있지를 않다면 /etc/resolv.conf에서 자신의 name server를 default DNS로 설정을 해도 잡히지를 않게 된다. 물론 외부에서 잡히지 않는 것은 전혀 상관 없다. 하지만 local에서는 꼭 잡혀야지만 자신의 NS를 default DNS로 지정을 할수가 있는 것이다.
#####################################################################
아래는 zone 화일과 reverse 화일을 잘못 설정시 나타나는 에러의 문구들이다.. 참조해라..
# /etc/rc.d/init.d/named start
named (을)를 시작합니다: [실패]
--------------------------------------------------------------
named 구동 실패 원인은 /var/log/messages 에서 볼수 있다..
아래는 aaa.com.zone 에서
zone "aaa.com" IN { --> zone "aaa.com IN {
이처럼 표기해 named 가 구동이 못해 messages에 기록된 내용이다.
May 18 11:03:06 aaa 5월 18 10:33:04 named: named 를 시작하고 있습니다 failed
May 18 11:03:22 aaa named[1601]: starting BIND 9.1.3 -u named
May 18 11:03:22 aaa named[1601]: using 1 CPU
May 18 11:03:22 aaa named[1604]: loading configuration from '/etc/named.conf'
May 18 11:03:22 aaa named[1604]: /etc/named.conf:48: unknown class near 'aaa.com.zone'
May 18 11:03:22 aaa named[1604]: loading configuration: failure
May 18 11:03:22 aaa named[1604]: exiting (due to fatal error)
[root@aaa root]# tail -f /var/log/messages
Jun 3 11:51:31 aaa named[13358]: dns_rdata_fromtext: 78.rev:20: near eol: bad dotted quad
Jun 3 11:51:31 aaa named[13358]: dns_zone_load: zone 56.34.12.in-addr.arpa/IN: loading master file 78.rev: bad dotted quad
Jun 3 11:51:31 aaa named[13358]: master.c:1197: unexpected error:
Jun 3 11:51:31 aaa named[13358]: dns_master_load: bbb.com.zone:1: no TTL specified. THIS ZONE WILL NO LONGER WORK IN FUTURE VERSIONS. Add a TTL.
Jun 3 11:51:31 aaa named[13358]: dns_master_load: bbb.com.zone:8: using RFC 1035 TTL semantics
Jun 3 11:51:31 aaa named[13358]: master.c:1197: unexpected error:
Jun 3 11:51:31 aaa named[13358]: dns_master_load: aaa.com.zone:1: no TTL specified. THIS ZONE WILL NO LONGER WORK IN FUTURE VERSIONS. Add a TTL.
Jun 3 11:51:31 aaa named[13358]: dns_master_load: aaa.com.zone:8: using RFC 1035 TTL semantics
Jun 3 11:51:31 aaa named[13358]: running
Jun 3 11:51:31 aaa 6월 3 11:51:31 named: named 를 시작하고 있습니다 succeeded
[root@aaa named]# tail -f /var/log/messages
Jun 3 12:09:02 aaa named[13636]: loading configuration from '/etc/named.conf'
Jun 3 12:09:02 aaa named[13636]: the default for the 'auth-nxdomain' option is now 'no'
Jun 3 12:09:02 aaa named[13636]: no IPv6 interfaces found
Jun 3 12:09:02 aaa named[13636]: listening on IPv4 interface lo, 127.0.0.1#53
Jun 3 12:09:02 aaa named[13636]: listening on IPv4 interface eth0, 12.34.56.78#53
Jun 3 12:09:02 aaa named[13636]: command channel listening on 127.0.0.1#953
Jun 3 12:09:02 aaa named[13636]: dns_rdata_fromtext: 78.rev:21: near eol: bad dotted quad
Jun 3 12:09:02 aaa named[13636]: dns_zone_load: zone 56.34.12.in-addr.arpa/IN: loading master file 78.rev: bad dotted quad
Jun 3 12:09:02 aaa named[13636]: running
Jun 3 12:09:02 aaa 6월 3 12:09:02 named: named 를 시작하고 있습니다 succeeded
[root@aaa named]# tail -f /var/log/messages
Jun 3 12:10:37 aaa named[13732]: starting BIND 9.1.3 -u named
Jun 3 12:10:37 aaa named[13732]: using 1 CPU
Jun 3 12:10:37 aaa named[13735]: loading configuration from '/etc/named.conf'
Jun 3 12:10:37 aaa named[13735]: the default for the 'auth-nxdomain' option is now 'no'
Jun 3 12:10:37 aaa named[13735]: no IPv6 interfaces found
Jun 3 12:10:37 aaa named[13735]: listening on IPv4 interface lo, 127.0.0.1#53
Jun 3 12:10:37 aaa named[13735]: listening on IPv4 interface eth0, 12.34.56.78#53
Jun 3 12:10:37 aaa named[13735]: command channel listening on 127.0.0.1#953
Jun 3 12:10:37 aaa named[13735]: running
Jun 3 12:10:38 aaa 6월 3 12:10:38 named: named 를 시작하고 있습니다 succeeded
######################################################################
# nslookup
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> ns.aaa.com
;; connection timed out; no servers could be reached
[root@aaa named]# /etc/rc.d/init.d/named start
named (을)를 시작합니다: [ 확인 ]
###############################################################################
[root@aaa named]# nslookup
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> set type=any
> aaa.com
Server: localhost
Address: 127.0.0.1#53
aaa.com
origin = ns.aaa.com.
mail addr = root.aaa.com.
serial = 20020517
refresh = 10800
retry = 3600
expire = 3600000
minimum = 43200
aaa.com nameserver = ns.aaa.com.
Name: aaa.com
Address: 12.34.56.78
aaa.com mail exchanger = 10 mail.aaa.com.
> set type=mx
> aaa.com
Server: localhost
Address: 127.0.0.1#53
aaa.com mail exchanger = 10 mail.aaa.com.
> set type=ns
> aaa.com
Server: localhost
Address: 127.0.0.1#53
aaa.com nameserver = ns.aaa.com.
> 56.34.12.in-addr.arpa
Server: localhost
Address: 127.0.0.1#53
** server can't find 56.34.12.in-addr.arpa.: SERVFAIL
###################################################################
/etc/hosts 설정
[root@aaa root]# vi /etc/hosts
# that require network functionality will fail.
127.0.0.1 aaa localhost.localdomain localhost
12.34.56.78 aaa.com aaa
간단히 전화접속 사용자 같은 경우에는 NS를 돌릴 필요가 전혀 없다.
그렇다고 남의 DNS를 이용하다 보면 지정한 DNS가 죽는 경우도 허다 하기 때문에 자주 사용하는 곳은 이 hosts fiel에 미리 지정을 하여 사용하면 그리 지장이 없는 것이다.
실제로 앞에서 host.conf file에서 hosts와 bind 중 어느것을 먼저 참조할지를 설정하는 부분이 있을 것이다.
host.conf에서 hosts를 먼저 참조 하도록 한다면 hosts에 기록된 hosts들은 지정한 DNS가 죽든 말든 상관없이 이 hosts file에서 해석이 되어 접속이 가능한 것이다.
또한 domain name을 해석하기 위하여 지정한 NS까지 거칠 필요가 없기 때문에 좀더(거의 체감이 안남^^) 빨리 접속을 할수 있기도 하다.
그리고 nick name을 지정해 놓으면 domain name뿐 아니라 이 nick name을 이용해서 간단하게 접속할수도 있다.