BIND 9.3 DNSキャッシュサーバ構築
| Table of Contents |
はじめに
BINDによるDNSキャッシュサーバの構築手順です。
ゾーンサーバの構築手順については下記を参照して下さい。
インストール環境
-
OS
- CentOS 5.3
-
パッケージ
- bind-9.3.4-10.P1.el5_3.3
パッケージのインストール
-
bind 本体のインストール
# yum install bind caching-nameserver bind-chroot
chrootの設定
第三者に権限が奪取された場合を想定してchrootを導入します。
chrootはnamedプロセスにおけるルートディレクトリを変更する事で、権限が奪取された場合に上位階層のファイルへアクセス出来ないようにします。
ルートディレクトリの設定
-
/etc/sysconfig/named
でルートディレクトリを設定します。
ROOTDIR=/var/named/chroot
これで権限が奪取されたとしても「/var/named/chroot」より上の階層にアクセスできません。
基本設定
named.confの編集
-
設定ファイル「named.conf」をコピーします。
# cp -rp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
-
設定ファイル「/var/named/chroot/etc/named.conf」を編集します。
#動作全般に関する設定(■一部追加)options { version "unknown"; #バージョンを隠す設定 #listen-on port 53 { 127.0.0.1; }; #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"; #DNSを利用するネットワークを設定 allow-query { localhost; 192.168.11.0/24; };};#ログに関する設定(デフォルト)logging { #デバック時のログ出力先を指定 channel default_debug { file "data/named.run"; severity dynamic; };};#キャッシュサーバ用の設定を定義(デフォルト)view localhost_resolver { match-clients { localhost; }; match-destinations { localhost; }; recursion yes; include "/etc/named.rfc1912.zones";};#rndcによるアクセス許可設定(■追加)controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; };};#rndcで利用する暗号鍵の指定(■追加)include "/etc/rndc.key";
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の編集
-
/var/named/chroot/etc/rndc.key
の設定
key "rndckey" { algorithm hmac-md5; secret "u8rYXb5zv5vezCqYPXcQ9wNuO1yDiegDemAswrIML2Mz1BFN0u585tW1cncA";};
rndc.confの編集
-
「/etc/rndc.conf」の設定
key "rndckey" { algorithm hmac-md5; secret "u8rYXb5zv5vezCqYPXcQ9wNuO1yDiegDemAswrIML2Mz1BFN0u585tW1cncA";};options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953;};
起動・自動起動
自動起動の設定
-
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 statusnumber of zones: 6debug level: 0xfers running: 0xfers deferred: 0soa queries in progress: 0query logging is OFFrecursive clients: 0/1000tcp clients: 0/100server is up and running
rndcコマンドで下記エラーが出る場合は/var/log/messages を確認します。"This may indicate that the remote server is using an older version of the command protocol, this host is not authorized to connect, or the key is invalid."
/var/log/messages/etc/named.conf:59: couldn't find key 'rndc_key' for use with command channel 127.0.0.1#953
各種コマンド
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
-
ゾーンファイルをリロードしますが、以前にキャッシュされた 他の回答を全て保存します。
# rndc reload
このコマンドを使用すると、すべての保存された解決を消失することなく ゾーンファイルの変更が出来ます。
もし、変更が特定のゾーンのみに影響する場合、reloadコマンドの後に そのゾーン名を付加することで1つのゾーンだけをリロードします。
-
現在のnamed統計を /var/named/named.statsファイルにダンプします。
# rndc stats
-
サーバーを安全に停止し、終了前に動的な更新やIXFR (Incremental Zone ransfers)データを保存します。
# rndc stop
-
DNSサーバのキャッシュ情報をクリアする
# rndc flush