네임 서버란
솔직히 내가 여기서 네임서버에 대해서 잘못 얘기하는 것일 수도 있다. 100%로 믿지 말기를..(99% 믿어도 좋다…1%는 나도 장담 못함!!) 네임서버란!! 네임서버를 설명하기 위해서는 DNS란 것을 알야야 한다. 예를 들어 203.241.128.94는 컴퓨터가 이해하는 IP이지만 사람은 이를 일일이 외운다는 것은 정말 힘든 일이다. 그래서 사람들이 이해하기 쉽도록 myfeel.hoseo.ac.kr 과 같이 이름을 정해준 것을 말한다. 네임서버는 IP를 인간이 알기 쉽게 도메인네임으로 바꾸어 주는 서버라 하면 이해하기가 쉬울 것이다.
Bind 설치하기
네임서버를 구축하기 위해서는 bind가 반드시 필요하다. 될 수 있으면 최신버전을 받도록한다. 참고로 필자는 ftp://linux.sarang.net/mirror/network/daemon/isc/bind/src/ 여기서 받았다. 그리고 bind-src.tar.gz 파일을 받는다. 압축을 풀고 ./configure , make , make install을 해준다. 제대로 설치되었다면 /etc 디렉토리에다가 아래와 같이 named.boot, named.conf 파일을 만들어 준다. 설정은 아래와 같다. 그리고 /var/named 디렉토리에다 역시 아래와 같이 나머지 파일들을 만들어 준다. 만일 named 디렉토리가 없다면 만들어 주어야 한다.
설정하기
여기서는 내가 실제로 설정했던 설정 파일들을 예제로 들겠다. 아무래도 직접 사용했던 설정파일을 보는 게 가장 이해하기가 쉬울 것이다.
---------------------------named.boot------------------------------- ; ; caching only nameserver config ; directory /var/named cache . named.ca primary 0.0.127.in-addr.arpa named.local primary 128.241.203.in-addr.arpa zone-128.241.203 primary myfeel.hoseo.ac.kr zone-myfeel.hoseo.ac.kr -------------------------------------------------------------------
--------------------------named.conf-------------------------------- // generated by named-bootconf.pl options { directory "/var/named"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; }; // // a caching only nameserver config // zone "." { type hint; file "named.ca"; }; zone "0.0.127.in-addr.arpa" { type master; file "named.local"; }; zone "128.241.203.in-addr.arpa" { type master; file "zone-128.241.203"; }; zone "myfeel.hoseo.ac.kr" { type master; file "zone-myfeel.hoseo.ac.kr"; }; ----------------------------------------------------------
-----------------------named.ca---------------------------- ; this file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC registration services ; under anonymous FTP as ; file /domain/named.root ; on server FTP.RS.INTERNIC.NET ; -OR- under Gopher at RS.INTERNIC.NET ; under menu InterNIC Registration Services (NSI) ; submenu InterNIC Registration Archives ; file named.root ; ; last update: Aug 22, 1997 ; related version of root zone: 1997082200 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ;. 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; temporarily housed at NSI (InterNIC) ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10 ; ; housed in LINX, operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; temporarily housed at ISI (IANA) ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; housed in Japan, operated by WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File ----------------------------------------------------------------
----------------------named.local--------------------------------- @ IN SOA localhost. root.localhost. ( 1997022700 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; default_ttl ) IN NS localhost. 1 IN PTR localhost. -----------------------------------------------------------------
-----------------------zone-128.241.203----------------------------- @ IN SOA ns1.myfeel.hoseo.ac.kr. master.myfeel.hoseo.ac.kr. ( 1997022700 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; default_ttl ) IN NS ns1.myfeel.hoseo.ac.kr. 94 IN PTR myfeel.hoseo.ac.kr. 91 IN PTR info.hoseo.ac.kr. -------------------------------------------------------------------
------------------------zone-myfeel.hoseo.ac.kr------------------------ @ IN SOA ns1.myfeel.hoseo.ac.kr. master.myfeel.hoseo.ac.kr. ( 1997022700 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; default_ttl ) IN NS ns1.myfeel.hoseo.ac.kr. IN A 203.241.128.94 IN HINFO "x86 Pentium III Dual" "Wow Linux" IN MX 10 myfeel.hoseo.ac.kr. localhost IN A 127.0.0.1 ;ns IN CNAME @ ns1 IN CNAME @ ns2 IN A 211.180.229.51 --------------------------------------------------------------------
위와 같이 설정해 주었다면
#/usr/bin/named
실행시키고 nslookup을 실행시켜 제대로 설정이 되었는지 확인해보자!
'※ in-addr.arpa 란?'
솔직히 지금 글을 쓰고 있는 필자도 아직 잘 이해가 안가는 부분이다. 그래도 아는 한도내에서 설명하겠다. 부디 99% 믿기를…. 1%는.. 믿거나 말거나..
원래 네임서버의 역할은 클라이언트가 호스트네임을 물어보면 그에 맞는 IP를 반환해준다. (zone-linux.com, zone-fat81.com 파일을 참조한다.) 하지만 네임서버는 이와 반대되는 기능도 서비스 한다. IP주소를 호스트네임으로 바꾸어 준다.(named.local, zone-128.241.203 파일을 참조한다.) 다시 말해, IP에 대해 해당 도메인을 역으로 찾을 수 있도록 하는 서비스이다. 아래의 예를 보자!!
$ nslookup -type=ns 79.105.210.in-addr.arpa (C Class 210.105.79.x를 할당 받았을 경우) Server: ns.nobreak.com Address: 0.0.0.0 79.105.210.in-addr.arpa nameserver = ns.nobreak.com 79.105.210.in-addr.arpa nameserver = ns2.nobreak.com ns.nobreak.com internet address = 210.105.79.2 ns2.nobreak.com internet address = 210.105.79.3
위의 예를 보면 알 수 있듯이 네임서버를 이용할 때 호스트네임으로 IP를 알고 싶을 때는 'yahoo.co.kr' 처럼 차례대로 입력해주면 된다는 것을 알수 있다. 하지만 IP주소로 호스트네임을 역으로 찾기 위해서는 IP주소를 반대로 적어주어야 한다. 그래서 위와 같이 반대로 적어주고 뒤에다 in-addr.arpa를 적어준다. 참고로 위의 예는 210.105.97.x 에서의 네임서버를 찾아서 출력하고 있다.