ローカルエリアネットワーク内のサーバーを名前解決できるようにするため、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などから購入してください。
(1)必要なコンポーネントをいれます
[root@ns ~]# yum -y install bind bind-chroot bind-utils
EL5で別途インストールしていたcaching-nameserverはbindパッケージに含まれています。
bind-chrootはbindを保護するchroot機能を組み込むためにインストールします。
bind-utilsはのちの手順でdigコマンドを実行するためにインストールします。
(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
外部と接続されている環境で外部からアクセスできる必要がない場合は
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.
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 (ファイルの権限を修正)
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している場合はディレクトリパスが異なるので注意。
(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のファイルアクセス権を設定)
(11)BINDを起動しましょう
[root@ns ~]# service named start namedを起動中: [ OK ]
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
BINDのログは/var/named/chroot/var/named/data/named.runに全てのログと、/var/log/messageに標準ログが出力されます。
/var/log/messageがBINDのログであふれるのが嫌な場合は次のサイトを参考に、必要なログを必要なファイルに書くように設定してください。