제목 : SULINUX를 네임서버로 사용하기 2편
ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 서버관리팀
ㅇ SULINUX 홈페이지 : www.sulinux.net
ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr
SULINUX를 Name Server로 사용하기
4-6. MX(Mail eXchanger) 레코드
MX 레코드는 해당 호스트의 메일 라우팅 경로를 조정한다. 다음과 같이 설정되어 있을 경우, account@nemo.co.kr 으로 보내어 지는 편지는 실제 mail.nemo.co.kr. 으로 전송된다. 만약 mail.nemo.co.kr. 에 연결할 수 없다면, 다음 우선순위인 power.nemo.co.kr 으로 편지를 배송하게 된다. MX Priority_Number 와 같이 사용하며, Priority_Number의 숫자는 적을수록 우선순위가 높다. MX 알고리즘에서 자세히 다룬다.
nemo.co.kr. IN MX 10 mail.nemo.co.kr.
IN MX 20 power.nemo.co.kr.
mail.nemo.co.kr. IN A 192.168.1.2
power.nemo.co.kr. IN A 192.168.1.103
다음과 같이 MX 레코드에 CNAME으로 설정된 도메인을 넣으면 안된다. 이럴 경우 몇몇 MTA(Mail Transfer Agent: sendmail)는 메일 라우팅 경로를 찾지 못하여, 메일을 주고받을 수 없다. 이는 송신인이 사용하는 MTA의 종류와 버전에 의존적이므로, 경험 많은 도메인 메니저가 아니면 문제의 원인을 진단하기도 어렵다. 반드시 주의하자.
nemo.co.kr. IN MX 10 mail.nemo.co.kr. ; (X) 잘못된 사용
mail.nemo.co.kr. IN CNAME power.nemo.co.kr.
power.nemo.co.kr. IN A 192.168.1.103
4-7. PTR(Pointer) 레코드
PTR 레코드는 IP 주소에 대해 도메인명을 매핑하여 주며, Reverse Zone 파일에서 사용된다. 다음은 IP 192.168.1.2에 대한 설정 예이다.
1.1.168.192.in-addr.arpa. IN PTR ns.nemo.co.kr.
Forward Zone에서는 다수의 도메인이 A(혹은 CNAME) 레코드를 통해 같은 IP를 갖을 수 있지만, PTR 레코드는 중복이 허용되지 않기 때문에, 해당 IP에 대한 대표 도메인명 하나만을 설정하여야 한다.
4-8. 기타 레코드들
Zone 데이터베이스에 필요한 레코드들은 위에 나열한 것만으로도 충분하지만, 더 많은 레코드들이 존재한다. 다음에 반드시 필요하지는 않으나, 종종 사용되는 레코드를 소개한다. 더 자세한 정보가 필요하다면 RFC1035, RFC1183, RFC2163을 참고하자.
power IN A 192.168.1.103
IN HINFO "Sun Sparc Ultra 5" "Solaris 2.6"
IN TXT "Nobreak's Primary Server"
IN TXT "WWW, FTP is now available"
IN RP hostmaster.nemo.co.kr. hostinfo.nemo.co.kr.
hostinfo IN TXT "Seung-young Kim, +84864-4440/1"
HINFO(Host INFOrmation) 레코드는 두 개의 문자열(CPU 정보, OS 정보)을 갖으며 시스템 정보를 나타낸다. 문자열에 공백이 포함되어 있을 경우에는 반드시 큰따옴표를 사용하여야 한다.
TXT(TeXT) 레코드는 텍스트 정보를 갖으며 중첩되어 사용될 수 있다. RP(Responsible Person)는 담당자의 정보를 표시하는데, Email 주소(@를 도트로 치환한)와, 담당자 정보(TXT 레코드를 갖는 도메인을 포인팅함)를 갖는다. HINFO를 포함한 몇몇 레코드는 보안을 이유로 사용치 말아야 한다는 의견도 있다.
4-9. Zone 데이터베이스 예제
Figure 1의 네트워크 구성에 대한 Forward Zone 파일 zone-nemo.co.kr은 다음과 같이 작성될 수 있다.
* nemo.co.kr 도메인에 대한 Forward Zone 파일 /var/named/zone-nemo.co.kr
@ IN SOA ns.nemo.co.kr. hostmaster.nemo.co.kr. (
1998122801 ;Serial
21600 ;Refresh ( 6 hours)
1800 ;Retry (30 minutes)
1209600 ;Expire (14 days)
86400) ;Minimum ( 1 day)
IN NS ns.nemo.co.kr.
IN NS ns2.nemo.co.kr.
IN MX 10 mail ; 메일 라우팅 호스트
mail IN A 192.168.1.2
; Hosts Here - This is comments
router IN A 192.168.1.1
ns IN A 192.168.1.2
ns2 IN A 192.168.1.3
power IN A 192.168.1.103
IN HINFO "Sun Sparc Ultra 5" "Solaris 2.6"
IN TXT "Nobreak Technologies, Inc."
www IN CNAME power
인버스 도메인을 위한 Reverse Zone 파일 zone-79.105.210.in-addr.arpa은 다음과 같이 작성된다.
* Reverse Zone 파일 /var/named/zone-79.105.210.in-addr.arpa
@ IN SOA ns.nemo.co.kr. hostmaster.nemo.co.kr. (
1998122801 ;Serial
21600 ;Refresh ( 6 hours)
1800 ;Retry (30 minutes)
1209600 ;Expire (14 days)
86400) ;Minimum ( 1 day)
IN NS ns.nemo.co.kr.
IN NS ns2.nemo.co.kr.
; IP-Domain mapping here
1 IN PTR router.nemo.co.kr.
2 IN PTR ns.nemo.co.kr.
3 IN PTR ns2.nemo.co.kr.
103 IN PTR power.nemo.co.kr.
loopback 주소를 위한 Reverse Zone 파일 또한 다음과 같이 작성된다. IP 127.0.0.1을 localhost. 로 매핑하는 것이 전부이므로, 본 파일은 어느 네트워크에서나 비슷하게 작성될 것이다.
* loopback을 위한 Reverse Zone 파일 /var/named/zone-0.0.127.in-addr.arpa
@ IN SOA ns.nemo.co.kr. hostmaster.nemo.co.kr. (
1998122801 ;Serial
21600 ;Refresh ( 6 hours)
1800 ;Retry (30 minutes)
1209600 ;Expire (14 days)
86400) ;Minimum ( 1 day)
IN NS ns.nemo.co.kr.
IN NS ns2.nemo.co.kr.
; IP-Domain mapping here
1 IN PTR localhost.
Zone 파일에서의 도메인 표기는 반드시 FQDN 표기법을 따라야 한다. BIND는 도트로 끝나지 않는 문자열은 호스트명으로 처리하므로, ns.nemo.co.kr 을 ns.nemo.co.kr.nemo.co.kr. 으로 해석한다. 따라서 ns.nemo.co.kr. 과 같이 도트를 붙인 FQDN으로 표기하거나, ns 와 같이 호스트명만 사용하여야 한다. 도트를 빼먹는 실수는 매우 빈번히 발생하므로, 주의하자.
4-10. 호스팅 업체를 위한 Zone 데이터베이스 예제
호스팅업체의 경우 다음과 같이 다수의 도메인을 하나의 Zone 데이터베이스로 관리할 수가 있다. 만약, 호스팅 도메인별로 별도의 Zone을 유지한다면, 호스팅 서버의 IP 변화와 같이 관련된 모든 Zone이 수정되어야 하는 상황이 오지 않기를 기도하거나, 반나절을 편집기와 씨름할수 있는 끈기를 배워야할 것이다. 여기서 소개하는 팁은 사용자가 많은 호스팅 업체일수록 유용하게 활용될 수 있으며, 도메인 추가/수정/삭제에 드는 시간과 노력을 절약할 수 있을 것이다.
* named.boot (BIND)
primary netbsd.org zone-default
primary openbsd.org zone-default
.
primary freebsd.org zone-freebsd.org ; 별도의 추가 도메인이 필요한 경우
.
* named.conf (BIND-8)
zone "netbsd.org" IN { type master; file "zone-default"; };
zone "openbsd.org" IN { type master; file "zone-default"; };
.
zone "freebsd.org" IN { type master; file "zone-freebsd.org"; };
.
* zone-default
@ IN SOA ns.nemo.co.kr. hostmaster.nemo.co.kr. (
1999030601 ;serial
21600 ;Refresh ( 6 hours)
1800 ;Retry (30 minutes)
1209600 ;Expire (14 days)
86400) ;Minimum ( 1 day)
IN NS ns.nemo.co.kr.
IN NS ns2.nemo.co.kr.
IN A 192.168.1.39
IN MX 10 @
IN MX 20 mqueue.nemo.co.kr.
www IN CNAME @
telnet IN CNAME @
ftp IN CNAME @
mail IN CNAME @
pop IN CNAME @
news IN CNAME news.nemo.co.kr.
* zone-freebsd.org
$INCLUDE zone-default
ftp.kr IN A 147.46.102.39
www.kr IN CNAME @
4-11. Name Server 구동
네임서버를 구동하기 위한 설정이 마무리되었다. 관련 파일들이 준비되었음을 확인한 후, 네임서버를 구동하자. 일련의 과정은 다음과 같다.
* NS.nemo.co.kr
# ls /etc/named.conf # BIND 부트 파일
/etc/named.conf
# ls /var/named/ # Zone 데이터베이스 파일 확인
named.root
zone-0.0.127.in-addr.arpa
zone-79.105.210.in-addr.arpa
zone-nemo.co.kr
# /usr/sbin/named # 네임 데몬 구동 (Solaris: /usr/sbin/in.named)
# ps ax | grep named # 프로세스 동작 확인 (Solaris: ps -e | grep in.named)
254 ? S 0:00 named
* NS2.nemo.co.kr (BIND)
# ls /etc/named.boot # BIND 부트 파일
/etc/named.boot
# ls /var/named/ # Zone 데이터베이스 파일 확인
named.root
zone-0.0.127.in-addr.arpa
# ndc start # ndc(Name Daemon Control)가 설치되어 있을 경우
Name Server Started
# ndc status
254 ? S 0:00 named
# ls /var/named/ # Primary의 Zone 전송여부 확인
named.root
sec-79.105.210.in-addr.arpa
sec-nemo.co.kr
zone-0.0.127.in-addr.arpa
4-12. Name Server 동작 확인
여기에선 [그림 3]의 가상 네트워크 구성도에 따른 설정을 다루었지만, 기본적으로 필요한 부분은 모두 적용되어 있으므로 실제 네트워크에 적용할 때에도 같은 느낌으로 설정하면 된다. 다음과 같이 타 네임서버를 통해 질의를 던져봄으로써, Namespace 가지상에 잘 연결되어 있음을 확인하자.
$ nslookup power.nemo.co.kr ns.nemo.co.kr # Primary 동작 확인
Server: ns.nemo.co.kr
Address: 0.0.0.0
Name: power.nemo.co.kr
Address: 192.168.1.103
$ nslookup power.nemo.co.kr ns2.nemo.co.kr # Secondary 동작 확인
Server: ns2.nemo.co.kr
Address: 192.168.1.3
Name: power.nemo.co.kr
Address: 192.168.1.103
$ nslookup power.nemo.co.kr ns.kornet.ne.kr # Namespace 링크 확인
Server: ns.kornet.nm.kr
Address: 168.126.63.1
Name: power.nemo.co.kr
Address: 192.168.1.103
위의 3가지 질의가 성공적으로 수행되었다면, 일단 네임서버가 정상적으로 운용된다고 생각해도 좋다. 확실히 하기 위해선, 로그파일 분석을 통해 Zone 데이터베이스 구성상의 오류와 BIND의 동작 상태를 살펴보아야 한다.