0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unboundで構築する高速DNSキャッシュサーバー入門

Posted at

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?