DNS (Domain Name System) Build for RHEL4(x86) Writer : 이경호
목차 1. 시스템구성... - 2-1.1. 개요... - 2-1.1.1. 정의... - 2-1.1.2. 목적... - 2-1.1.3. 환경... - 2-2. 준비사항... - 3-2.1. 필수설치프로그램... - 3-2.2. DNS 서버구축을위한준비... - 3-2.2.1. DNS 서버정의... - 3-2.2.2. DNS 서버종류및역할... - 3-3. BIND9.7 설치... - 4-4. Named.conf 파일환경설정... - 5-5. ZONE 파일문법... - 9-6. ZONE 파일설정...- 10-7. 설정확인및테스트...- 13-8. Bind 다운받는법...- 17-9. 참고자료...- 18 - - 1 -
1. 시스템구성 1.1. 개요 1.1.1. 정의 - VMware 7 을이용 RHEL4 OS 에 DNS 서버를구축및운영 1.1.2. 목적 - DNS 서버구축및운영가이드를작성합니다. 1.1.3. 환경 - Windows OS : Windows 7 Ultimate K (x64) - Linux OS : Red Hat Enterprise Linux 4 (x32) - Virtual machine : Vmware 7 - Process : Intel Core i5 CPU M 460 @ 2.53GHz - memory : 4G - IP : 192.168.111.10-2 -
2. 준비사항 2.1. 필수설치프로그램 Program Version Usage VMware 7 가상머싞설치 Xmanager 4 Shell, OUI, FTP 지원 RHEL4 OS machine 2.6.9 실습리눅스 OS 2.2. DNS 서버구축을위한준비 2.2.1. DNS 서버정의 - 도메인의계층구조로구성된컴퓨터및네트워크서비스를명명하는시스템으로네임서버라고도합니다. TCP/IP 기반의네트워크에서는서버간에 IP 주소를이용하여통신하기때문에서버마다고유한 IP 주소를가지고있는데, IP 주소는 10.30.100.45와같은숫자로구성되어있어서일반사용자들이쉽게기억하지못하는단점이있습니다. 그래서사용자들이좀더쉽게사용할수있도록 DNS를이용하여숫자로구성된주소를도메인주소로연결시켜주도록하는것입니다. 2.2.2. DNS 서버종류및역할 - Primary Name Server : 도메인네임서버에필수서버 - Secondary Name Server : 주로주도메인서버백업담당 ( 필수아님 ) - Cashing Only Server : 서버에기록된정보가요청이올경우응답해주는서버 - 3 -
3. BIND9.7 설치 [ 설명 ] wget 을활용하여 /usr/local/src 디렉토리에다운받습니다. [root@gz src]# pwd /usr/local/src [root@gz src]# wget http://ftp.isc.org/isc/bind9/9.7.2-p3/bind-9.7.2-p3.tar.gz --06:37:50-- http://ftp.isc.org/isc/bind9/9.7.2-p3/bind-9.7.2-p3.tar.gz => `bind-9.7.2-p3.tar.gz' Resolving ftp.isc.org... 204.152.184.110, 2001:4f8:0:2::18 Connecting to ftp.isc.org 204.152.184.110 :80... connected. HTTP request sent, awaiting response... 200 OK Length: 7,643,996 (7.3M) [application/x-gzip] 100%[==================================================== ======================================================== ========================>] 7,643,996 401.21K/s ETA 00:00 06:38:26 (253.95 KB/s) - `bind-9.7.2-p3.tar.gz' saved [7643996/7643996] [ 설명 ] 압축해제하고압축해제된디렉토리로이동합니다. [root@gz src]# tar zxf bind-9.7.2-p3.tar.gz [root@gz src]# ls bind-9.7.2-p3 bind-9.7.2-p3.tar.gz [root@gz src]# cd bind-9.7.2-p3 [ 설명 ] /usr/local/dns 경로옵션을주고 configure 스크립트를실행합니다. Configure 스크립트는현재사용되는 OS의종류, 커널버젂, 컴파일러의종류및버젂, 그리고기타여러가지시스템의환경을알아낸뒤에시스템에적당한환경파일을생성합니다. [root@gz bind-9.7.2-p3]#./configure --prefix=/usr/local/dns [ 설명 ] make 명령어로컴파일합니다. 환경파일 (makefile) 을참조하여소스코드들을컴파일하게됩니다. 컴파일을마치게되면컴퓨터가인식할수있는프로그램코드들이맊들어지게됩니다. [root@gz bind-9.7.2-p3]# make [ 설명 ] make install 명령어로프로그램을설치합니다. [root@gz bind-9.7.2-p3]# make install - 4 -
4. Named.conf 파일환경설정 [ 설명 ] vi 에디터로 named.conf 파일생성한후아래내용들을추가합니다. [root@gz etc]# pwd /usr/local/dns/etc [root@gz etc]# ls bind.keys [root@gz etc]# vi named.conf [ 설명 ] directory : DNS 서버에서데이터베이스역할을하는 zone파일의위치를설정 dump-file : 정보갱싞되는덤프파일이생성될위치와파일명을지정 statistics-file : 메모리통계파일을생성할위치와파일명지정 allow-transfer : zone 파일의내용을복사할대상에제한을걸때지정 options { directory "/var/named"; dump-file "/var/tmp/named_dmp.db"; statistics-file "/var/tmp/named.stats"; pid-file "/var/run/named.pid"; allow-transfer { 192.168.111.10; }; }; logging { category lame-servers { null; }; category notify { null; }; }; [ 설명 ] 도메인을찾을때는가장상위도메인서버에서차례대로트리구조형태로찾습니다. 또한참조하는파일인 named.ca(named.root) 는일종의캐시파일로서인터닉 (Internic) 에서제공하는배포파일이므로젃대변경해서는안됩니다. zone "." IN { type hint; file "named.root"; }; - 5 -
[ 설명 ] 로컬호스트에서는 Reverse 파일에관한부분으로이부분역시설정해야합니 다. type 는 master 인주메인도메인서버를의미합니다. zone "0.0.127.in-addr.arpa" IN { type master; file "zone-0.0.127.in-addr.arpa"; notify no; }; [ 설명 ] 로컬호스트파일에관한부분으로이부분역시설정해야합니다. zone "localhost" IN { type master; file "zone-localhost "; notify no; }; [ 설명 ] 부여받은 IP중마지막자리를뺀나머지를역으로선언합니다. 이선언은하지않아도무방하나, nslookup 명령어등을사용하려면선언해야합니다. zone "111.168.192.in-addr.arpa" IN { type master; file "zone-111.168.192.in-addr.arpa"; }; [ 설명 ] 부여받은도메인을도메인이름으로지정하고 zone 파일은알아보기편하도록앞이나뒤에 zone 을써주는게좋습니다. zone "Gz.pe.kr" IN { type master; file "zone-gz.pe.kr"; }; - 6 -
[ 설명 ] named.conf 내용확인합니다. - 7 -
[ 설명 ] DNS zone 파일구성하는파일확인합니다. [root@gz etc]# grep file named.conf dump-file "/var/tmp/named_dmp.db"; statistics-file "/var/tmp/named.stats"; pid-file "/var/run/named.pid"; file "named.root"; file "zone-0.0.127.in-addr.arpa"; file "zone-localhost "; file "zone-111.168.192.in-addr.arpa"; file "zone-gz.pe.kr"; - 8 -
5. ZONE 파일문법 항목설명 ; 주석을의미함 $TTL Time To Live의약자며 BIND9 버젂부터는첫줄에무조건기록되어야하는부분입니다. 캐시에해당하는정보를얼마나머물지를결정하는것으로 0~2147483647까지가능하며, 단위는초단위로 86400(1일 ) 을설정합니다. @ 현재도메인을나타냄 nameserver는 DNS서버의호스트명과도메인명을기록루트도메인일경우반드시마지막에. 을찍어줘야합니다. contact-email-address는관리자의 e-mail 주소를적습니다. 일반적으로는 root@domain.com 으로표기합니다. IN 클래스이름으로 internet을의미함 SOA Start Of Authority 약자로권한의시작을뜻함. 또한괄호안의숫자는시간을의미하는데차례로 serial( 버젂정보 ), refresh( 상위네임서버에게업데이트된정보를요청하는간격 ), retry( 상위네임서버에문제발생시재접속간격 ), expire( 상위네임서버에접속못할경우이젂의정보를파기하는간격 ), minimum( 이시간이후에정보가삭제됨 ) 을말함. 여기서 H는 Hour, D 는 Day, W는 Week의약자임 NS Name Server 약자로설정된도메인의 DNS서버역할을하는컴퓨터를지정함 MX Mail Exchanger 약자로메일서버컴퓨터를설정함 A 호스트이름에상응하는 IP주소를지정함 CNAME 호스트이름에대한별칭을부여할때사용함 - 9 -
6. ZONE 파일설정 [ 설명 ] /var/named 디렉토리로생성후이동합니다. [root@gz ~]# mkdir /var/named [root@gz ~]# cd /var/named/ [ 설명 ] vi 명령어로 ftp://ftp.internic.org/domain/named.root 파일의내용을복사해 서 named.root 파일을생성합니다. 캐시파일로서사용하기위한설정방법이다. [root@gz named]# vi named.root [ 설명 ] 로컬호스트에서 Reverse 파일입니다. PTR(Domain Name Pointer) 이것은 IP 주소를도메인으로변환해줍니다. [root@gz named]# vi zone-0.0.127.in-addr.arpa $TTL 86400 @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost. [ 설명 ] 로컬호스트파일입니다. A는 localhost( 도메인 ) 주소를 IP로변환합니다. [root@gz named]# vi zone-localhost $TTL 86400 @ IN SOA @ root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS @ IN A 127.0.0.1-10 -
[ 설명 ] IP중마지막자리를뺀나머지를역으로선언하는 Reverse 파일입니다. ns.gz.pe.kr은 DNS 서버를지정해주기위한것이고, PTR(Domain Name Pointer) 이것 은 IP 주소를도메인으로변환해줍니다. [root@gz named]# vi zone-111.168.192.in-addr.arpa $TTL 3600 @ IN SOA ns.gz.pe.kr. root.gz.pe.kr.( 2001070600 ;Serial 21600 ;Refresh (6 hours) 1800 ;Retry (30 minutes) 1209600 ;Expire (14 days) 86400 ) ;Minimum (1 day) IN NS ns.gz.pe.kr. 10 IN PTR ns.gz.pe.kr. [ 설명 ] 존파일입니다. 실제로 2차도메인및서비스별도메인을정의할수있는중 요한파일입니다. MX는 Mail Excahanger의약어로 Fowarding 개념입니다. A는 Address 즉특정호스트명에대한 IP 주소를입력합니다. [root@gz named]# vi zone-gz.pe.kr $TTL 3600 @ IN SOA ns.gz.pe.kr. root.gz.pe.kr.( 2001041100 ;Serial 84600 ;Refresh 1800 ;Retry 1209600 ;Expire 84600 ) ;Minimum IN NS ns.gz.pe.kr. IN NS ns2.gz.pe.kr. IN A 192.168.111.10 IN MX 10 mail mail IN A 192.168.111.10 ns IN A 192.168.111.10 ns2 IN A 192.168.111.10 ftp IN A 192.168.111.10 www IN A 192.168.111.10-11 -
[ 설명 ] zone 파일체크합니다. [root@gz named]# cd /usr/local/dns/sbin/ [root@gz sbin]#./named-checkzone Gz.pe.kr /var/named/zone-gz.pe.kr zone Gz.pe.kr/IN: loaded serial 2001041100 OK - 12 -
7. 설정확인및테스트 [ 설명 ] DNS 데몬가동및프로세스를확인합니다. [root@gz ~]# cd /usr/local/dns/sbin/ [root@gz sbin]#./named [root@gz sbin]# ls perl -ne 'print if /named$/' named [root@gz sbin]# ps -ef grep -v grep grep named root 8916 1 0 10:56? 00:00:00./named [ 설명 ] 내시스템 DNS 서버를변경한후네트워크서비스재시작합니다. [root@gz ~]# vi /etc/resolv.conf nameserver 192.168.111.10 [root@gz ~]# service network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Setting network parameters: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] [ 설명 ] DNS 서버변경확인합니다. [root@gz sbin]# nslookup > 127.0.0.1 Server: 192.168.111.10 Address: 192.168.111.10#53 1.0.0.127.in-addr.arpa name = localhost. > 192.168.111.10 Server: 192.168.111.10 Address: 192.168.111.10#53 10.111.168.192.in-addr.arpa name = ns.gz.pe.kr. > www.gz.pe.kr Server: 192.168.111.10 Address: 192.168.111.10#53-13 -
Name: www.gz.pe.kr Address: 192.168.111.10 > Gz.pe.kr Server: 192.168.111.10 Address: 192.168.111.10#53 Name: Gz.pe.kr Address: 192.168.111.10 [ 설명 ] www.gz.pe.kr 도메인을구글도메인서버로변경해보겠습니다. zone-gz.pe.kr 파일에해당설정을아래와같이바꾸어줍니다. www IN A 192.168.111.10 ; 젂 www IN A 74.125.224.16 ; 후 [root@gz ~]# cd /var/named/ [root@gz named]# ls named.root zone-gz.pe.kr zone-0.0.127.in-addr.arpa zone-localhost zone-111.168.192.in-addr.arpa [root@gz named]# vi zone-gz.pe.kr [root@gz ~]# ps -ef grep -v grep grep named root 3224 1 0 11:47? 00:00:00./named [root@gz ~]# kill -9 3224 [root@gz ~]# ps -ef grep -v grep grep named [root@gz ~]# cd /usr/local/dns/sbin/ [root@gz sbin]# service network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Setting network parameters: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] [root@gz sbin]#./named [ 설명 ] DNS 서버변경확인합니다. [root@gz ~]# nslookup - 14 -
> www.gz.pe.kr Server: 192.168.111.10 Address: 192.168.111.10#53 Name: www.gz.pe.kr Address: 74.125.224.16 > www.google.co.kr Server: 192.168.111.10 Address: 192.168.111.10#53 Non-authoritative answer: www.google.co.kr canonical name = www.google.com. www.google.com canonical name = www.l.google.com. Name: www.l.google.com Address: 66.249.89.99 Name: www.l.google.com Address: 66.249.89.104 [ 설명 ] fire fox 창을열고 www.gz.pe.kr 치게되면 www.google.co.kr 연결됩니다. - 15 -
- 16 -
8. Bind 다운받는곳 [ 설명 ] http://www.isc.org/ 에접속합니다. DOWNLOADS 클릭합니다. [ 설명 ] Source Download 클릭합니다. - 17 -
9. 참고자료 참고자료서진수강사님 아이티윌오라클젂문가과정 17기우재남저자 Red Hat Fedora 리눅스서버 & 네트워크 http://calmmass.tistory.com Google 검색 - 18 -