도메인을 설정하는 간단한 방법
이 절을 시작하기 전에 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를 실제로 운영할 때는 편리하지만 사적인 연습에는
이 기능을 꺼야할 것이다. 우리의 연습으로 인터넷을 오염시킬 수는 없지 않은가?
지금까지 사용한 도메인도 완전히 가상이고, 그 주소들도 실제로 사용하는 주소가 아니다. 실제 도메인의 예는 다음 절을 참조하라.