IT 정보/리눅스/LPIC

[리눅스/LPIC/LINUX자격증] 네임서버 설정

김윤석 2007. 12. 17. 15:25

[리눅스/LPIC/LINUX자격증]  네임서버 설정



1. BIND PACKAGE
- 홈 : http://www.isc.org/bind
- 필요한 패키지 : bind-8.2-7.i386.rpm
bind-devel-8.2-7.i386.rpm
bind-utils-8.2-7.i386.rpm
caching-nameserver-6.0-3.noarch.rpm
-BIND VERSION 확인 :
dig @네임서버명 txt chaos version.bind. | grep VERSION
예: dig @ns.nobreak.com txt chaos version.bind. | grep VERSION

- 설치 :# rpm -Uvh bind-* caching-nameserver-6.0-3.noarch.rpm
 
2. 구성 : Primary, Secondary, Cache only server
- Primary server : 해당 도메인을 관리하는 주 네임서버
- Secondary : 특정 도메인에 대한 보조서버
- Cache only server :도메인에 대한 관리는 하지않고, 도메인 네임들에 대한 캐쉬만을 처리
[참고]
Secondary는 Primary에 문제가 생겼을 경우나 또는 부하를 분산시키기 위해 운용하며,여러개가 존재할 수 있다. 보통 작은 네트웍이라면 Primary만으로 관리가 가능하며,Secondary는 원칙적으론 Primary와 다른 네트웍에 위치시켜 Primary가 문제 발생시(정전이나 시스템 다운 등) 대비한다.
3./etc/named.conf 설정
bind 4.x 대에서는 /etc/named.boot 파일 이었으나 8.x대로 버전이 올라가면서 파일명이 변경이 되었다. bind 4.x와 bind 8.x대의 설정중에 이 파일만이 달라졌다. bind 8.x named.conf 파일의 기본적인 구성은 bind 4.x대와 많은 부분이 비슷하고 여기에 추가 확장이 되었다. 이런 이유로 파일 구성 형식이 달라졌다. 그리고 4.x대의 부트 파일과의 혼동을 막기 위해 named.conf로 파일명이 달라졌다.
3.1 Primary 네임서버 설정
 
3.1.1 /etc/named.conf
 // bind 8.대에서는 주석을 '//' 사용하며 ';'은 라인의 끝을 표시한다.

도메인은 domain.com, (otherdomain.com)
IP를 101.102.103.104으로 가상으로 설정한다.

options { 
directory "/var/named"; => 설정파일이 위치할 디렉터리를 지정
allow-transfer{
 111.111.111.111;
 222.222.222.222;
 }; => named의 정보를 받아갈수 있게 허용한 호스트 세컨드리 네임서버를 지정해 주면 된다.
dump-file "/var/tmp/named_dump.db"; => named의 dump 파일을 생성하는 위치를 지정한다.
statistics-file "/var/tmp/named.stats"; => named의 통계 파일이 생성되는 위치를 지정한다.
$ kill -INT /var/run/named.pid로 네임서버가 캐쉬에 보관하고 있는 내용을
파일로 출력(dump) 한다. /var/tmp/named_dump.db 라는 이름으로 만들어진다.
메모리에 가지고 있는 모든 것이 파일로 만들어 진다.
pid-file "/var/run/named.pid"; => named의 pid위치
};
logging{
 category lame-servers{ null; };
 category cname{ null; };
 category response-checks{ null; };
 category notify{ null; };
} => 불필요한 정보를 로그파일에 남기지 않는다. /var/log/messages에 네임서버
관련으로 중요하지 않은 정보는 남기지 않는 것이 좋다.
zone "." {
 type hint;
 file "named.ca";
 }; => 루트 네임서버들에 대한 정보를 가지고 있는 파일을 지정
루트 네임서버들에 대한 캐쉬 파일이다.
이 파일은 스스로 만들 필요는 없고 이미 만들어져 있는 것을 가져오면 된다.
FTP.RS.INTERNIC.NET/domain/named.ca 파일을 가져오면 된다.
 
zone "0.0.127.in-addr.arpa" {
 type master;
 file "named.local";
 }; => 로컬 IP에 대한 정보를 담고 있다.
 
zone "domain.com" {
 type master;
 file "domain.zone";
 }; => 이 서버가 관리하는 도메인과 그 정보를 가지고 있는 파일
도메인이 domain.com 이고 그 도메인에 대한 정보가 domain.zone에 있다고 명시한다.
domain.zone 파일은 Forward Zone으로써 도메인에 대한 IP 정보를 가지고 있는 파일이다.
해당 도메인 네임을 => IP로 바꿔주는 역할을 한다.

한 네임서버에서 여러개의 도메인에 대한 처리가 가능할까? 당연히 가능하다.

 zone "otherdomain.com" {
 type master;
 file "otherdomain.zone";
 };
 
위 내용을 추가한후 otherdomain.zone 파일을 작성
 
zone "103.102.101.in-addr.arpa" {
 type master;
 file "named.rev";
 }; =>named.rev는 Reverse Zone으로써 이 서버가 관리하는 IP와 그 정보를 담당하는 파일
IP에 해당하는 => 도메인 네임을 찾아주는 역할

 
 

 
 
3.1.2 /var/named/domain.zone

@ IN SOA NS.domain.com. root.domain.com.
(
980901 ; Serial
10800 ; Refresh
3600 ; Retry
3600000 ; Expire
43200 ; Minimum
) "NS.domain.com." => 이 네임서버의 도메인명

"root.domain.com." => 관리자의 이메일 주소 ( @의 의미는 "domain.com."으로 사용되므로 root@domain.com으로 쓸수 없다)

Serial 번호 변경 : zone 파일의 내용을 수정했다면 번호를 변경해 준다

* 도메인 끝 " . " 을 반드시 확인할 것

 
IN A 101.102.103.104
IN NS NS.domain.com.
IN MX 0 mail.domain.com.

"IN NS NS.domain.com." => domain.com의 네임서버가 NS.domain.com이라고 알려주는 역할을 한다.
 
localhost IN A 127.0.0.1
@ IN A 101.102.103.104
ns IN A 101.102.103.104
www IN CNAME ns.domain.com.
mail IN CNAME ns.domain.com.
ns.money IN A 111.112.113.114
money IN NS ns.money.domain.com.
xtris IN CNAME ns.money.domain.com.
ns.sports IN A 121.122.123.124
sports IN NS ns.sports.domain.com.
dori IN A 112.152.23.124
ns.hot IN A 214.243.12.152
hot IN NS ns.hot.domain.com.
root IN CNAME ns.domain.com. " ns IN 101.102.103.104 " => ns만 적었다?! 실제 네임서버 에서는 ns.domain.com으로 인식을 한다. 이유는 @를 거쳤기 때문에 ns.domain.com으로 만들어 지는 것이다.

domain.com의 서브 도메인에서도 네임서버를 운영할 수 있게 하려면?
 IN A 111.112.113.114
 money IN NS ns.money.domain.com.
 과 같이 해주면 된다.

" root IN CNAME ns.domain.com. " =>
root IN A 101.102.103.104로 표시 하는 것과 같은 역할을 한다.
 
 
 
3.1.3. /var/named/named.rev
 
@ IN SOA ns.domain.com. root.domain.com.
 (
 980903 ; Serial
 28800 ; Refresh
 14400 ; Retry
 3600000 ; Expire
 43200 ; Minimum
)

 IN NS ns.otherdomain.com

1 IN PTR route.otherdomain.com
2 IN PTR ns.otherdomain.com
3 IN PTR user.otherdomain.com

 

 
 
3.1.4. /var/named/named.local
@ IN SOA localhost. root.localhost.
(
 980729 ; Serial
 28800 ; Refresh
 14400 ; Retry
 3600000 ; Expire
 86400 ; Minimum
)

 IN NS localhost.

1 IN PTR localhost.


# 위의 " 1 " 의 앞에 빈칸이 들어가선 안된다.
 
 
 
4.네임서버 재실행
# ndc start 를 입력하고 엔터를 누른다. 다른 옵션은 필요 없다. 잘 안돼면
#/usr/sbin/ndc start 를 실행한다..

# tail -f /var/log/messages 명령으로 내용을 확인할 수 있는데, 확인 결과가 아래와 같다면 정상이다. (`'는 다음줄과 연결 되었음을 뜻한다.)

Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb14 00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" (IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040 Feb 15 01:26:17 roke named[6092]: Ready to answer queries.
 
 
 
 + SOA
 도메인 정보에 대한 authority 를 지정한다.현재 Record 의 유형(type)을 지정

 + Serial (980901 ; Serial)
 이 정보의 버전을 나타낸다. secondary 서버에서 primary 서버의 데이타를
 가지고 올때 우선 primary 서버에 serial 번호를 달라고 요청을 하게 된다.
 이 시리얼 번호가 기존의 정보와 같다면 거기서 멈추고 버전이 높다면
 새로운 정보로 가지고 온다. 보통 알아보기 쉽게 날짜로 사용을 한다.

 + Refresh (10800 ; Refresh(6h) )
 secondary 측에서 새로운 정보를 요청 할 때까지의 시간을 지정한다.
 지정한 시간 이후에 secondary 서버에서는 primary 서버로 갱신된 정보가
 있는지를 문의하게 된다.

 + Retry (3600 ; Retry(15min) )
 재시도를 하는 시간을 지정해준다. primary 서버에 접속을 할수 없으면
 지정한 시간후에 다시 접속을 시도하게 된다.

 + Expire (3600000 ; Expire(7d) )
 일정기간 이상 primary 서버에 접속하지 못한다면 이전에 가져왔던 정보들을
 파기할 기간을 지정한다.

 + Menium TTL(Time to Live) (43200 ; Minimum(12h) )
 네임서버는 한번 찾았던 정보에 대해서 캐슁을 한다.
 위에서 약간 언급했던 부분인데 www.domain.com을 찾는 방법이 기억이 날것이다.
 브라우저의 요청 -> 최상위 네임서버 검색 -> ns.domain.com -> www.domain.com
 이런 식으로 돌아간다는 것을 기억해주기 바란다. 그럼 매번 이런 방법을
 거친다면 상당히 불편 할 것이다. 속도도 문제고 네트웍의 트래픽도 가중시킬
 것이고, 이래서 네임서버들은 한번 요청했던 정보를 저장하고 있다.
 이 시간이 짧으면 네임서버로 요청이 자주 들어올 것이고
 (동적 IP에 도메인을 부여하는 곳이 이 시간이 짧다.)
 시간이 길다면 오랫동안 정보가 저장이 되어 있기 때문에
 변경이 되었을 때 바로 적용이 안 되는 경우가 생길 수 있다.
 보통 하루정도의 시간을 두고 사용한다.

 + NS
 네임 서버를 지정할때 쓰인다.

 + A
 도메인명 -> IP 주소를 지정할때 쓰인다.

하나의 도메인에 여러 개의 IP를 주는 경우가 필요할 수 있다.
 웹 사이트에 너무 많은 사람이 접속한다거나 해서 시스템이 견디지 못할 경우
 여러 대의 서버를 두고 같은 이름으로 분산처리가 가능하다.

+ CNAME
 별명(alias)를 지정할때 쓰인다.
 

 + MX
 메일 익스체인져를 지정한다.
 어떤 역할을 하느냐 domain.com에서 사용자에게 이메일 계정을 준다고
 한다면 guest@domain.com 으로 메일이 가게 하려면 101.102.103.104번에 guest라는
 계정을 만들어야 한다. 그런데 메일서버를 다른 머신에서 처리하고 싶은 경우가
 있을 수 있다.사용자가 많다거나 해서 시스템의 부하를 분산시키려 한다면
 실제로는 mail.domain.com이 메일 송수신을 담당하게 하고 계정도 거기에
 있으면서 guest@domain.com으로 받을수 있게 해주는 역할을 한다.
 여러개의 설정도 가능하다.
 예) IN MX 0 mail.domain.com.
 IN MX 10 mail2.domain.com.
 IN MX 100 mail3.domain.com.
 정해진 차례대로 시도를 한다. 계속 실패를 하면 메일이 돌아갈것이고.
 
지금까지 레코더들은 필수적으로 사용되는 것이이었다. 자주 쓰이지 않지만
다음에 레코더들도 있다는 것을 알아두자.

 + HINFO(Host INFOrmation)
 두 개의 문자열(CPU 정보, OS정보)을 갖으며 시스템 정보를 나타낸다.
 문자열에 공백이 포함되어 있을 경우에는 반드시 큰따옴표를 사용하여야 한다.
 irc5 IN A 210.122.59.5
 IN HINFO "Alpha System ds20" "Linux For Alpha"
 

+ TXT
 텍스트 정보를 갖으며 문자열이 길다면 연속적으로 되어 사용될 수 있다.
irc5 IN TXT "DOMAIN IRC Server"
 IN TXT "Only Irc Serer"

+ RP(Responsible Person)
 RP는 담당자의 정보를 표시하는데, Email 주소(@를 도트로 치환한)와,
 담당자 정보(TXT 레코드를 갖는 도메인을 포인팅함)를 갖는다.
 HINFO를 포함한 몇몇 레코드는 보안을 이유로 자주 사용되지는 않는다.
 www IN RP root.domain.com. other.otherdomain.com

+ PTR
 IP -> 도메인명을 지정할때 쓰인다.
 이 파일은 zone 파일에 반대라고 생각하면 된다. 각 IP를 도메인명으로 변환해
 주는 역할이다. 이것은 설정을 안 하더라도 큰 문제가 되지는 않으나,
 ftp.uu.net같은 경우에 접속을 할 때 IP -> 도메인(리버스 매핑)이 안될 경우
 접속이 거부당한다. 보안을 중요시 하는곳 에선 보통 저런 검사과정을 거친다.




출처 : http://www.it-bank.or.kr/master/linux_main.htm