DNSサーバー実装の実践ガイド:動的更新とクライアントキャッシュ
1. Webサーバー連携設定
1.1 HTTPサーバーのインストールと基本設定
# Apache HTTPサーバーのインストール
sudo yum -y install httpd
# テスト用インデックスページの作成
echo "www.example.com" | sudo tee /var/www/html/index.html
# サービスの起動と自動起動設定
sudo systemctl enable --now httpd
検証コマンド:
curl -I http://localhost
2. クライアント側でのDNS設定
2.1 ネットワーク設定ファイルの編集
# CentOS/RHELの場合
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1="10.0.0.8"
# 設定の再読み込み
sudo nmcli con reload
sudo nmcli con up eth0
2.2 設定の確認
cat /etc/resolv.conf
# 期待される出力:
# nameserver 10.0.0.8
2.3 DNS解決のテスト
dig www.example.com +short
# 期待される出力:10.0.0.7
curl http://www.example.com
# 期待される出力:www.example.com
3. 動的DNS更新の実装
3.1 ゾーン設定の変更
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { any; };
};
3.2 必要な権限設定
sudo chmod 770 /var/named
sudo setsebool -P named_write_master_zones on
3.3 nsupdateコマンドによる動的更新
nsupdate
> server 127.0.0.1
> zone example.com
> update add ftp.example.com 86400 IN A 203.0.113.10
> send
> quit
更新検証:
dig ftp.example.com +short
# 期待される出力:203.0.113.10
4. DNSクライアントキャッシュの最適化
4.1 CentOS/RHELでの設定
# nscdのインストールと設定
sudo yum -y install nscd
sudo systemctl enable --now nscd
# キャッシュ統計の確認
sudo nscd -g | grep -A 5 "hosts cache"
# キャッシュのクリア
sudo nscd -i hosts
主要統計指標:
指標 | 説明 |
---|---|
cache hit rate | キャッシュヒット率 |
current cached | 現在のキャッシュエントリ数 |
maximum cached | 最大キャッシュエントリ数 |
4.2 Ubuntuでの設定
# キャッシュステータスの確認
systemd-resolve --statistics
# キャッシュのクリア
sudo systemd-resolve --flush-caches
systemd-resolvedの主な機能:
- DNSSEC検証
- LLMNR/MDNSサポート
- 複数DNSサーバーのフェイルオーバー
5. トラブルシューティングチェックリスト
5.1 一般的な問題と解決策
現象 | 確認ポイント | 解決方法 |
---|---|---|
名前解決できない |
dig +trace の結果 |
ファイアウォール設定確認 |
ゾーン転送失敗 | マスタ/スレーブのシリアル番号 | シリアル番号のインクリメント |
動的更新が反映されない | SELinuxコンテキスト |
named_write_master_zones 設定 |
キャッシュがクリアされない | nscdサービスのステータス | サービス再起動 |
5.2 ログ確認方法
# BINDログの確認
sudo tail -f /var/log/named.log
# システムログのフィルタリング
journalctl -u named --since "1 hour ago"
6. セキュリティベストプラクティス
6.1 推奨設定項目
- TSIG鍵を使用したゾーン転送制限
- 再帰問い合わせの制限
- DNSSECの有効化
- 定期的なゾーンファイルのバックアップ
- 不要なDNS機能の無効化(例:version.bind問い合わせ)
// セキュアなoptions設定例
options {
allow-recursion { 192.168.0.0/24; };
allow-transfer { none; };
dnssec-validation auto;
version "not disclosed";
};
7. パフォーマンスチューニング
7.1 キャッシュ設定の最適化
options {
max-cache-size 512M;
max-cache-ttl 3600; // 1時間
min-cache-ttl 300; // 5分
cleaning-interval 60; // 1分毎のキャッシュ掃除
};
7.2 スレッドプール設定
options {
listen-on port 53 { any; };
coresize default;
datasize default;
stacksize default;
max-ncache-ttl 10800; // 3時間
};