도메인을 설정하는 간단한 방법
이 절을 시작하기 전에 DNS가 어떻게 동작하는지 약간의 이론을 설명하겠다.
읽어 두면 많은 도움이 되기 때문에 계속 읽는 것이 좋다.
읽고 싶지 않더라도 대충 훑어 보기는 해야 한다.
어째든 named.conf
에 관한 내용부터는 자세히 읽어서 완전히 이해해야 한다.
DNS는 계층적인 시스템이다. 최상위 계층은 `.
'으로 적고 `루트'로 발음한다.
`.' 아래로 ORG, COM, EDU, NET 같은 최상위 도메인(TLDs: Top Level
Domains)이 있다.
어떤 컴퓨터를 찾을 때, 쿼리는 최상위 계층에서부터 시작하여 하위 계층으로
찾아 내려 간다. prep.ai.mit.edu
를 찾는 경우 사용자의 네임 서버는
edu 도메인을 담당하는 네임 서버를 찾아야 한다. 그래서 .
서버에서 질의하게
되고 그러면 .
서버는 edu 도메인 담당 서버들의 목록을 넘겨 준다. (이미
.
서버에 대해서는 사용자의 네임 서버가 알고 있다. 왜냐하면,
root.hints
파일에서 명시해 주었기 때문이다.)
$ nslookup
Default Server: localhost
Address: 127.0.0.1
루트 서버에 질의 시작
> server c.root-servers.net.
Default Server: c.root-servers.net
Address: 192.33.4.12
쿼리 유형을 NS로 설정 (name server records):
> set q=ns
edu에 관해 질의
> edu.
여기에서 마지막 칸의 .이 중요한데, . 아래에 있는 edu 도메인에 대해 질의하고 있음을 뜻한다. (이렇게 함으로써 검색 범위를 축소한다.)
edu nameserver = A.ROOT-SERVERS.NET
edu nameserver = H.ROOT-SERVERS.NET
edu nameserver = B.ROOT-SERVERS.NET
edu nameserver = C.ROOT-SERVERS.NET
edu nameserver = D.ROOT-SERVERS.NET
edu nameserver = E.ROOT-SERVERS.NET
edu nameserver = I.ROOT-SERVERS.NET
edu nameserver = F.ROOT-SERVERS.NET
edu nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET internet address = 198.41.0.4
H.ROOT-SERVERS.NET internet address = 128.63.2.53
B.ROOT-SERVERS.NET internet address = 128.9.0.107
C.ROOT-SERVERS.NET internet address = 192.33.4.12
D.ROOT-SERVERS.NET internet address = 128.8.10.90
E.ROOT-SERVERS.NET internet address = 192.203.230.10
I.ROOT-SERVERS.NET internet address = 192.36.148.17
F.ROOT-SERVERS.NET internet address = 192.5.5.241
G.ROOT-SERVERS.NET internet address = 192.112.36.4
위의 결과로 *.root-servers.net
이 edu.
담당 서버임을
알 수 있다. 이제 계속해서 c
서버에게 질의할 수 있다.
이번에는 어느 서버가 mit.edu.
도메인을 담당하는지
알아 보자. 계속해서 아래와 같이 mit.edu.
을 입력한다.
> mit.edu.
Server: c.root-servers.net
Address: 192.33.4.12
Non-authoritative answer:
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
mit.edu nameserver = STRAWB.mit.edu
Authoritative answers can be found from:
W20NS.mit.edu internet address = 18.70.0.160
BITSY.mit.edu internet address = 18.72.0.3
STRAWB.mit.edu internet address = 18.71.0.151
steawb
, w20ns
와 bitsy
서버가 mit
를 담당한다.
그 중 하나를 선택하여 ai.mit.edu
에 대해 질의해 보자.
> server W20NS.mit.edu.
호스트명은 대소문자를 구별하지는 않는다. 다만 마우스로 화면을 긁어 붙여서 이렇게 보인다.
Server: W20NS.mit.edu
Address: 18.70.0.160
> ai.mit.edu.
Server: W20NS.mit.edu
Address: 18.70.0.160
Non-authoritative answer:
ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu nameserver = TRIX.AI.MIT.EDU
ai.mit.edu nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu nameserver = LIFE.AI.MIT.EDU
ai.mit.edu nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu nameserver = MINTAKA.LCS.MIT.EDU
Authoritative answers can be found from:
AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36
위의 결과에서 museli.ai.mit.edu
가 ai.mit.edu
담당
네임 서버 중 하나임을 알 수 있다. 마지막으로 아래와 같이
질의해 보자.
> server MUESLI.AI.MIT.EDU
Default Server: MUESLI.AI.MIT.EDU
Address: 128.52.39.7
네임 서버를 찾았으므로 이제 쿼리 유형을 바꿔서 prep.ai.mit.edu
에 관한
모든 사항을 질의해 보자.
> set q=any
> prep.ai.mit.edu.
Server: MUESLI.AI.MIT.EDU
Address: 128.52.39.7
prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix
prep.ai.mit.edu
inet address = 18.159.0.42, protocol = tcp
ftp telnet smtp finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu nameserver = beet-chex.ai.mit.edu
ai.mit.edu nameserver = alpha-bits.ai.mit.edu
ai.mit.edu nameserver = mini-wheats.ai.mit.edu
ai.mit.edu nameserver = trix.ai.mit.edu
ai.mit.edu nameserver = muesli.ai.mit.edu
ai.mit.edu nameserver = count-chocula.ai.mit.edu
ai.mit.edu nameserver = mintaka.lcs.mit.edu
ai.mit.edu nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu internet address = 128.52.32.60
beet-chex.ai.mit.edu internet address = 128.52.32.22
alpha-bits.ai.mit.edu internet address = 128.52.32.5
mini-wheats.ai.mit.edu internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu internet address = 128.52.39.7
count-chocula.ai.mit.edu internet address = 128.52.38.22
mintaka.lcs.mit.edu internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80
이렇게 해서 .
로부터 시작해서 도메인 네임을 담당하는 전단계의 네임
서버들을 성공적으로 찾았다. 다른 서버를 사용하지 않고 여러분의 DNS
서버를 사용했다면 여러분의 named는 당연히 그 모든 정보들을 보관해 두었을
것이다. 그리고 당분간은 같은 질의를 하지 않을 것이다.
많이 거론되지는 않지만 중요한 도메인이 in-addr.arpa
이다.
이 도메인 역시 정상 도메인을 구성한다.
in-addr.arpa
는 호스트의 주소를 알고 있을 때 그 이름을
알려준다. 여기서 주의해야 할 점은 in-addr.arpa
도메인에서는
ip 숫자들이 역순으로 사용한다는 것이다. 192.128.52.43 컴퓨터의 주소를
알고 있는 경우, prep.ai.mit.edu
의 예처럼 'named'는 arpa. 서버를
찾는다. 그 다음으로 in-addr.arpa.
서버를 찾고,
192.in-addr.arpa.
서버를 찾은 다음,
128.192.in-addr.arpa.
서버를 찾아서 52.128.192.in-addr.arpa.
서버를
찾는다. 그리고는 43.52.128.192.in-addr.arpa.
에 해당하는 항목을 찾는다.
똑똑하죠?(그렇다고 말하길... ) 숫자를 역순으로 사용하는 것은
처음 2년 정도는 혼란스러울 수 있다.
사실 필자는 지금까지 거짓말을 했다. DNS는 저자가 이야기한 글자 그대로 작동하지는 않는다. 그렇지만 그 의미는 충분하다.
이제는 간단하게라도 한번 도메인을 설정해 보자. linux.bogus라는 도메인을 정하고 그기에 속한 컴퓨터들의 이름을 정의할 것이다. 어느 누구도 혼동하지 않도록 실제로는 존재하지도 않는 도메인을 사용할 것이다.
시작하기 전에 하나 더: 모든 문자를 호스트명으로 사용할 수 있는 것은 아니다. 영문자: a-z, 숫자: 0-9, 그리고 '-' (dash) 문자만 사용할 수 있다. 이 문자들을 명심하라. 대문자나 소문자나 DNS에게는 마찬가지다. 그래서 pat.uio.no은 Pat.UiO.No와 동일하다.
named.conf
에서 아래 부분 설정에 대한 것은 이미 설명했다.
zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; };
이 파일에서 도메인 네임의 마지막에 `.'이 없음에 유의하자.
위의 설정 중 첫번째 라인은 0.0.127.in-addr.arpa
존(zone)에 대한
정의임을 뜻하고, 두번째 라인인 이 서버가 0.0.127.in-addr.arpa
존의
마스터 서버임을 뜻하며, 마지막 라인은 호스트명과 IP 주소 사이의 매핑 정보가
ps/127.0.0
파일에 저장되어 있음을 뜻한다.
ps/127.0.0
파일에 대해서는 이미 설명하였다. 내용은 다음과
같다.
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost.
위의 named.conf 파일과는 대조적으로 이 파일에서는
완전한 도메인명(full domain name)의 끝에는 모두 `.
'이 있음에 유의하자.
Some people
like to start each zone file with a $ORIGIN
directive, but
this is superfluous. The origin (where in the DNS hierarchy it
belongs) of a zone file is specified on the zone section of the
named.conf
file, in this case it's 0.0.127.in-addr.arpa
.
이 `존(zone) 파일'에는 `resource records' (RRs)가 3개 있다. SOA, NS, 그리고 PTR이다. SOA는 `Start Of Authority'의 축약어이다. `@'은 origin을 뜻하는 특수문자이다. 이 파일에 대한 `도메인' 항목이 0.0.127.in-addr.arpa 이므로 첫줄의 의미는 다음과 같다.
0.0.127.in-addr.arpa. IN SOA ...
NS는 네임 서버 RR이다. 이 줄에는 처음에 '@' 문자가 없다. 바로 위에서 '@' 문자로 시작한 줄이 있으므로 이를 암묵적으로 따른다. 타수도 줄일겸.. 그러므로 NS 줄은 다음과 같다.
0.0.127.in-addr.arpa. IN NS ns.linux.bogus
0.0.127.in-addr.arpa
도메인의 네임 서버가 ns.linux.bogus
임을
다른 DNS들에게 알려 준다. 'ns'가 네임 서버의 이름으로 관례처럼 쓰인다.
그러나 웹서버의 이름이 관례적으로 www.something이듯 다른 이름을 사용하는
것도 무방하다.
마지막으로 PTR 항목은 0.0.127.in-addr.arpa
서브넷에서 주소가 1인
호스트, 즉 127.0.0,1의 이름이 localhost
임을 뜻한다.
SOA 항목은 존 파일의 머리말로 각 존 파일마다 꼭 하나씩, 첫줄에 반드시
있어야만 한다. 이 항목은 현재 설정하고 있는 Primary 네임 서버의 이름은
무엇인지 (ns.linux.bogus
), 관리자는 누구인지,
(hostmaster@linux.bogus
), 존 파일은 버전이 어떻게 되는지 (serial: 1),
캐시 설정과 secondary DNS 서버에 관한 내용을 설정한다.
남은 항목들은 refresh, retry, expire, 그리고 minimum인데, 이 문서와 동일한
값으로 설정하면, 크게 신경쓰지 않아도 잘 작동할 것이다.
이제 ndc restart
명령으로 named를 재시작하고 nslookup으로
지금까지 설정한 것을 시험해 보자.
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> 127.0.0.1
Server: localhost
Address: 127.0.0.1
Name: localhost
Address: 127.0.0.1
위에서 IP 127.0.0.1에 매핑된 호스트명 localhost
를 찾는데 성공했다.
굿 이제 named.conf
에 존(zone)을 새로 추가하여 우리의 주목적인 linux.bogus
도메인을 설정해 보자.
zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; };
named.conf
파일에서 도메인 네임 마지막에 `.
'이 없다는 것에
주의하도록 한다.
linux.bogus 존 파일에 100% 가상 데이타를 삽입할 것이다.
; ; Zone file for linux.bogus ; ; The full zone file ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds ; NS ns ; Inet Address of name server MX 10 mail.linux.bogus ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger ; localhost A 127.0.0.1 ns A 192.168.196.2 mail A 192.168.196.4
SOA 항목에서 2가지를 주의해야 한다. ns.linux.bogus는 A 레코드가 있는 실제 컴퓨터이어야 한다. SOA 레코드에서 언급된 컴퓨터를 다른 컴퓨터로 알리아싱하는 CNAME 레코드가 있으면 규칙에 어긋난다. 이름이 `ns'일 필요는 없으며 다른 호스트명을 사용해도 무방하다. 다음으로, hostmaster.linux.bogus는 hostmaster@linux.bogus로 읽으면 된다. DNS 관리자의 메일 알리아스나 메일박스를 설정하는 곳이다. 도메인 관련 메일은 모두 이 주소로 배달된다. 이름이 `hostmaster'일 필요는 없다. 전자우편 주소라면 어떤 것을 사용해도 상관없지만, `hostmaster'를 사용하는 것도 나쁘지 않다.
이 파일에는 MX(Mail eXchanger)라는 새로운 RR 유형이 있다.
someone@linux.bogus
의 주소로 들어오는 메일을 처리할 메일 시스템을 지정한다.
위의 예에서 someone@linux.bogus
주소로 수신되는 메일은
mail.linux.bogus
또는 mail.friend.bogus
로 보낸다. 호스트명 바로 앞에
있는 숫자는 MX 항목의 우선 순위을 뜻한다. 메일은 이 숫자가 가장 낮은(여기서는
10) RR에 메일을 보낸다. 여기서 실패하면 숫자가 그 다음으로 낮은
두번째 메일 서버 즉, 우선 순위가 20일 mail.friend.bogus
으로 보낼 것이다.
ndc restart
로 'named'를 재시작한 다음 nslookup으로 결과를 확인하자.
$ nslookup
> set q=any
> linux.bogus
Server: localhost
Address: 127.0.0.1
linux.bogus
origin = ns.linux.bogus
mail addr = hostmaster.linux.bogus
serial = 199802151
refresh = 28800 (8 hours)
retry = 7200 (2 hours)
expire = 604800 (7 days)
minimum ttl = 86400 (1 day)
linux.bogus nameserver = ns.linux.bogus
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus preference = 20, mail exchanger = mail.friend.bogus
linux.bogus nameserver = ns.linux.bogus
ns.linux.bogus internet address = 192.168.196.2
mail.linux.bogus internet address = 192.168.196.4
위 결과를 잘 살펴보면 버그를 찾을 수 있을 것이다.
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
위 라인은 틀렸다. 다음과 같이 출력되어야 정상이다.
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
여러분이 좀 더 잘 이해할 수 있도록 이 부분에 실수를 일부러 넣어 두었다. ;-) 존 파일에서 다음 라인을 찾도록 하자.
MX 10 mail.linux.bogus ; Primary Mail Exchanger
마지막에 점이 빠졌다. 고치지 않으면 `linux.bogus'가 붙어 나오게 된다. 존
파일에서 호스트명이 점으로 끝나지 않으면 linux.bogus.linux.bogus
처럼
origin이 첨부된다. 그러므로
MX 10 mail.linux.bogus. ; Primary Mail Exchanger
또는
MX 10 mail ; Primary Mail Exchanger
로 설정하는 것이 올바르다. 저자는 타이핑 수가 적은 후자를 더 좋아한다.
bind를 잘 아는 사용자들 중에는 여기에 동의하지 않는 사람도 있고,
동의하는 사람도 있다.
지역 파일에서 도메인은 `.
'으로 끝나게 완전히 적거나 아니면
디폴트인 origin에 해당하는 부분을 포함하지 말아야 한다.
강조하건데 named.conf 파일에서는 도메인 네임의 끝에 `.
'이
없어야 한다.
`.'이 있고 없음이 얼마나 일을 꼬이게 만들고 사람들을 혼란스럽게
만드는지 상상도 못할 것이다.
여기 저자의 견해가 반영된 새로운 존 파일이 있다. 자료가 약간 더해졌다.
; ; Zone file for linux.bogus ; ; The full zone file ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds ; TXT "Linux.Bogus, your DNS consultants" NS ns ; Inet Address of name server NS ns.friend.bogus. MX 10 mail ; Primary Mail Exchanger MX 20 mail.friend.bogus. ; Secondary Mail Exchanger localhost A 127.0.0.1 gw A 192.168.196.1 HINFO "Cisco" "IOS" TXT "The router" ns A 192.168.196.2 MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 2.0" www CNAME ns donald A 192.168.196.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 2.0" TXT "DEK" mail A 192.168.196.4 MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.2" ftp A 192.168.196.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 2.1.86"
위에 새로운 RR이 꽤 많이 있다. HINFO(Host INFOrmation)은 두 부분으로 이로어져 있는데 각각을 큰따옴표로 둘러 싸는 것이 좋다. 앞부분은 컴퓨터 하드웨어 또는 CPU 정보이다. 두번째 부분은 소프트웨어 또는 OS 정보이다. `ns' 컴퓨터는 Pentium CPU에 Linux 2.0을 사용한다. CNAME(Canonical NAME)은 컴퓨터 하나에 이름을 여러 개 부여하는 방법이다. 그러므로 www은 ns에 대한 알리아스이다.
CNAME 레코드의 용법은 약간 논쟁의 여지가 있다. 그러나 다음 규칙을 따르면 안전하다. MX, CNAME, SOA 항목은 CNAME 레코드와는 절대로 연결하지 말아야 하고, A 항목이 있는 가진 다른것과 연결하여야 한다. 즉, 다음은 잘못 설정한 것이다.
foobar CNAME www ; NO!
아래와 같이 설정하는 것이 올바르다.
foobar CNAME ns ; Yes!
또한 CNAME은 전자우편 주소로 바람직한 호스트명이 아니라고 가정하는 것이
안전하다. 즉, webmaster@www.linux.bogus
는 규정에 어긋난 전자우편
주소이다. 이 가정을 따르지 않으면 비록 동작은 하겠지만 메일 관리가
상당히 어려워진다. 이를 막으려면 A 레코드(또는 MX 같은 레코드)를
대신 사용한다.
www A 192.168.196.2
많은 bind 전문가들은 CNAME을 사용하지 말 것을 권한다. 그러므로 사용하지 않는 것에 대해 아주 신중하게 검토해 보라.
그러나 여러분도 알듯, 이 하우투도 그렇고 많은 사이트가 이 규칙을 따르지는 않는다.
ndc reload
로 데이터베이스를 새로 읽어 들이자. ndc reload
를 실행하면
named는 파일들을 다시 읽는다.
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> ls -d linux.bogus
이는 모든 레코드가 출력되어야 함을 뜻한다 . 결과는 다음과 같다.
[localhost]
$ORIGIN linux.bogus.
@ 1D IN SOA ns hostmaster (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum
1D IN NS ns
1D IN NS ns.friend.bogus.
1D IN TXT "Linux.Bogus, your DNS consultants"
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
gw 1D IN A 192.168.196.1
1D IN HINFO "Cisco" "IOS"
1D IN TXT "The router"
mail 1D IN A 192.168.196.4
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "386sx" "Linux 1.0.9"
localhost 1D IN A 127.0.0.1
www 1D IN CNAME ns
donald 1D IN A 192.168.196.3
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "i486" "Linux 1.2"
1D IN TXT "DEK"
ftp 1D IN A 192.168.196.5
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "P6" "Linux 1.3.59"
ns 1D IN A 192.168.196.2
1D IN MX 10 mail
1D IN MX 20 mail.friend.bogus.
1D IN HINFO "Pentium" "Linux 1.2"
@ 1D IN SOA ns hostmaster (
199802151 ; serial
8H ; refresh
2H ; retry
1W ; expiry
1D ) ; minimum
결과가 위와 같다면 정상이다. 위 결과는 바로 존 파일과 비슷하게 보인다. www에 대해서는 무어라 말하는지 확인해 보자.
> set q=any
> www.linux.bogus.
Server: localhost
Address: 127.0.0.1
www.linux.bogus canonical name = ns.linux.bogus
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 192.168.196.2
달리 표현하자면, www.linux.bogus
의 실제 이름은
ns.linux.bogus
이다. 도한 ns에 대한 정보도 함께 반환해 주기
때문에 프로그램은 이 정보를 이용하여 ns(www이기도 함)에 접속할 수 있다.
이제 한 반 정도를 설명하였다.
이제 클라이언트 프로그램들이 linux.bogu 도메인 호스트들의 이름을 주소로 변환하여 원하는 컴퓨터에 접속할 수 있다. 그렇지만, 역변환 존이 설정되어야 DNS가 주소를 이름으로 변환할 수 있다. FTP, IRC, WWW 등 다양한 서버가 여러분의 컴퓨터와 통신을 허용할 것인지, 허용한다면 어떤 우선 순위를 줄 것인지 결정하는 데 바로 호스트명을 사용한다. 그러므로 역변환 존이 설정되어 있어야만 해당 도메인의 컴퓨터가 모든 인터넷 서비스를 완전하게 사용할 수 있다.
아래 내용을 named.conf
파일에 삽입하자.
zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; };
0.0.127.in-addr.arpa
과 동일하다. 내용도 비슷하다.
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Serial, todays date + todays serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR gw.linux.bogus. 2 PTR ns.linux.bogus. 3 PTR donald.linux.bogus. 4 PTR mail.linux.bogus. 5 PTR ftp.linux.bogus.
이제 당신의 named를 재시작(ndc restart
)하고 nslookup으로 지금까지
설정한 내용을 확인해 보자.
> 192.168.196.4 Server: localhost Address: 127.0.0.1 Name: mail.linux.bogus Address: 192.168.196.4
위와 같이 제대로 보이면, 확인삼아 전체를 덤프시켜 보자.
> ls -d 196.168.192.in-addr.arpa [localhost] $ORIGIN 196.168.192.in-addr.arpa. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum 1D IN NS ns.linux.bogus. 1 1D IN PTR gw.linux.bogus. 2 1D IN PTR ns.linux.bogus. 3 1D IN PTR donald.linux.bogus. 4 1D IN PTR mail.linux.bogus. 5 1D IN PTR ftp.linux.bogus. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum
와우, 성공이다!
여기에 보충해야 할 것이 약간 있다. 위의 예에서 사용된 IP 숫자들은 'private
nets' 블럭중에서 하나를 택한 것이다. 그러므로 인터넷에 물려서 공식적으로
사용되어서는 안된다. 그래서 HOWTO에서 예제로 사용하는 것은 안전하다.
두번째는 notify no;
줄이다. 이것은 'named'가 그 지역 파일들 중에서 하나가
갱신되었을 때 secondary(slave) 서버에게 알리지 않도록 한다. bind-8에서는
지역 파일이 갱신되었을 때 지역 파일에 나열된 NS 레코드의 서버에게 'named'가
알려줄 수 있다. 이 기능은 DNS를 실제로 운영할 때는 편리하지만 사적인 연습에는
이 기능을 꺼야할 것이다. 우리의 연습으로 인터넷을 오염시킬 수는 없지 않은가?
지금까지 사용한 도메인도 완전히 가상이고, 그 주소들도 실제로 사용하는 주소가 아니다. 실제 도메인의 예는 다음 절을 참조하라.