DNSスレーブサーバ構築(目次)
| Table of Contents |
はじめに
BIND 9.7によるDNSスレーブサーバの構築手順です。
OSはCentOS 6.2を利用します。
環境
マスタサーバ
-
ホスト名(IP)
- serv100(192.168.11.100)
-
OS
- CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
-
パッケージ
- bind-9.7.3-8.P3.el6_2.2
スレーブサーバ
-
ホスト名(IP)
- serv101(192.168.11.101)
-
OS
- CentOS 6.2 (kernel 2.6.32-220.4.1.el6)
-
パッケージ
- bind-9.7.3-8.P3.el6_2.2
-
named.confに下記を追加します。
options{ # ゾーン情報の転送を許可するセカンダリDNS allow-transfer { 192.168.11.101; }; # NSレコードおよび、also-notifyに対して変更通知を送る notify yes; # NSレコード以外で変更通知を送るサーバ also-notify { 192.168.11.101; };};
- マスタ側の詳細な構築手順は下記をご覧ください。
スレーブサーバの設定(192.168.11.101)
インストール
-
bind 本体のインストール
# yum install bind bind-chroot
-
必要な設定ファイルをコピーします。
# cd /usr/share/doc/bind-9.7.3/sample/# cp -rp etc/* /var/named/chroot/etc# cp -rp var/named/named* /var/named/chroot/var/named
-
コピーした設定ファイルの権限を変更します。
# chown -R root:named /var/named/chroot
chrootの設定
chrootについて
第三者に権限が奪取された場合に、被害を最小限に防ぐためchrootを導入します。
chrootはnamedプロセスにおけるルートディレクトリを変更する事で、
権限が奪取された場合に上位階層のファイルへアクセス出来ないようにします。
ルートディレクトリの設定
-
「/etc/sysconfig/named」でルートディレクトリを設定します。
# vi /etc/sysconfig/namedROOTDIR=/var/named/chroot
これで権限が奪取されたとしても「/var/named/chroot」より上の階層にアクセスできません。
named.confの編集
-
設定ファイル「/var/named/chroot/etc/named.conf」を編集します。
# vi /var/named/chroot/etc/named.conf
# 動作全般に関する設定 options { # バージョンを知られないように隠す設定 version " unknown " ; # 設定ファイルのディレクトリ (デフォルト) # 下記設定の場合、chrootにより /var/named/chroot/var/named が設定される directory " /var/named " ; # キャッシュ内容を保存するファイル(rndcで利用) dump - file " data/cache_dump.db " ; # 名前解決の回数などを統計データとして保存するファイル(rndcで利用) statistics - file " data/named_stats.txt " ; # サーバ終了時にメモリ使用統計について出力するファイル(rndcで利用) memstatistics - file " data/named_mem_stats.txt " ; # サービスのListenポートとIP listen - on port 53 { any ; } ; listen - on - v6 port 53 { :: 1 ; } ; # 問い合わせ元をローカルホストとローカルネットワークに限定します allow - qu ery { localhost; 192.168.11.0/24; }; # キャッシュを応答する先をローカルホストとローカルネットワークに限定します allow-q u ery - cache { localhost ; 192.168 .11 .0 / 24 ; } ; # 再帰問い合わせの設定(viewで再定義します) recursion yes ; # DNSSECは無効にします。(後で有効にします) dnssec - enable no ; dnssec - validation no ; dnssec - lookaside auto ; } ; # ログ設定(デフォルト) logging { #デバック時のログ出力先 (主にrndc trace コマンドで利用) channel default_debug { file " data/named.run " ; severity dynamic ; } ; } ; # 内部向けDNSの設定(スレーブ用) view " internal " { match - clients { 192.168 .11 .0 / 24 ; } ; match - destinations { 192.168 .11 .0 / 24 ; } ; recursion yes ; #ルートゾーンの設定 zone " . " IN { type hint ; file " /var/named/named.ca " ; } ; #ローカルホストに名前解決に関する設定 include " /etc/named.rfc1912.zones " ; #正引きの設定 zone " oss-d.net " { type slave ; # tyepをslaveに設定 masters { 192.168 .11 .100 ; } ; # マスタサーバのIPを設定 file " slaves/oss-d.net.in_zone " ; } ; #逆引きの設定 zone " 11.168.192.in-addr.arpa " IN { type slave ; # tyepをslaveに設定 masters { 192.168 .11 .100 ; } ; # マスタサーバのIPを設定 file " slaves/11.168.192.in-addr.arpa.in_zone " ; } ; } ;
-
統計情報やログの出力先となるフォルダを作成します。フォルダ所有者はnamedに変更します。
# mkdir /var/named/chroot/var/named/dynamic# mkdir /var/named/chroot/var/named/data# mkdir /var/named/chroot/var/named/slaves# chown named:named /var/named/chroot/var/named/dynamic# chown named:named /var/named/chroot/var/named/data# chown named:named /var/named/chroot/var/named/slaves
SElinuxの設定
-
「/var/named/chroot/var/named」配下はnamedで書き込みできないため、
書き込み可能にするようSELinuxの設定を変更します
-
SElinuxのパラメータを確認します。
# getsebool -a|grep namednamed_write_master_zones --> off
-
SElinuxのパラメータを変更します。
# setsebool -P named_write_master_zones 1
起動・自動起動
自動起動の設定
-
chkconfigコマンドで自動起動をONにします
# chkconfig named on
-
chkconfigコマンドで自動起動の確認をします。LUNレベル3,5がonになっていれば問題ありません。
# chkconfig --list named named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
起動
-
BIND を起動します。
# /etc/init.d/named start
-
psコマンドで起動の確認を行います。
# ps ax |grep named 4711 ? Ssl 0:00 /usr/sbin/named -u named -t /var/named/chroot
ゾーンファイルの確認
-
起動時にマスタサーバからゾーン情報が転送されてきます。
# ls /var/named/chroot/var/named/slaves11.168.192.in-addr.arpa.in_zone oss-d.net.in_zone
動作確認
ゾーン転送の確認
マスタ側での設定変更
-
マスタサーバでゾーンファイルを変更します。
変更時はシリアルを必ず増加させます。(シリアル増加時にゾーン転送が実施されるため)[root@serv100 ~]# vi /var/named/chroot/var/named/oss-d.net.in_zone
$TTL 86400@ IN SOA dns.oss-d.net. root.oss-d.net. ( 2012050102 ; Serial ;←シリアルを増やす 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum; IN NS dns.oss-d.net. IN NS dns-slave.oss-d.net. IN MX 10 mx.oss-d.net.;mx IN A 192.168.11.10dns IN A 192.168.11.100dns-slave IN A 192.168.11.101internal IN A 192.168.11.201 ;←IPを変更
スレーブ側での確認
-
スレーブ側でゾーン転送の確認を行い、マスタの変更が反映されている事を確認します。
[root@serv100 ~]# cat /var/named/chroot/var/named/slaves/oss-d.net.in_zone
$TTL 86400@ IN SOA dns.oss-d.net. root.oss-d.net. ( 2012050102 ; Serial ;←シリアルが増えている 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum; IN NS dns.oss-d.net. IN NS dns-slave.oss-d.net. IN MX 10 mx.oss-d.net.;mx IN A 192.168.11.10dns IN A 192.168.11.100dns-slave IN A 192.168.11.101internal IN A 192.168.11.201 ;←IPが変更されている
内部向け設定の確認
スレーブサーバで名前解決の確認を行います。
- 正引きを確認します。(192系のIPアドレスで回答されます)
-
逆引きを確認します。
# nslookup 192.168.11.100 192.168.11.101Server: 192.168.11.101Address: 192.168.11.101#53100.11.168.192.in-addr.arpa name = dns.oss-d.net.
-
再帰問い合わせの確認(内部向けは再帰問い合わせ可能です)
# nslookup exsample.com 192.168.11.101Server: 192.168.11.101Address: 192.168.11.101#53Non-authoritative answer:Name: exsample.comAddress: 69.43.160.151
rndcの設定
-
rndcを設定して、BINDをリモートから制御可能にします。
DNSSECの設定
-
DNSキャッシュポイズニング対策としてDNSSECを導入します。
各種コマンド
dig
-
正引き(@のDNSサーバは省略可)
# dig @localhost example.com
-
逆引き(@のDNSサーバは省略可)
# dig @localhost -x 192.168.11.101
-
MXレコードの確認
# dig @localhost example.com mx
-
設定ファイルの内容確認
# named-checkconf -p -t /var/named/chroot