DNSサーバ(BIND)

DNSサーバは、IPアドレスとDomainネームを結びつけるためのサーバである。 しかし、インターネット上には、無数の名前が流れているため、一つのサー バがすべての名前を解決していたら大変なので、分散して管理するように なっています。 また、CACHE機能もあり、一度サーバで解決した名前はそれ以後一定の間 CACHE内にあるので解決も早くなる。

このサーバでの基本的な方針は、自分のローカルネットワークから尋ねら れた場合のみに動き、ローカルネットの情報のみだけはこのサーバで返答 し、それ以外は、この上位のサーバ(プロバイダのDNS)に尋ねて答えると 言う形をとる。

DNSサーバのソフトはDHCPと同じで ISC(Internet Software Consortium) と言うところから出ている。

もどる

ダウンロードとインストール

2001.08.12現在の最新バージョンは、9.1.3である。 ここ のあたりからソースをダウンロードすることができる。 Vine Linux2.1では、8.2.3が、RedHat Linux7.1では9.1.0がインストール されている。 設定自体はそれほど変わらない。

ソースをダウンロードした場合は、

$ cd /usr/local/src
$ gtar xvfz /usr/local/src/bind-9.1.3.tar.gz
$ cd bind-9.1.3
$ ./configure
$ make
$ su
passward XXXXXX
# make install
	
これで出来上がりです。 ただし、ソースからコンパイルした場合は、 packageの管理とかが面倒くさいので RPMをどこからか拾ってくるのがよいでしょう。 rpmの探し方を見てみましょう。

関連ファイル

下記は、RedHat 7.2におけるファイルのおき場所である。 他のディストリビューションでは違う場所にあるかも知れない。

/etc/named.conf全体設定用ファイル
/var/named/named.ca全世界のNAMEサーバを利用するた めの設定
/var/named/named.locallocalhost用ファイル
/var/named/bigforest.hn.org.zone自ドメイン用ゾーンファイル
/var/named/192.168.1.0.revアドレス逆引き用ファイル

bindの設定

BINDの全体設定ファイルは、/etc/named.confにある。 以下に設定を示す。ゾーンデータのドメイン名は、絶対表記では最後に 「.」がつく。そうしないと相対表記になってしまう。
つまり、「dns」は「dns.bigforest.hn.org.」とお なじである。これを付けわすれないように注意する。

# file: named.conf
options {
	#ゾーンファイルの場所を設定する。
	directory "/var/named";
	#もし、自DNSで見付からなかったときに探す
 	forwarders{ 
		xxx.xxx.xxx.xxx; providerのファーストネームサーバ
		yyy.yyy.yyy.yyy; providerのセカンドネームサーバ
	};
};
#世界のDNSを設定する。
zone "." {
	type hint;
	file "named.ca"; 
};
#自ドメインのゾーンファイルを指定する。
zone "bigforest.hn.org." {
	type master;
	file "bigforest.hn.org.zone";
};
#ローカルの設定をする。
zone "0.0.127.IN-ADDR.ARPA." {
	type master;
	file "named.local";
};
#自ドメインの逆引きファイルを指定する。
zone "1.168.192.IN-ADDR.ARPA." {
	type master;
	file "192.168.1.0.rev";
};
	
forwardで自サーバに情報が無かった場合の問い合わせ先を設定する。

世界のネームサーバ(/var/named/named.ca)

;s 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  .  "
;       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/named.local)

$TTL 86400
@	IN      SOA     bigforest.hn.org. root.bigforest.hn.org. (
                        2001101300  ; serial
                        3600    ; refresh every 1 hours
                        3600    ; retry after 1 hour
                        3600000 ; expire after 1000 hours
                        2419200 ; default ttl is 10 hours
                        )
        IN      NS      bigforest.hn.org.
;
1       IN      PTR     localhost.

	

つづいて、ゾーンファイル(/var/named/bigforest.hn.org.zone)の設定を する。

; $Id:$
; file: bigforest.hn.org.zone
$TTL 86400
;
@	IN	SOA	yari.bigforest.hn.org.	root.bigforest.hn.org. ( 
	2001081200	;Serial
	10800	;Refresh
	1800	;Retry
	4320000	;Expire
	86400	);Minimum
;;;;	NS and MX servers
	IN	NS	yari.bigforest.hn.org.
	IN	MX	10 yari.bigforest.hn.org.
;;;;	A RR of NS and MX
yari.bigforest.hn.org.	IN	A	192.168.1.1
www			IN	CNAME	yari.bigforest.hn.org.
mail			IN	CNAME	yari.bigforest.hn.org.
dns			IN	CNAME	yari.bigforest.hn.org.
dhcp			IN	CNAME	yari.bigforest.hn.org.
	

@は、named.confで示したzone "この部分"{ に入っていたものが そのまま表される。

逆引きゾーンの設定をする。

; $Id:$
; file: 192.168.1.0.rev
$TTL 86400
@	IN	SOA	yari.bigforest.hn.org.	root.bigforest.hn.org. ( 
	2001081200	;Serial
	10800	;Refresh
	1800	;Retry
	4320000	;Expire
	86400	);Minimum
;;;; DNS Server
	IN	NS	yari.bigforest.hn.org.
;;;; PTR of hosts in
1			IN	PTR	yari.bigforet.hn.org.
	

動作確認

○ nslookupを使って動作の確認をする。

$ nslookup yari.bigforest.hn.org
Server:         192.168.1.1
Address:        192.168.1.1#53

Name:   yari.bigforest.hn.org
Address: 192.168.1.1

$ nslookup 192.168.1.1
Server:         192.168.1.1
Address:        192.168.1.1#53

1.1.168.192.in-addr.arpa        name = yari.bigforet.hn.org.
	

以上のようにローカル内の名前参照ができればOKである。
(注)上記はbind-9.1.0での結果である。bind-8.x.xでは微妙に表示が変わる。

○ hostを使って確認する。

最近、nslookupを立ち上げると、

$ nslookup
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
>

どうやら、将来的には、nslookupはなくすかもしれないから dighostというコマンドを使えということらしい。 そこで、hostを使ってみる。(digも使ってみましたが、 逆引きのやり方分からなかったのと、 いろいろ表示がされるのでhostを使ってみる)

$ host www.yahoo.co.jp
www.yahoo.co.jp. has address 210.81.153.68
www.yahoo.co.jp. has address 210.81.153.69
www.yahoo.co.jp. has address 210.81.153.70
www.yahoo.co.jp. has address 210.152.236.111
www.yahoo.co.jp. has address 210.152.236.112
www.yahoo.co.jp. has address 210.152.236.113
www.yahoo.co.jp. has address 211.14.13.65
www.yahoo.co.jp. has address 211.14.13.66
www.yahoo.co.jp. has address 210.81.150.166

逆引きはそのまま、IPアドレスを打ち込めば良い。

$ host 210.81.150.166
166.150.81.210.in-addr.arpa. domain name pointer w14.yahoo.co.jp.
	

といった感じ表示される。使い勝手もnslookupとあまり変わらない。 -vオプションを付ければ、詳細に表示も行ってくれる。

$ host -v www.yahoo.co.jp
Trying "www.yahoo.co.jp."
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34710
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.yahoo.co.jp.               IN      A

;; ANSWER SECTION:
www.yahoo.co.jp.        179     IN      A       210.81.150.166
www.yahoo.co.jp.        179     IN      A       210.81.153.68
www.yahoo.co.jp.        179     IN      A       210.81.153.69
www.yahoo.co.jp.        179     IN      A       210.81.153.70
www.yahoo.co.jp.        179     IN      A       210.152.236.111
www.yahoo.co.jp.        179     IN      A       210.152.236.112
www.yahoo.co.jp.        179     IN      A       210.152.236.113
www.yahoo.co.jp.        179     IN      A       211.14.13.65
www.yahoo.co.jp.        179     IN      A       211.14.13.66

;; AUTHORITY SECTION:
yahoo.co.jp.            779     IN      NS      dnsn201.yahoo.co.jp.
yahoo.co.jp.            779     IN      NS      dnsg01.yahoo.co.jp.

;; ADDITIONAL SECTION:
dnsg01.yahoo.co.jp.     779     IN      A       211.14.12.10
dnsn201.yahoo.co.jp.    779     IN      A       202.229.198.120

Received 252 bytes from 192.168.1.1#53 in 63 ms

$ host -v 210.81.150.166
Trying "166.150.81.210.in-addr.arpa."
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55840
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;166.150.81.210.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
166.150.81.210.in-addr.arpa. 719 IN     PTR     w14.yahoo.co.jp.

;; AUTHORITY SECTION:
150.81.210.in-addr.arpa. 719    IN      NS      dnsu01.yahoo.co.jp.
150.81.210.in-addr.arpa. 719    IN      NS      auth100.ns.uu.net.
150.81.210.in-addr.arpa. 719    IN      NS      auth320.ns.uu.net.
150.81.210.in-addr.arpa. 719    IN      NS      dnsn201.yahoo.co.jp.

;; ADDITIONAL SECTION:
dnsu01.yahoo.co.jp.     867     IN      A       210.81.153.11
auth100.ns.uu.net.      1299    IN      A       198.6.1.202
auth320.ns.uu.net.      1525    IN      A       210.80.58.98
dnsn201.yahoo.co.jp.    867     IN      A       202.229.198.120

Received 234 bytes from 192.168.1.1#53 in 23 ms
	

ローカルのnameサーバ(192.168.1.1#53)が答えているのは、 前回の問い合わせ結果がcacheされているからである。

logの出力場所

logは、/var/log/messages(ディストリビューションによって違うかも)に 出力されている。 その中のnamed[xxxx]と書いてある行がそうである。

もどる


Kenji Ohmori
Last modified: Tue May 31 01:57:27 JST 2005