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 ]