DNS サーバーを構築する
DNS サーバーを構築するときによく使用される bind パッケージは、デファクトスタンダード的な存在であり、マスターサーバー・スレーブサーバーのいずれでも動作させることができます。
インストール時に設定した DNS サーバーの IP アドレスを変更する場合には、ネットワークの設定と変更の設定と変更を参照して下さい。
DHCP サーバーを構築している場合には、DNS サーバーの IP アドレスを変更して下さい。
パッケージのインストール
DNS サーバーパッケージは、yum コマンドを使用してインストールします。 なお、bind パッケージをより安全な DNS サーバーとして構築するために bind-chroot パッケージもインストールします。
[root@web ~]# yum install bind
[root@web ~]# yum install bind-chroot
[ CentOS 6 ]
パッケージインストール後の設定
DNS に関する設定は、パッケージをインストールした段階では、オプション設定ファイル(以下、初期設定ファイルとする)がないため、サンプルファイルを使用して初期設定ファイルを作成します。 また、初期設定ファイルで指定するマスタサーバーゾーン定義ファイルも作成します。
なお、DNS サーバーを構築する際、必ずマスターサーバーの存在が必要になります。 マスターサーバーとして動作させるためには、初期設定ファイルとルートサーバーリストファイル以外に、サーバーが権威を持つゾーンすべてに対してのデータベースファイルとなる正引きゾーンマスタファイルおよび逆引きゾーンマスタファイルを準備する必要があります。
(サンプルファイル : /usr/share/doc/bind-x.x.x/sample/etc/named.conf )
初期設定ファイルを作成する
[root@web ~]# vi /etc/named.conf
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { localnets; }; //listen-on-v6 port 53 { ::1; }; 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; }; [ 内部ネットワークのみ許可する ] // 外部 DNS サーバーにクエリーを送信する場合(設定すると名前解決が遅くなる場合がある) forwarders { 192.168.0.1; [ ルーター経由の場合(ルーターの IP アドレス) ] // プロバイダから通知を受けた DNS サーバーがある場合 xxx.xxx.xxx.xxx; [ プライマリ DNS サーバー ] xxx.xxx.xxx.xxx; [ セカンダリ DNS サーバー ] }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; // 内部ネットワーク向け include "/etc/named.i2kt.com.zone.lan";
マスタサーバーゾーン定義ファイルを作成する
[root@web ~]# vi /var/named/chroot/etc/named.i2kt.com.zone.lan
zone "i2kt.com" IN { type master; // 正引きゾーンマスターファイルの指定 file "i2kt.com.db"; allow-update { none; }; }; zone "0.168.192.in-addr.arpa" IN { type master; // 逆引きゾーンマスターファイルの指定 file "0.168.192.in-addr.arpa.db"; allow-update { none; }; };
正引きゾーンマスターファイルを作成する
[root@web ~]# vi /var/named/chroot/var/named/i2kt.com.db
$TTL 86400 @ IN SOA i2kt.com. root.i2kt.com. ( 2012010101 ; serial 3600 ; refresh 3600 ; retry 604800 ; expire 86400 ; minimum ) IN NS i2kt.com. IN MX 0 i2kt.com. ; @ IN A 192.168.0.201 www IN A 192.168.0.201 smtp IN A 192.168.0.201 pop3 IN A 192.168.0.201
逆引きゾーンマスターファイルを作成する
[root@web ~]# vi /var/named/chroot/var/named/0.168.192.in-addr.arpa.db
$TTL 86400 @ IN SOA i2kt.com. root.i2kt.com. ( 2012010101 ; serial 3600 ; refresh 3600 ; retry 604800 ; expire 86400 ; nagative ) IN NS i2kt.com. ; 201 IN PTR i2kt.com.
オプション設定ファイルを作成する
[root@web ~]# cp -p /usr/share/doc/bind-x.x.x/sample/var/named/named.ca /var/named/chroot/var/named
[root@web ~]# cp -p /usr/share/doc/bind-x.x.x/sample/var/named/named.empty /var/named/chroot/var/named
[root@web ~]# cp -p /usr/share/doc/bind-x.x.x/sample/var/named/named.localhost /var/named/chroot/var/named
[root@web ~]# cp -p /usr/share/doc/bind-x.x.x/sample/var/named/named.loopback /var/named/chroot/var/named
ファイルの所有者グループを変更する
[root@web ~]# chgrp named /var/named/chroot/etc/named.conf
[root@web ~]# chgrp named /var/named/chroot/etc/named.i2kt.com.zone.lan
[root@web ~]# chgrp named /var/named/chroot/var/named/i2kt.com.db
[root@web ~]# chgrp named /var/named/chroot/var/named/0.168.192.in-addr.arpa.db
[root@web ~]# chgrp named /var/named/chroot/var/named/named.ca
[root@web ~]# chgrp named /var/named/chroot/var/named/named.empty
[root@web ~]# chgrp named /var/named/chroot/var/named/named.localhost
[root@web ~]# chgrp named /var/named/chroot/var/named/named.loopback
[ CentOS 6 ]
DNS サーバーの起動
パッケージをインストールした段階では、セキュリティを考慮しているため自動起動されません。 システムの再起動後に DNS サーバーを自動起動するための設定を行います。
DNS サーバーを起動する
[root@web ~]# /etc/rc.d/init.d/named start
named を起動中: [ OK ]
DNS サーバーの自動起動を設定する
[root@web ~]# chkconfig named on
[root@web ~]# chkconfig --list named
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[ CentOS 6 ]
DNS サーバー起動時のエラー対応
【エラー内容】
・error (network unreachable) resolving './NS/IN': 2001:503:ba3e::2:30#53
【エラー対処】
・DNS サーバーの IPv6 対応。
[root@web ~]# vi /etc/sysconfig/named
# IPv6 での DNS サーバー機能を無効化 OPTIONS="-4"
[ CentOS 6 ]
【エラー内容】
・none:0: open: /etc/rndc.key: file not found
【エラー対処】
・パッケージのインストール後、/etc/rndc.key が作成されていない場合、rndc.key を作成します。
[root@web ~]# rndc-confgen -a
# -a オプション : 鍵を生成して /etc/rndc.key(に書き込み)作成する wrote key file "/etc/rndc.key"
ファイルの所有者グループ、アクセス権限を変更する
[root@web ~]# chgrp named /etc/rndc.key
[root@web ~]# chmod 640 /etc/rndc.key
[ CentOS 6 ]
【エラー内容】
・logging channel 'default_debug' file 'data/named.run': file not found
・managed-keys-zone ./IN: loading from master file dynamic/managed-keys.bind failed: file not found
・dynamic/managed-keys.bind.jnl: create: file not found
・managed-keys-zone ./IN: keyfetch_done:dns_journal_open -> unexpected error
・dumping master file: dynamic/tmp-uNeSWVbEcD: open: file not found
【エラー対処】
・bind-chroot パッケージのインストール後、各種ディレクトリが作成されていない場合、各種ディレクトリを作成します。
/var/named/chroot/var/named 配下のディレクトリを作成する
[root@web ~]# mkdir /var/named/chroot/var/named/data/
[root@web ~]# mkdir /var/named/chroot/var/named/dynamic/
[root@web ~]# mkdir /var/named/chroot/var/named/slaves/
ディレクトリの所有者グループ、アクセス権限を変更する
[root@web ~]# chgrp named /var/named/chroot/var/named/data/
[root@web ~]# chgrp named /var/named/chroot/var/named/dynamic/
[root@web ~]# chgrp named /var/named/chroot/var/named/slaves/
[root@web ~]# chmod 770 /var/named/chroot/var/named/data/
[root@web ~]# chmod 770 /var/named/chroot/var/named/dynamic/
[root@web ~]# chmod 770 /var/named/chroot/var/named/slaves/
[ CentOS 6 ]