2.4 DNS(Bind)

(1) ソースファイルの準備
Unix上で動作するDNSとしては通常Bindを使用います。ここではBind 8.1.2を使用し、インストールおよび設定を行っています。まず、ソースファイルを入手します。本論文でのBindの入手先は雑誌の付録CD-ROMです。

(2) アーカイブファイルのコピー
CD-ROMを「/mnt/cdrom」にマウントします。
mount -t iso9660 /dev/cdrom /mnt/cdrom

(3) アーカイブファイルの展開
/usr/src# mkdir bind-8.1.2
/usr/src# cd bind-8.1.2
/usr/src/bind-8.1.2# tar xvzf ../bind-8.1.2-src.tar.gz

(4) Makeファイルの作成
・不要なファイルの削除
/usr/src/bind-8.1.2/src# make clean

以下のように表示されます。
/usr/src/bind8.1.2/src/include
make[1]: Entering directory `/usr/src/bind8.1.2/src/include'
/usr/src/bind8.1.2/src/include/arpa
make[2]: Entering directory `/usr/src/bind8.1.2/src/include/arpa'
rm -f *~ *.BAK *.CKP *.orig

・(中略)

make[2]: Entering directory `/usr/src/bind8.1.2/src/bin/nsupdate'
rm -f nsupdate nsupdate.o core .depend
rm -f *.BAK *.CKP *~ *.orig
make[2]: Leaving directory `/usr/src/bind8.1.2/src/bin/nsupdate'
rm -f *.BAK *.CKP *~ *.orig
make[1]: Leaving directory `/usr/src/bind8.1.2/src/bin'
rm -f .systype .settings

・依存関係記述ファイルの作成
/usr/src/bind-8.1.2/src# make depend

以下のように表示されます。
/usr/src/bind8.1.2/src/include
make[1]: Entering directory `/usr/src/bind8.1.2/src/include'
/usr/src/bind8.1.2/src/include/arpa
make[2]: Entering directory `/usr/src/bind8.1.2/src/include/arpa'
make[2]: Nothing to be done for `depend'.

・(中略)

/usr/src/bind8.1.2/src/bin/nsupdate
make[2]: Entering directory `/usr/src/bind8.1.2/src/bin/nsupdate'
mkdep -p -I../../include -I../../port/linux/include nsupdate.c
make[2]: Leaving directory `/usr/src/bind8.1.2/src/bin/nsupdate'
make[1]: Leaving directory `/usr/src/bind8.1.2/src/bin'

(5) バイナリの構築

・makeでコンパイル
/usr/src/bind-8.1.2/src# make

以下のように表示されます。
/usr/src/bind8.1.2/src/include
make[1]: Entering directory `/usr/src/bind8.1.2/src/include'
/usr/src/bind8.1.2/src/include/arpa
make[2]: Entering directory `/usr/src/bind8.1.2/src/include/arpa'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/src/bind8.1.2/src/include/arpa'
/usr/src/bind8.1.2/src/include/isc

・(中略)

gcc -O -g -o nsupdate nsupdate.o \
../../lib/libbind.a -lfl
make[2]: Leaving directory `/usr/src/bind8.1.2/src/bin/nsupdate'
make[1]: Leaving directory `/usr/src/bind8.1.2/src/bin'

※注意:コンパイル時にエラーがでればgcc のバージョンアップが必要となります。

(6) インストール
・make installでインストール
make install

以下のように表示されます。
/usr/src/bind8.1.2/src/include
make[1]: Entering directory `/usr/src/bind8.1.2/src/include'
/usr/src/bind8.1.2/src/include/arpa
make[2]: Entering directory `/usr/src/bind8.1.2/src/include/arpa'
set -x; for x in inet.h nameser.h nameser_compat.h; do \
install -c -m 444 $x /usr/local/bind/include/arpa/$x; \
done

・(中略)

install -c -m 755 ndc /usr/sbin/ndc
make[2]: Leaving directory `/usr/src/bind8.1.2/src/bin/ndc'
/usr/src/bind8.1.2/src/bin/nsupdate
make[2]: Entering directory `/usr/src/bind8.1.2/src/bin/nsupdate'
install -c -m 755 nsupdate /usr/bin/nsupdate
make[2]: Leaving directory `/usr/src/bind8.1.2/src/bin/nsupdate'
make[1]: Leaving directory `/usr/src/bind8.1.2/src/bin'

デフォルトでインストールされるパスを以下に示します。正常に起動しない場合に確認してください。

・/usr/local/bind/include/{arpa, isc, sys, net} ヘッダファイル群 
・/usr/local/bind/lib/libbind.a スタティック・ライブラリ 
・/usr/bin/addr ? 
・/usr/bin/nslookup named チェックツール 
・/usr/lib/nslookup.help nslookup のヘルプ 
・/usr/bin/dig ネームサーバーへ DNS 問い合わせのパケットを送信します 
・/usr/bin/dnsquery リゾルバを使ってネームサーバーへの問い合わせを行います 
・/usr/bin/host ネームサーバーを使ってホスト名の問い合わせを行います
・/usr/sbin/named named 本体 
・/usr/sbin/named-xfer ゾーン転送プログラム 
・/usr/sbin/ndc ネームサーバー制御インターフェース 
・/usr/bin/nsupdate 動的更新用ツール 

(7) 環境設定

・各種設定ファイル

PASS: /etc/named.conf
ファイル名: named.conf

・設定内容

options {
directory "/etc"; // use current directory
};
zone "." {
type hint; // what used to be called "primary" 
file "named.ca";
};
zone "localhost" {
type master; // what used to be called "primary" 
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" {
type master; // what used to be called "primary" 
file "named.local";
};
zone "oitalinux.or.jp" {
type master; // what used to be called "primary" 
file "oitalinux.or.jp.zone";
};
zone "0.254.169.in-addr.arpa" {
type master; // what used to be called "primary" 
file "0.254.169.rev";
};
PASS: /etc/localhost.zone
ファイル名: localhost.zone
@ IN SOA ホスト名.ドメイン名.. postmaster.ドメイン名. (
42 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

IN A 127.0.0.1
localhost.rev
@ IN SOA ホスト名.ドメイン名. postmaster.ドメイン名. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

IN NS eva11.eva.
IN PTR localhost.

PASS: /etc/xxx.zone(xxxは任意)
ファイル名:xxx.zone

zoneという拡張子のファイルを作成し、接続許可クライアントのIPアドレスを登録します。zoneファイルは正引きデータベースでドメインの中のホスト名からIPアドレスを取得するために使用します。

・設定例

@ IN SOA ホスト名.ドメイン名. postmaster.ドメイン名. (
42 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

IN MX 10 メールサーバ名.ドメイン名.
IN NS ネームサーバー名.ドメイン名.
localhost. IN A 127.0.0.1
ホスト1.ドメイン名. IN A 192.168.0.10
ホスト2.ドメイン名. IN A 

別名1.ドメイン名. IN CNAME ホスト1.ドメイン名.
別名2.ドメイン名. IN CNAME ホスト2.ドメイン名.

PASS: /etc/oitalinux_or_jp.zone
ファイル名:oitalinux_or_jp.zone

・実際に設定した項目

今回は2台のクライアントマシンのIPアドレスを登録しています。ファイル名にはドメイン名を使用しています。

@ IN SOA itono.oitalinux.or.jp. root.oitalinux.or.jp. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry 
3600000 ; Expire
86400 ) ; Minimum
IN NS oitalinux.or.jp. 
IN MX 10 itono.oitalinux.or.jp. 
Itono IN A 169.254.0.1 
Tnstyle IN A 169.254.0.199 
www IN CNAME itono.oitalinux.or.jp.
mail IN CNAME itono.oitalinux.or.jp.
# localhost IN A 127.0.0.1
PC0IIY02 IN A 169.254.0.5 

PASS: /etc/xxx.rev(xxxは任意)
ファイル名:xxx.rev

revという拡張子のファイルを作成し、接続許可クライアントのドメイン名を登録します。revファイルは逆引きデータベースでIPアドレスからドメインとホスト名を取得するために使用します。


・設定例

@ IN SOA ホスト名.ドメイン名. postmaster.ドメイン名. (
42 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

IN NS ネームサーバー名.ドメイン名.

10 IN PTR ホスト1.ドメイン名.
11 IN PTR ホスト2.ドメイン名.

ここで2台のクライアントマシンのドメイン名を登録しています。

PASS: /etc/0.254.169.rev 
ファイル名:0.254.169.rev

・設定項目
@ IN SOA itono.oitalinux.or.jp. root.oitalinux.or.jp. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS itono.oitalinux.or.jp. //DNSサーバーを指定
IN PTR oitalinux.or.jp. //ドメイン名を指定
IN A 255.255.255.0 //mask指定
1 IN PTR itono.oitalinux.or.jp. //自マシン名を指定

//以下に接続を許可するクライアント指定
199 IN PTR tnstyle.oitalinux.or.jp. 
5 IN PTR PC0IIY02.oitalinux.or.jp. 



外部と接続する場合は以下についても確認してください。これはjpnicの指定に基づいています。この設定により、jpnicで管理しているルートDNSサーバーに接続することができるようになります。

root.cache(jpnic指定)
; 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 

外部と接続するのでなく、組織内でのみ利用するような場合、このキャッシュファイルを使用しません。以下のダミーキャッシュを作成しましょう。

/etc/root.cache

; This file holds the information on root name servers needed to
; root.cache for vision.alphasystem.com 1996/12/29 A,hoshino
;
. 99999999 IN NS itono.oitalinux.or.jp.
itono.oitalinux.or.jp. 99999999 A 169.254.0.1
; End of File

(8) Bindの動作チェック

nslookupを使用してbindの動作確認をします。

[root@itono /root]# nslookup
Default Server: itono.oitalinux.or.jp
Address: 169.254.0.1

> 169.254.0.1
Server: itono.oitalinux.or.jp
Address: 169.254.0.1

Name: itono.oitalinux.or.jp
Address: 169.254.0.1

> itono.oitalinux.or.jp
Server: itono.oitalinux.or.jp
Address: 169.254.0.1

Non-authoritative answer:
Name: itono.oitalinux.or.jp
Address: 169.254.0.1

> itono
Server: itono.oitalinux.or.jp
Address: 169.254.0.1

Non-authoritative answer:
Name: itono.oitalinux.or.jp
Address: 169.254.0.1
> www.oitalinux.or.jp
Server: itono.oitalinux.or.jp
Address: 169.254.0.1

Non-authoritative answer:
Name: itono.oitalinux.or.jp
Address: 169.254.0.1
Aliases: www.oitalinux.or.jp



・hostsの設定
TurboLunuxではhostsを以下のNetwork Configuratorというアプリケーションで設定できます。

                                         図2.4.1 hostsの設定

(9) Bindの起動
・Bindの自動起動設定
# vi /etc/rc.d/rc.local 
/usr/local/bind/named/named 

各マシンのDNSは/etc/resolv.confを記述します。再設定後、再起動は必要となります。

(10) Bindの今後の展開
現段階では「バージョン9」の正式リリースが間近で、マルチプロセッサーの対応が盛り込まれているようです。インターネットの普及がますます広がり、DNSにも高速化をする必要が出てきたためです。今後のBindの展開としては、多国間に普及しているインターネットに対応するためマルチリンガル(多言語)サポートが大いに期待されるでしょう。水面下では既にマルチリンガル化の計画が進行しているようです。近い将来ドメインが「http://大分県情報サービス産業協会.団体.日本/」となることでしょう。