✨
Unboundで構築する高速DNSキャッシュサーバー入門
Unboundで構築する高速DNSキャッシュサーバー入門
自前のDNSキャッシュサーバーを構築することで、プライバシー保護と応答速度の大幅な改善が実現できます。本記事では、Unboundを使用した基本的なDNSサーバーの構築手順を解説します。
Unboundとは
Unboundは軽量で高速なDNSリゾルバーです。BINDよりもシンプルで、dnsmasqよりも高機能という絶妙なポジションで、多くの環境で採用されています。
インストールと初期設定
環境準備
# Ubuntu/Debian環境を前提
sudo apt update && sudo apt upgrade -y
# Unboundインストール
sudo apt install unbound unbound-anchor dnsutils -y
# バージョン確認
unbound -V
ルートヒントの設定
# 最新のルートサーバー情報を取得
sudo wget -O /var/lib/unbound/root.hints \
https://www.internic.net/domain/named.cache
# DNSSEC用ルートキー初期化
sudo unbound-anchor -a /var/lib/unbound/root.key
# 権限設定
sudo chown -R unbound:unbound /var/lib/unbound
基本設定ファイル
# /etc/unbound/unbound.conf.d/01-basic.conf
server:
# ネットワーク設定
interface: 0.0.0.0
port: 53
# アクセス制御(ローカルネットワークのみ許可)
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
access-control: 10.0.0.0/8 allow
access-control: 0.0.0.0/0 refuse
# プロトコル設定
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
# 基本的なプライバシー保護
hide-identity: yes
hide-version: yes
# ルートヒント指定
root-hints: "/var/lib/unbound/root.hints"
# 基本的なキャッシュ設定
cache-max-ttl: 86400
cache-min-ttl: 60
# プリフェッチで応答速度改善
prefetch: yes
サービス起動と確認
# 設定ファイルの検証
sudo unbound-checkconf
# サービス起動・自動起動設定
sudo systemctl enable --now unbound
# 状態確認
sudo systemctl status unbound
# 動作テスト
dig @127.0.0.1 google.com
# 応答時間の確認(Query timeに注目)
dig @127.0.0.1 github.com | grep "Query time"
systemd-resolvedとの競合解決
Ubuntu環境では、systemd-resolvedが53番ポートを使用しているため競合が発生します。
# systemd-resolved無効化
sudo systemctl disable --now systemd-resolved
# 既存のresolv.confを削除
sudo rm /etc/resolv.conf
# 新しいresolv.conf作成
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
# 書き込み保護
sudo chattr +i /etc/resolv.conf
簡易パフォーマンステスト
# 100回のDNSクエリでテスト
for i in {1..100}; do
dig @127.0.0.1 example.com +short > /dev/null
done
# キャッシュ状態の確認
sudo unbound-control stats | grep "total.num"
運用コマンド
# キャッシュクリア(全体)
sudo unbound-control flush_zone .
# 特定ドメインのキャッシュクリア
sudo unbound-control flush google.com
# 統計情報表示
sudo unbound-control stats
# 設定リロード(再起動なし)
sudo unbound-control reload
基本設定での性能
この基本設定でも、以下のような改善が期待できます:
- 初回クエリ: 20-50ms(ISP DNSと同等)
- キャッシュヒット時: 0.1-1ms(10倍以上高速)
- プライバシー: 完全にローカル制御
さらなる最適化について
この基本設定は最小構成です。実運用環境では、以下の最適化でさらなる性能向上が可能です:
- メモリチューニング: 応答速度を5-10倍改善
- DNSSEC設定: セキュリティ強化
- DoT/DoH対応: 暗号化DNS通信
- AdGuardHome連携: 広告ブロック統合
詳細な最適化設定とベンチマーク結果はブログで解説しています 👇
Unbound DNS完全構築ガイド:パフォーマンス10倍改善の実装例
- 実測ベンチマークデータ
- トラブルシューティング事例集
- AdGuardHomeとの連携設定
- 本番環境での運用ノウハウ
まとめ
Unboundの基本設定だけでも、十分実用的なDNSキャッシュサーバーが構築できます。プライバシー保護と応答速度改善を同時に実現したい方は、ぜひ試してみてください。
関連記事
投稿者: @junchi_kurin
技術ブログ: blog.junchi8.com
Discussion