DNSサーバの設定方法



rpmfind.netからダウンロードしてきた最新版のrpmファイルをインストールします。
  # rpm -ivh bind-8.2.2_P5-9vl1.i386.rpm
  # rpm -ivh bind-utils-8.2.2_P5-9vl1.i386.rpm
      (これはインストールしておいた方がいいかもしれません。)
  # rpm -ivh bind-devel-8.2.2_P5-9vl1.i386.rpm
      (これはインストールしておく必要はないかもしれません。)
DNS HOWTOを参照するのもいいでしょう。

注意
ホスト名に使用できる文字は英数字と−(ダッシュ)のみです。

DNSサーバで使用するファイルを設定するため/etc/named.confを作成します。

ここで、ホスト名をfirewall、ドメイン名をspace.local、IPアドレス(サブネット)を192.168.0.0/24とします。
  # vi /etc/named.conf
	options {
 		directory "/var/named";
		allow-transfer {
			***.***.***.***; localhost;←  ゾーン転送の制限
		}                                       ***.***.***.***のみ
	}                                                localhost(デバッグ用)
	zone "." {
		type hint;
		file "named.ca";
	}
	zone "localhost" {			
		type master;		
		file "localhost";		├これは無くても問題ありません
	}				
	zone "0.0.127.in-addr.arpa" {
		type master;
		file "0.0.127.in-addr.arpa";
	}
	zone "space.local" {
		type master;
		file "space.local";
	}
	zone "0.168.192.in-addr.arpa" {
		type master;
		file "0.168.192.in-addr.arpa";
		notify no;  ←  インターネットに迷惑をかけないため
                                  ゾーンファイルのどれかが更新されても、
                                  その情報をセカンダリ(スレーブ)サーバに伝えないようにする。
	}
ftp://rs.internic.net/domain/から最新のnamed.caをダウンロードし、/var/namedにコピーします。

localhost(ループバック正引き)ゾーンファイルの作成
  # vi /var/named/localhost
	$TTL 3D
	@		IN	SOA	firewall.space.local. dnsmaster.space.local.	(
			2001071701	;Serial
			28800		;Refresh
			14400		;Retry
			3600000		;Expire
			86400 )		;Default TTL
	;← (これは無くても問題ありません)
			IN	NS	localhost.
			IN	NS	143.90.***.**. ←  これは無くても問題ありません
			IN	NS	143.90.***.***.←  これは無くても問題ありません
	localhost.	IN	A	127.0.0.1
	;←  これは無くても問題ありません
Serial numberは2001年7月17日に1回目の編集を行ったという意味です。DNSを何らかの作業により変更した場合はSerial numberを一つ以上増やしてください。この場合、Serial numberの変更はlocalhostだけでなく、0.0.127.in-addr.arpa、space.local、0.168.192.in-addr.arpaの全てのファイルを同じものに変更し、DNSを再起動してください。
firewall.space.local、dnsmaster.space.local、localhost、143.90.***.**、143.90.***.***の後ろには必ず.(ドット)をつけること。

0.0.127.in-addr.arpa(ループバック逆引き)ゾーンファイルの作成
  # vi /var/named/0.0.127.in-addr.arpa
	$TTL 3D
	@		IN	SOA	firewall.space.local. dnsmaster.space.local.	(
			2001071701	;Serial
			28800		;Refresh
			14400		;Retry
			3600000		;Expire
			86400 )		;Default TTL
	;←  これは無くても問題ありません
			IN	NS	localhost.
			IN	NS	143.90.***.**. ←  ODN プライマリDNS
			IN	NS	143.90.***.***.←  ODN セカンダリDNS
	1		IN	PTR	localhost
	;←  これは無くても問題ありません
firewall.space.local、dnsmaster.space.local、localhost、143.90.***.**や143.90.***.***の後ろには必ず.(ドット)をつけること。

space.local(正引き)ゾーンファイルの作成
  # vi /var/named/space.local
	$TTL 3D
	@		IN	SOA	firewall.space.local. dnsmaster.space.local.	(
			2001071701	;Serial
			28800		;Refresh
			14400		;Retry
			3600000		;Expire
			86400 )		;Default TTL
	;←  これは無くても問題ありません
				IN	NS	firewall.space.local.
				IN	NS	143.90.***.**. ←  ODN プライマリDNS
				IN	NS	143.90.***.***.←  ODN セカンダリDNS
	;←  これは無くても問題ありません
	space.local		IN	MX 10	firewall.space.local.
	;←  これは無くても問題ありません
	localhost			IN	A	127.0.0.1
	win2kserver		IN	A	192.168.0.1
	firewall			IN	A	192.168.0.254
	;←  これは無くても問題ありません
	pass0			IN	CNAME	firewall.space.local.
	www			IN	CNAME	firewall.space.local.
	ftp			IN	CNAME	firewall.space.local.
	mail			IN	CNAME	firewall.space.local.
	;←  これは無くても問題ありません
firewall.space.localはAレコードを持った実際のマシンでなければなりません。また、CNAMEレコードのマシンをSOAレコードのマシンとして記述することは許されていません。
firewall.space.local、dnsmaster.space.local、localhost、143.90.***.**や143.90.***.***の後ろには必ず.(ドット)をつけること。

0.168.192.in-addr.arpa(逆引き)ゾーンファイルの作成
  # vi /var/named/0.168.192.in-addr.arpa
	$TTL 3D
	@		IN	SOA	firewall.space.local. dnsmaster.space.local.	(
			2001071701	;Serial
			28800		;Refresh
			14400		;Retry
			3600000		;Expire
			86400 )		;Default TTL
	;←  これは無くても問題ありません
			IN	NS	firewall.space.local.
			IN	NS	143.90.***.**. ←  ODN プライマリDNS
			IN	NS	143.90.***.***.←  ODN セカンダリDNS
	;←  これは無くても問題ありません
	1		IN	PTR	win2kserver.space.local.
	254		IN	PTR	firewall.space.local.
	;←  これは無くても問題ありません
firewall.space.local、dnsmaster.space.local、localhost、143.90.***.**や143.90.***.***の後ろには必ず.(ドット)をつけること。

resolv.confの編集
  # vi /etc/resolv.conf
  search		space.local
  nameserver	192.168.0.254
  nameserver	143.90.***.**
  nameserver	143.90.***.***
searchは自分で決めたドメイン名を入力。
nameserverの最初には、DNSサーバに割り当てたIPアドレス。
nameserverの2番目には、ODNのプライマリDNSのIPアドレス。
nameserverの3番目には、ODNのセカンダリDNSのIPアドレス。

DNS(bind)の起動
  # /etc/rc.d/init.d/named start
として起動します。
  # more /var/log/messages
として、DNSが問題なく動作しているか確認してください。正常に起動されていれば以下のようになります。
Jul 19 20:40:05 firewall named[10908]: hint zone "" (IN) loaded (serial 0)
Jul 19 20:40:05 firewall named[10908]: master zone "0.0.127.in-addr.arpa" 
                                       (IN) loaded (serial 2001071801)
Jul 19 20:40:05 firewall named[10908]: space.local:15: data "localhost" 
                                       outside zone "space.local" (ignored)
Jul 19 20:40:05 firewall named[10908]: master zone "space.local" 
                                       (IN) loaded (serial 2001071801)
Jul 19 20:40:05 firewall named[10908]: master zone "0.168.192.in-addr.arpa" 
                                       (IN) loaded (serial 2001071801)
Jul 19 20:40:05 firewall named[10908]: listening on [127.0.0.1].53 (lo)
Jul 19 20:40:05 firewall named[10908]: listening on [192.168.0.254].53 (eth0)
Jul 19 20:40:05 firewall named[10908]: listening on [10.0.0.254].53 (eth1)
Jul 19 20:40:05 firewall named[10908]: Forwarding source address is [0.0.0.0].1039
Jul 19 20:40:05 firewall  7月 19 20:40:05 named: named startup succeeded
Jul 19 20:40:05 firewall named[10909]: group = 25
Jul 19 20:40:05 firewall named[10909]: user = named
Jul 19 20:40:05 firewall named[10909]: Ready to answer queries.
.(ドット)が抜けていたり、設定が間違っていたりすると何かしらのエラーが出力されます。その場合はファイルをよく確認してみてください。

nslookupによる動作確認
(digコマンドも利用可能です。使用方法はDNS HOWTOを参照してください。)

nslookupコマンド入力
  # nslookup firewall.space.local
  Server: firewall.space.local
  Address: 192.168.0.254
  Aliases: 
  Name: 
  Address: 
2行目にはDNSサーバ名が表示されます。
3行目にはDNSサーバに割り当てたIPアドレスが表示されます。

サーバ起動時にDNSを自動起動させる

chkconfig、linuxconf、setupを使う方法があります。今回はchkconfigを使用します。
現在の自動起動状況を確認します。
  # chkconfig --list named
2行目にはDNSサーバ名が表示されます。すると、以下のように表示されます。
  named		0:オフ  1:オフ  2:オフ  3:オフ  4:オフ  5:オフ  6:オフ
X Windowを利用しているのであれば3及び5をオンするように設定します。こちらの環境ではX Windowを利用していませんので、3のみオンにしたいと思います。
  # chkconfig named on
これでサーバを再起動しても自動的にDNSは起動するようになります。念のため先ほどの方法で確認してください。
  # chkconfig --list named
  named		0:オフ  1:オフ  2:オフ  3:オン  4:オフ  5:オフ  6:オフ

何度も書きましたがファイルを編集した場合は必ず各ゾーンファイルのシリアル番号を元の番号より増やしてから再起動するようにしてください。

/var/log/messagesに表示されるログについて

Jul 19 20:04:44 firewall named[10755]: Zone "0.0.127.in-addr.arpa" (file 0.0.127.in-addr.arpa): N o default TTL ($TTL ) set, using SOA minimum instead
Jul 19 20:04:44 firewall named[10755]: Zone "space.local" (file space.local): No default TTL ($TT L ) set, using SOA minimum instead
Jul 19 20:04:44 firewall named[10755]: Zone "0.168.192.in-addr.arpa" (file 0.168.192.in-addr.arpa ): No default TTL ($TTL ) set, using SOA minimum instead

各ゾーンファイルに$TTL **が書かれていないとき表示される。


named[453]: Lame server on 'www.tsx.to' (in 'tsx.to'?): [64.65.0.244].53 'ns7.tafeu.net'
named[453]: ns_forw: query(www.tsx.to) All possible A RR's lame

このメッセージは、named が、ネームサーバからあるドメインについて、「このサーバがそのドメインのネームサーバだよ」 と教わったのに、問い合わせてみると、そのネームサーバからは、「そのドメインについては何も知らないよ」、 と返答されるということを示しています。
これは「レイム・デリゲーション」として知られており、どこにもない参照のことです。レイム・サーバが自分のものでないのなら、それについてあなたができることは何もありません。こちらからできることはなにもありませんので、無視してかまいません。


Jul 19 13:43:58 firewall named[10104]: Cleaned cache of 1 RRset
Jul 19 13:43:58 firewall named[10104]: USAGE 995517838 995460238 CPU=0.49u/0.2s CHILDCPU=0u/0s
Jul 19 13:43:58 firewall named[10104]: NSTATS 995517838 995460238 A=243 NS=50 SOA=51 SRV=15 ANY=2
Jul 19 13:43:58 firewall named[10104]: XSTATS 995517838 995460238 RR=251 RNXD=242 RFwdR=250 RDupR=0 RFail=0 RFErr=0 RErr=0 RAXFR=0 RLame=0 ROpts=0 SSysQ=192 SAns=301 SFwdQ=58 SDupQ=17 SErr=2 RQ=361 RIQ=0 RFwdQ=0 RDupQ=2 RTCP=0 SFwdR=250 SFail=0 SFErr=0 SNaAns=49 SNXD=198

これらは統計情報なので、必要なければ無視してかまいません。1時間に一回ログに吐き出されます。