ローカルエリアネットワーク内のサーバーを名前解決できるようにするため、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などから購入してください。
(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
(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; };
外部と接続されている環境で外部からアクセスできる必要がない場合は
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 ]
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