トップページに戻る


top_iconBINDによる内部向けDNSの構築
最終更新日:2012.8.9

ローカルエリアネットワーク内のサーバーを名前解決できるようにするため、BINDを導入します。

前提

このページでは、以下のネットワークと環境を想定してDNSサーバーに登録します。

ローカルエリアネットワーク: 192.168.1.0/24
ルーター: 192.168.1.1
NTPサーバー: 192.168.1.55
Webサーバー: 192.168.1.51
BIND: 192.168.1.52
内部用ドメイン: local.tooyama.org

このページを参考にする場合は、ドメイン名とLANのIPなどを環境に合わせてください。
※ドメインが必要な場合は、VALUE-DOMAINなどから購入してください。

BINDの導入

(1)必要なコンポーネントをいれます

[root@centosvm2 ~]# yum -y install bind bind-chroot caching-nameserver
[root@centosvm2 ~]# rpm -q bind bind-chroot caching-nameserver
bind-9.3.6-4.P1.el5_5.3
bind-chroot-9.3.6-4.P1.el5_5.3
caching-nameserver-9.3.6-4.P1.el5_5.3

BINDの設定

(2)設定ファイルをコピーします

[root@centosvm2 ~]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf

(3)設定ファイルの権限を修正します

[root@centosvm2 ~]# chown root:named /var/named/chroot/etc/named.conf

(4)BINDの設定ファイルを編集します

[root@centosvm2 ~]# vi /var/named/chroot/etc/named.conf

1.optionsセクション内に待ち受けるIPアドレスを設定します

options {
	listen-on port 53 { 192.168.1.52; 127.0.0.1; };

2. optionsセクション内に"localnets;"を追記して、LAN内からはアクセスできるように設定します

	allow-query       { localhost; localnets; };
	allow-query-cache { localhost; localnets; };

Tips: BIND設定時の注意

外部と接続されている環境で外部からアクセスできる必要がない場合は

	allow-query       { any; };
	allow-query-cache { any; };
などと決して設定しないこと。

3.optionsセクション内に"forwarders"項目を追加して、このDNSで解決できない場合に使われる上流DNSのIPを指定します

options {
(略)
	forwarders{
		192.168.1.1;
	};

4."view localhost_resolver"にzoneファイルを指定します

view localhost_resolver {
		match-clients      { localhost; };
		match-destinations { localhost; };
		recursion yes;
		include "/etc/named.rfc1912.zones";
		include "/etc/named.local.tooyama.org.zone";
};

5."view localhost_resolver"の下に"localnets"用の設定"internal"を追加します

view "internal" {
		match-clients { localnets; };
		match-destinations { localnets; };
		recursion yes;
		include "/etc/named.root.hints";
		include "/etc/named.local.tooyama.org.zone";
};

ヒントファイルの作成

(5)ルートネームサーバに関するヒントファイルを作成します
[参考]
BIND9 で root ヒントファイルを使用する(named.root)

[root@centosvm2 ~]# vi /var/named/chroot/etc/named.root.hints

zone "." IN {
	 type hint;
	 file "named.ca";
};

ゾーンファイルの作成

(6)"local.tooyama.org"のゾーン定義ファイルを作成します

[root@centosvm2 ~]# vi /var/named/chroot/etc/named.local.tooyama.org.zone

zone "local.tooyama.org" {
		type master;
		file "local.tooyama.org.db";
};
zone "1.168.192.in-addr.arpa" {
		type master;
		file "1.168.192.in-addr.arpa.db";
};

ルートゾーンの更新

(7)ルートゾーンを最新化します

[root@centosvm2 ~]# dig @a.root-servers.net . ns > /var/named/chroot/var/named/named.ca

正引きの設定

ドメインの正引きとは、ドメインの問い合わせに対してそのドメインが割り当てられているホストに設定されているIPを返すための設定のことです。

(8)正引きの設定を行ないます
正引きの設定を行なうことで、ドメイン名からIPアドレスに変換することができるようになります。

[root@centosvm2 ~]# vi /var/named/chroot/var/named/local.tooyama.org.db

$TTL            86400
@		IN	SOA	ns.local.tooyama.org.   root.local.tooyama.org.(
				2011010901     ; Serial
				28800          ; Refresh
				14400          ; Retry
				3600000        ; Expire
				86400 )        ; Minimum

	       	IN	NS	ns.local.tooyama.org.
router		IN	A	192.168.1.1
centos		IN	A	192.168.1.55
centosvm1	IN	A	192.168.1.51
centosvm2	IN	A	192.168.1.52

ns              IN	CNAME	centosvm2
www             IN	CNAME	centosvm1
ntp             IN	CNAME	centos

[書き方のヒント]
1."2011010901 ; Serial"
日付とリビジョン番号の様に記述。記述を変えたら必ずシリアル値を変更します。

2." IN A"レコード
その名前でアクセスしたら返すIPを定義します。

3."IN CNAME"
別名を指定する。

たとえば以下の場合、centos = ntp、IPは192.168.1.55であることがわかります。

centos IN A 192.168.1.55
ntp IN CNAME centos

逆引きの設定

ドメインの逆引きとは正引きの逆で、IPの問い合わせに対して、ホストに割り当てたドメインをクライアントに返すための設定のことです。

(9)逆引きの設定を行ないます
逆引き設定を行なうことで、IPアドレスからドメイン名に変換することができるようになります。

[root@centosvm2 ~]# vi /var/named/chroot/var/named/1.168.192.in-addr.arpa.db

$TTL	86400
@	IN	SOA	ns.local.tooyama.org.   root.local.tooyama.org.(
			2011010901   ; Serial
			28800        ; Refresh
			14400        ; Retry
			3600000      ; Expire
			86400 )      ; Minimum

	IN	NS	ns.local.tooyama.org.
	IN	PTR	local.tooyama.org.
	IN 	A	255.255.255.0

1	IN	PTR	router.local.tooyama.org.
55	IN	PTR	ntp.local.tooyama.org.
51	IN	PTR	www.local.tooyama.org.
52	IN	PTR	ns.local.tooyama.org.

(10)BINDの起動

[root@centosvm2 ~]# /etc/rc.d/init.d/named start
namedを起動中:                                             [  OK  ]

Tips: BINDが起動しない場合

BINDが起動しない場合はログを確認します

[root@centosvm2 ~]# less /var/log/messages

(11)BINDの自動起動設定を行ないます

[root@centosvm2 ~]# chkconfig named on

(12)ファイアウォールでtcp:53とudp:53ポートを開けます。

[root@centosvm2 ~]# system-config-securitylevel

ファイアウォールの設定で「その他のポート」に以下を追加する:

(13)nslookupコマンドで名前解決できるか確認する
アドレス(正引き)とIP(逆引き)で名前解決できるか確認します。

[root@centosvm2 ~]# dig router.local.tooyama.org

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 <<>> router.local.tooyama.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62141
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;router.local.tooyama.org.	IN	A

;; ANSWER SECTION:
router.local.tooyama.org. 86400	IN	A	192.168.1.1

;; AUTHORITY SECTION:
local.tooyama.org.	86400	IN	NS	ns.local.tooyama.org.

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jan 11 22:03:50 2011
;; MSG SIZE  rcvd: 72

[root@centosvm2 ~]# dig -x 192.168.1.1  (-x オプションを付加すること!)

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 <<>> -x 192.168.1.1
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56506
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

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

;; ANSWER SECTION:
1.1.168.192.in-addr.arpa. 86400	IN	PTR	router.local.tooyama.org.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa.	86400	IN	NS	ns.local.tooyama.org.

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jan 11 22:02:54 2011
;; MSG SIZE  rcvd: 94

※クライアントのDNSを設定変更し、同様にdigコマンドをたたいて正引き、逆引きが出来るか確認します。
また、DNSの変更前と後で結果が異なることを確認します。

この後の作業

DNSサーバーは構築できましたが、このDNSサーバーで名前解決するためにクライアント側でDNSの設定を変更する必要があります。
DHCPサーバーによりIPを取得している場合は、DHCPサーバー側のDNS設定を変更してください。

例えばUNIX/Linux系のOSの場合、resolv.confを以下のように修正します。

# vi /etc/resolv.conf

search local.tooyama.org
nameserver 192.168.1.52
nameserver 192.168.1.1

searchにDNSのドメイン名を、nameserverにDNSのIPを それぞれ列挙します。