BIND9 DNSゾーンサーバ構築(目次)
| Table of Contents |
はじめに
BINDによるDNSゾーンサーバの構築手順です。
DNSキャッシュサーバの構築手順については下記を参照して下さい。
インストール環境
- OS
- CentOS 5.5 (kernel 2.6.18-194.3.1.el5)
- パッケージ
- bind-9.3.6-4.P1.el5_4.2
パッケージのインストール
- bind 本体のインストール
# yum install bind bind-chroot
- 必要な設定ファイルをコピーします。
# cd /usr/share/doc/bind-9.3.6/sample/ # cp -rp etc /var/named/chroot/etc # cp -rp var/named/local* /var/named/chroot/var/named # cp -rp var/named/named* /var/named/chroot/var/named
- コピーした設定ファイルの権限を変更します。
# chown -R root:named /var/named/chroot
設定
chrootの設定
第三者に権限が奪取された場合を想定してchrootを導入します。
chrootはnamedプロセスにおけるルートディレクトリを変更する事で、
権限が奪取された場合に上位階層のファイルへアクセス出来ないようにします。
ルートディレクトリの設定
- 「/etc/sysconfig/named」でルートディレクトリを設定します。
#vi /etc/sysconfig/named ROOTDIR=/var/named/chroot
これで権限が奪取されたとしても「/var/named/chroot」より上の階層にアクセスできません。
named.confの編集
- 設定ファイル「/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"; }; # ログに関する設定(デフォルト) 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; include "/etc/named.root.hints"; include "/etc/named.rfc1912.zones"; zone "oss-d.net" { type master; file "oss-d.net.in_zone"; }; zone "11.168.192.in-addr.arpa" IN { type master; file "11.168.192.in-addr.arpa.in_zone"; }; }; #rndcによるアクセス許可の設定 controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; #rndcで利用する暗号鍵の指定 include "/etc/rndc.key"; # 外部向けDNSの設定 view "external" { match-clients { any; }; match-destinations { any; }; recursion no; allow-query-cache { none; }; include "/etc/named.root.hints"; include "/etc/named.rfc1912.zones"; zone "oss-d.net" { type master; file "oss-d.net.ex_zone"; }; zone "0.0.10.in-addr.arpa" IN { type master; file "0.0.10.in-addr.arpa.ex_zone"; }; };
rndcの設定
named.confの編集
- 設定ファイル「/var/named/chroot/etc/named.conf」へ下記を追加します。
#rndcによるアクセス許可設定 controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; include "/etc/rndc.key";
rndc.keyの編集
- TSIG認証用の鍵を生成
# /usr/sbin/dns-keygen I4S67zB1IQpAu6SGRO8bSoW6Mpju6Klv2zZLHaKMGYtQKbYeAP9ql40hEKCl
- rndc.keyの設定
# vi /var/named/chroot/etc/rndc.key key "rndckey" { algorithm hmac-md5; secret "I4S67zB1IQpAu6SGRO8bSoW6Mpju6Klv2zZLHaKMGYtQKbYeAP9ql40hEKCl"; };
rndc.confの編集
- 「/var/named/chroot/etc/rndc.conf」の設定
key "rndckey" { algorithm hmac-md5; secret "I4S67zB1IQpAu6SGRO8bSoW6Mpju6Klv2zZLHaKMGYtQKbYeAP9ql40hEKCl"; };
内部向けゾーンファイルの設定
正引きの設定
- 内部向けの正引きゾーンファイルを設定します。
# vi /var/named/chroot/var/named/oss-d.net.in_zone $TTL 86400 @ IN SOA dns.oss-d.net. root.oss-d.net. ( 2010060601 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum ; IN NS dns.oss-d.net. IN MX 10 mx.oss-d.net. ; mx IN A 192.168.11.10 dns IN A 192.168.11.100 www IN CNAME dns internal IN A 192.168.11.200
逆引きの設定
- 内部向けの逆引きゾーンファイルを設定します。
# vi /var/named/chroot/var/named/11.168.192.in-addr.arpa.in_zone $TTL 86400 @ IN SOA dns.oss-d.net. root.oss-d.net. ( 2010060601 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum ; IN NS dns.oss-d.net. ; 10 IN PTR mx.oss-d.net. 100 IN PTR dns.oss-d.net. 200 IN PTR internal.oss-d.net.
外部向けゾーンファイルの設定
正引きの設定
- 外部向け正引きゾーンファイルを設定します。
# vi /var/named/chroot/var/named/oss-d.net.ex_zone $TTL 86400 @ IN SOA dns.oss-d.net. root.oss-d.net. ( 2010060601 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum ; IN NS dns.oss-d.net. IN MX 10 mx.oss-d.net. ; mx IN A 10.0.0.10 dns IN A 10.0.0.100 www IN CNAME dns external IN A 10.0.0.201
逆引きの設定
- 外部向け逆引きゾーンファイルを設定します。
# vi /var/named/chroot/var/named/0.0.10.in-addr.arpa.ex_zone $TTL 86400 @ IN SOA dns.oss-d.net. root.oss-d.net. ( 2010060601 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum ; IN NS dns.oss-d.net. ; 10 IN PTR mx.oss-d.net. 100 IN PTR dns.oss-d.net. 201 IN PTR external.oss-d.net.
リゾルバの設定
- リゾルバを設定します
# vi /etc/resolv.conf nameserver 127.0.0.1
起動・自動起動
自動起動の設定
- chkconfigコマンドで自動起動をONにします
# chkconfig named on
- chkconfigコマンドで自動起動の確認をします。
LUNレベル3,4,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
動作確認
rndcの確認
- rndcの動作確認を行います
# rndc status number of zones: 16 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/1000 tcp clients: 0/100 server is up and running
内部向け設定の確認
- 正引きを確認します。(192系のIPアドレスで回答されます)
# nslookup dns.oss-d.net 192.168.11.100 Server: 192.168.11.100 Address: 192.168.11.100#53 Name: dns.oss-d.net Address: 192.168.11.100
- 逆引きを確認します。
# nslookup 192.168.11.100 192.168.11.100 Server: 192.168.11.100 Address: 192.168.11.100#53 100.11.168.192.in-addr.arpa name = dns.oss-d.net.
外部向け設定の確認
外向けの設定はDNSサーバを127.0.0.1に設定して確認します。
- 正引きを確認します。(10系のIPアドレスで回答されます)
# nslookup dns.oss-d.net 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: dns.oss-d.net Address: 10.0.0.100
- 逆引きを確認します。
# nslookup 10.0.0.100 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 100.0.0.10.in-addr.arpa name = dns.oss-d.net.
各種コマンド
dig
- 正引き(@のDNSサーバは省略可)
# dig @localhost example.com
- 逆引き(@のDNSサーバは省略可)
# dig @localhost -x 192.168.11.101
- MXレコードの確認
# dig @localhost example.com mx
rndc
- namedサービスをただちに停止します。
# rndc halt
- このネームサーバーに送られたクエリの すべてをログします。
# rndc querylog
- ネームサーバーのデータベースをリフレッシュします。
# rndc refresh
- ゾーンファイルをリロードしますが、以前にキャッシュされた 他の回答を全て保存します。このコマンドを使用すると、すべての保存された解決を消失することなく ゾーンファイルの変更が出来ます。
もし、変更が特定のゾーンのみに影響する場合、reloadコマンドの後に そのゾーン名を付加することで1つのゾーンだけをリロードします。# rndc reload
- 現在のnamed統計を /var/named/named.statsファイルにダンプします。
# rndc stats
- サーバーを安全に停止し、終了前に動的な更新やIXFR (Incremental Zone ransfers)データを保存します。
# rndc stop
- DNSサーバのキャッシュ情報をクリアする
# rndc flush