🌐

BINDで作る、LAN内向けキャッシュDNSサーバー構築メモ

に公開

はじめに

自宅やオフィスのLAN内に、Webアクセスを高速化したり、内部向けドメインの名前解決を行ったりするための「キャッシュDNSサーバー」を構築することがあります。

この記事では、自身のWikiに書き溜めていたメモを元に、CentOS系のLinuxディストリビューションで、定番のDNSソフトであるBIND (Berkeley Internet Name Domain) を使って、LAN内向けのキャッシュDNSサーバーを構築する際の要点をまとめます。

1. BINDのインストール

yumまたはdnfで、bindと、セキュリティを高めるためのbind-chrootをインストールします。bind-chrootを導入すると、BINDが参照するルートディレクトリが/var/named/chrootに偽装(chroot)されます。

sudo yum install bind bind-chroot

2. BIND設定ファイル (named.conf) の編集

次に、メインの設定ファイルである/var/named/chroot/etc/named.confを編集します。
キャッシュDNSサーバーとして動作させるための最小限の設定は以下の通りです。

/var/named/chroot/etc/named.conf
options {
  // BINDがリッスンするIPアドレスを指定
  // LAN内のIPアドレスとループバックアドレスを指定
  listen-on port 53 { 192.168.1.10; 127.0.0.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";
  allow-query { localhost; 192.168.1.0/24; }; // localhostとLAN内(192.168.1.0/24)からのクエリを許可

  // 再帰的な問い合わせを許可する
  recursion yes;

  // DNSSECの検証を有効にする
  dnssec-enable yes;
  dnssec-validation yes;

  bindkeys-file "/etc/named.iscdlv.key";
  managed-keys-directory "/var/named/dynamic";
};

logging {
  channel default_debug {
    file "data/named.run";
    severity dynamic;
  };
};

zone "." IN {
  type hint;
  file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

重要なポイント:

  • listen-on: サーバー自身のIPアドレスを指定します。
  • allow-query: LAN内のネットワークセグメント(例: 192.168.1.0/24)からの問い合わせを許可します。これを設定しないと、LAN内の他のPCから利用できません。
  • recursion yes: このサーバーが存在を知らないドメイン名について、他のDNSサーバーに再帰的に問い合わせに行くことを許可します。キャッシュDNSサーバーの核となる設定です。

3. ファイアウォールの設定

DNSサービス(ポート53)へのアクセスを許可します。

# firewalldの場合 (CentOS 7 / Rocky Linux 9など)
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload

4. サービスの起動と自動起動設定

設定が完了したら、namedサービスを起動します。

# BIND (named) サービスを起動
sudo systemctl start named

# OS起動時に自動起動するように設定
sudo systemctl enable named

systemctl status namedで、エラーなく起動しているか確認しましょう。

おわりに

以上で、LAN内で利用できるキャッシュDNSサーバーの基本的な構築は完了です。
LAN内の各クライアントPCのDNS設定を、このサーバーのIPアドレスに向けることで、一度問い合わせたドメインの名前解決がキャッシュされ、2回目以降のWebアクセスが高速化される効果が期待できます。


この記事で紹介した内容以外にも、技術情報をブログで発信しています。
MyNote
https://mynote.meantix.com/

Discussion