이 문서를 작성하면서 나는 내가 엄청난(?) 자만에 빠져있었다는 걸 깨닫게 되었다. 대부분의 리눅서들이 공감하듯이 네임(DNS)서버는 네트워크에 있어서 매우 중요한 서버이다. 왜냐하면 거의 대부분의 인터넷 서비스를 모두 네임서버를 거쳐서 제공되기 때문이다. 비록 나의 문서를 보고 많은 사람들이 도움이 되었으면 하는 마음 간절하다.
필자의 상황
나는 도메인은 없고 달랑 IP만 있는 동아리 방에 있다. 지금 내가 하고 싶은 것은 도메인을 하나 사서, 다른 컴퓨터에다가 이름을 지어주고 싶다. 여기서는 단순한 도메인 포워딩이 아닌 메일서버를 운영할 수 있는 서브 도메인 자체를 주고 싶다.
고민 끝에 나는 hslilo.co.kr 이라는 도메인을 샀다. 참고로 IP는 210.119.108.177다.
☞ 내가 원하는 것
210.119.108.178 (네임서버) | 이미 도메인(hslilo.co.kr)이 등록이 되어 있다. | ||
210.119.108.177 | IP만 있고 도메인이 없다. 차후에 fat81.hslilo.co.kr로 줄 예정이다. | ||
210.119.108.176 | IP만 있고 도메인이 없다. 차후에 say.hslilo.co.kr로 줄 예정이다. |
☞ 주의 할 점
처음 도메인을 등록하면, 네임 서버를 어떤 것으로 할지를 정해주어야 한다. 만일 나의 경우처럼 네임서버를 만들어 운영한다면, 자기가 만든 네임서버로 지정해주어야 한다. 하지만, 만일 그렇지 않다면, 도메인 등록업체의 네임서버를 지정해준다. 네임서버를 바꾸는 데, 시간이 걸린다. 도메인마다 다를 수 있지만, 필자의 경우는 하루가 걸렸다.
설치 및 설정하기
나는 bind-9.1.2 을 레드햇 8.0에 소스로 설치했다. 설치 부분은 다른 문서를 참고하기 바란다.
설치를 마쳤다면 이제는 가장 중요한 설정을 잡아보자!
/etc/rndc.conf
------------------------------------------ options { default-server localhost; default-key "key"; }; server localhost { key "key"; }; key "seckey" { algorithm hmac-md5; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; ---------------------------------------------------
/etc/named.conf
--------------------------------------------------- options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; controls { inet * port 1500 allow { any; } keys { "seckey"; }; }; key "seckey" { algorithm hmac-md5; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; zone "hslilo.co.kr" IN { type master; file "hslilo.host"; notify no; allow-update { key "seckey"; }; }; zone "108.119.210.in-addr.arpa" IN { type master; file "db.108.119.210"; notify no; allow-update { key "seckey"; }; }; ---------------------------------------------------
/var/named/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 ------------------------------------------
/var/named/localhost.zone
------------------------------------------ $TTL 86400 @ IN SOA localhost. root.localhost. ( 2001070301 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum ; IN NS localhost. IN A 127.0.0.1 ---------------------------------------------------
/var/named/named.local
--------------------------------------------------- $TTL 86400 @ IN SOA localhost. admin.localhost. ( 2001070301 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. ; 1 IN PTR localhost. ---------------------------------------------------
/var/named/db.108.119.210
--------------------------------------------------- $TTL 86400 $ORIGIN 108.119.210.in-addr.arpa. @ IN SOA ns.hslilo.co.kr. admin.hslilo.co.kr. ( 2001070304 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.hslilo.co.kr. 178 IN PTR ns.hslilo.co.kr. 177 IN PTR fat81.hslilo.co.kr. 176 IN PTR say.hslilo.co.kr. ---------------------------------------------------
/var/named/hslilo.host
--------------------------------------------------- $TTL 86400 $ORIGIN 108.119.210.in-addr.arpa. @ IN SOA ns.hslilo.co.kr. admin.hslilo.co.kr. ( 2001070304 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.hslilo.co.kr. 178 IN PTR ns.hslilo.co.kr. 177 IN PTR fat81.hslilo.co.kr. 176 IN PTR say.hslilo.co.kr. ---------------------------------------------------
느낀 점
아무리 잘 안다고 자부한다는 것도, 직접 실전에서 해보지 않았다면, 모를일이다 ㅡ.ㅡ;
이번 기회를 통해서 DNS에 대해서 다시 한번 공부하게 되는 계기가 된 것 같다.
☞ 위에서 도메인 등록업체에서 내가 산 도메인 네임의 네임서버를 내가 만든 서버로 바꾸어 준 뒤, 하루(필자의 경우)정도 시간을 소요했다. 그리고 나서 bind을 시작시켜보자!
테스트는 간단히 nslookup 명령어로 확인해보자!
가장 간단한 방법은 다른 네트워크에 있는 사람에게 부탁하여 테스트를 해보는 것이다.
중요한 것은 다른 네트워크에서도 내가 지정해준 호스트 네임으로 접속이 가능한지 여부이기 때문이다.
#vi /etc/resolv.conf --------------------------------------------------- nameserver 210.119.108.178 <-- 네임서버 자신 nameserver 134.75.122.2 <-- 학교 네임서버 ---------------------------------------------------