【自宅サーバー】BINDでDNSキャッシュサーバーを構築してWebを高速化する方法

Linux

導入

こんにちは!MyNoteへようこそ。

このブログのキャッチコピーは「未来の自分のための技術メモ、時々あなたのためのヒント。」ですが、今回はあなたの家のインターネットがちょっと快適になるかもしれない、そんな「ヒント」です。

「最近、Webページの表示が少し遅いな…」「いつも見るサイトなのに、毎回読み込みに時間がかかる…」と感じたことはありませんか?

その原因の一つは、Webサイトを見るたびに行われる「名前解決(DNS)」という処理にあるかもしれません。この記事では、自宅サーバーに**「キャッシュDNSサーバー」**を構築して、この名前解決を高速化し、Webアクセスを快適にする方法を解説します。


キャッシュDNSサーバーって、何が便利なの?

私たちが「https://www.google.com/search?q=google.com」のようなドメイン名でWebサイトにアクセスすると、コンピューターはまず、そのドメイン名がどのIPアドレス(インターネット上の住所)に対応しているかを、世界中のDNSサーバーに問い合わせます。これを**「名前解決」**と呼びます。

キャッシュDNSサーバーは、この問い合わせ結果を**一時的に覚えておく(キャッシュする)**専門のサーバーです。

一度訪れたサイトのIPアドレスを覚えておいてくれるので、2回目以降のアクセスでは、わざわざ外部に問い合わせに行く必要がなくなり、Webページの表示が高速化されるというメリットがあります。


BINDを使った構築の4ステップ

今回は、Linuxで最も標準的なDNSサーバーソフトである**「BIND」**を使って構築します。

Step 1: BINDをインストールする

まずは、yum(またはdnf)コマンドを使って、BINDをサーバーにインストールします。

sudo yum install bind bind-chroot

bind-chrootというパッケージを一緒に入れると、BINDが動作する範囲を特定のディレクトリに限定してくれるため、セキュリティが向上します。

Step 2: BINDの基本設定を行う (named.conf)

次に、設定ファイル/var/named/chroot/etc/named.confを編集します。これがBINDの動作を決める最も重要なファイルです。

options {
  // サーバー自身のIPアドレスと、自分自身(127.0.0.1)からの問い合わせを受け付けます
  listen-on port 53 { 192.168.1.10; 127.0.0.1; };

  // LANの中(192.168.1.0/24)からの問い合わせを許可します
  allow-query { localhost; 192.168.1.0/24; };

  // わからないドメインは、他のDNSサーバーに聞きに行く設定です (キャッシュDNSの核!)
  recursion yes;

  // --- 以下はセキュリティ関連などの推奨設定 ---
  directory   "/var/named";
  dump-file   "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  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;
  };
};

// --- ルートDNSサーバーの情報を記述したファイル ---
zone "." IN {
  type hint;
  file "named.ca";
};

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

特に重要なのはallow-queryです。ここにあなたのLANのネットワーク範囲(例:192.168.1.0/24)を指定しないと、他のPCからこのDNSサーバーを利用できないので注意してください。

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

DNSが使うポート(53番)への通信を許可します。

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

Step 4: BINDサービスを起動する

最後に、設定を反映させるためにBIND(サービス名はnamed)を起動し、サーバーを再起動しても自動で立ち上がるように設定します。

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

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

どうやって使うの?

構築が完了したら、あとはあなたのPCやスマートフォンのWi-Fi設定で、DNSサーバーのアドレスを、今回構築したサーバーのIPアドレス(この例では 192.168.1.10)に変更するだけです。


まとめ

今回は、BINDを使って家庭内やオフィス内にキャッシュDNSサーバーを構築する手順をご紹介しました。

少し専門的に感じるかもしれませんが、一度設定してしまえば、日々のWebブラウジングが少し快適になる、まさに「縁の下の力持ち」的な存在です。

この記事が、あなたのネットワーク環境を改善するための「ヒント」になれば幸いです。

コメント

タイトルとURLをコピーしました