トップページに戻る


top_icon[EL6]BIND 9.8による内部向けDNSの構築
最終更新日:2013.5.6

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

前提

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

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

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

BINDの導入

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

[root@ns ~]# yum -y install bind bind-chroot bind-utils

インストールパッケージについて

EL5で別途インストールしていたcaching-nameserverはbindパッケージに含まれています。
bind-chrootはbindを保護するchroot機能を組み込むためにインストールします。
bind-utilsはのちの手順でdigコマンドを実行するためにインストールします。

BINDの設定

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

[root@ns ~]# vi /etc/named.conf
options {
        listen-on port 53 { 192.168.1.6; 127.0.0.1; };  ★1
        //listen-on-v6 port 53 { ::1; };  ★2
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query        { localhost; localnets; };  ★3
        allow-transfer     { localhost; localnets;};  ★4
        recursion yes;
         forwarders         { 192.168.1.1; };  ★5
        dnssec-enable yes;
        dnssec-validation auto;  ★6
        dnssec-lookaside auto;
        empty-zones-enable no;  ★7
       /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
(略)
//include "/etc/named.rfc1912.zones";  ★8
include "/etc/named.root.key";
include "/etc/named.local.tooyama.org.zone.lan";  ★9

named.confで行う作業

  1. 外部と疎通できる自身のIPアドレスを指定
  2. コメントにする
  3. localnetsを追記
  4. このDNSサーバーのゾーンデータの転送先を追記
  5. forwarders(上流DNSを指定)
  6. /etc/named.iscdlv.keyを利用するため、ファイルの指示にある通り設定をautoに変更
  7. 警告‘empty-zones-enable/disable-empty-zone’ not set: disabling RFC 1918 empty zonesの抑止
  8. コメントにする
  9. 追記

Tips: BIND設定時の注意

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

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

ルートゾーンの更新

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

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

ゾーンの定義

(4)named.confでインクルードした正引きと逆引きの設定ファイルを定義します。

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

zone "local.tooyama.org" IN {
         type master;
         file "local.tooyama.org.db";
         allow-update{ none; };
};
zone "1.168.192.in-addr.arpa" IN {
         type master;
         file "1.168.192.in-addr.arpa.db";
         allow-update{ none; };
};
最初の定義が正引き、次の定義が逆引き用の指定です。

正引きの設定

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

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

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

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

			IN	NS		ns.local.tooyama.org.
router		IN	A		192.168.1.1
www		IN	A		192.168.1.5
ntp			IN	A		192.168.1.10
ns			IN	A		192.168.1.11

[書き方のヒント]
1."2013042701 ; 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アドレスの問い合わせに対して、ホストに割り当てたドメインをクライアントに返すための設定のことです。

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

[root@ns ~]# 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.(
						2013042701   ; 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.
5		IN		PTR		www.local.tooyama.org.
10		IN		PTR		ntp.local.tooyama.org.
11		IN		PTR		ns.local.tooyama.org.

rndc.key の生成

BIND9ではnamedの制御のために認証が導入されています。認証時にはrndc.keyが使われ、namedとrndc自体がこの鍵を利用します。 rndc.keyはrndc-confgenコマンドを実行することで作成できます。

(7)rndc-confgenコマンドで /etc/rndc.key ファイルを作成します

[root@ns ~]# rndc-confgen -a -r /dev/urandom -t /var/named/chroot
wrote key file "/etc/rndc.key"
wrote key file "/var/named/chroot/etc/rndc.key"

[root@ns var]# cd /var/named/chroot/etc/
[root@ns etc]# ls -la
合計 44
drwxr-x--- 4 root named 4096  5月  5 19:32 2013 .
drwxr-x--- 6 root named 4096  4月 27 11:43 2013 ..
-rw-r--r-- 1 root root   331  4月 27 09:41 2013 localtime
drwxr-x--- 2 root named 4096  3月 29 07:11 2013 named
-rw-r----- 1 root named 1136  5月  3 00:52 2013 named.conf
-rw-r--r-- 1 root named 2389  3月 29 07:11 2013 named.iscdlv.key
-rw-r--r-- 1 root root   260  4月 27 14:09 2013 named.local.tooyama.org.zone.lan
-rw-r----- 1 root named  931  4月 27 13:33 2013 named.rfc1912.zones
-rw-r--r-- 1 root named  487  7月 19 22:28 2010 named.root.key
drwxr-x--- 3 root named 4096  4月 27 11:43 2013 pki
-rw------- 1 root root    77  4月 27 12:20 2013 rndc.key
[root@ns etc]# chown named:named rndc.key
(ファイルの権限を修正)

managed-keys-directoryの作成

DNSSEC機能を正常に動作させるため、managed-keys-directoryを作成します。named.confでデフォルト設定されているディレクトリを作成しないとBINDが高負荷状態になってしまう問題が起きるようです。以下(9)の手順のようにディレクトリを作成してください。named.confのmanaged-keys-directoryで別のディレクトリを指定した場合はその名前のディレクトリを作成してください。このディレクトリにキーファイルが作成されるようです。

(8)named.confで指定したmanaged-keys-directoryを確認します

[root@ns named]# cat /etc/named.conf | grep managed-keys-directory
	managed-keys-directory "/var/named/dynamic";

(9)managed-keys-directoryで指定したディレクトリを作成します

[root@ns ~]# cd /var/named/chroot/var/named
[root@ns ~]# mkdir dynamic
[root@ns ~]# chown named:named dynamic
[root@ns ~]# chmod 770 dynamic

※この手順のようにchrootしている場合はディレクトリパスが異なるので注意。

data/named.runの作成

named.confのloggingで指定しているdata/named.runを作成する

(10)dataディレクトリとnamed.runを作成してnamedが参照できるように権限を設定します。

[root@ns etc]# cd /var/named/chroot/var/named
root@ns named]# mkdir data
[root@ns named]# touch data/named.run
[root@ns named]# chmod 770 data
[root@ns named]# chown -R named:named data/named.run
(dataディレクトリとnamed.runのファイルアクセス権を設定)

BINDの起動

(11)BINDを起動しましょう

[root@ns ~]# service named start
namedを起動中:                                             [  OK  ]

Tips: BINDが起動しない場合

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

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

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

[root@ns ~]# chkconfig named on

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

[root@ns ~]# system-config-firewall

ファイアウォールの設定で「Customize」を選択してTrust Serviceの一覧から「DNS」にチェックを入れます。

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

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

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> 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: Sat Apr 27 17:19:04 2013
;; MSG SIZE  rcvd: 91

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

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> -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: Sat Apr 27 17:35:03 2013
;; MSG SIZE  rcvd: 113

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

この後の作業

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

例えばUNIX/Linux系のOSの場合、resolv.confを以下のように修正します。ただし最近のバージョンのLinux デスクトップ環境では、Network Managerが動作している場合があり、resolv.confの設定を書き換えてもこの設定が上書きされる可能性がありますので、Network Managerを使わないか、もしくはsystem-config-networkツールを使って設定してください。

[root@ns ~]# vi /etc/resolv.conf

search local.tooyama.org
nameserver 192.168.1.11
nameserver 192.168.1.1

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

ログ出力

BINDのログは/var/named/chroot/var/named/data/named.runに全てのログと、/var/log/messageに標準ログが出力されます。
/var/log/messageがBINDのログであふれるのが嫌な場合は次のサイトを参考に、必要なログを必要なファイルに書くように設定してください。

参考サイト