1.2. BIND をキャッシュ DNS サーバーとして設定する
デフォルトでは、BIND DNS サーバーは、成功したルックアップと失敗したルックアップを解決してキャッシュします。その後、サービスはキャッシュから同じレコードへの要求に応答します。これにより、DNS ルックアップの速度が大幅に向上します。
前提条件
- サーバーの IP アドレスは静的です。
手順
bind
パッケージおよびbind-utils
パッケージをインストールします。dnf install bind bind-utils
# dnf install bind bind-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BIND を change-root 環境で実行する場合は、
bind-chroot
パッケージをインストールします。dnf install bind-chroot
# dnf install bind-chroot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトである
enforcing
モードで SELinux を使用するホストで BIND を実行すると、より安全になることに注意してください。/etc/named.conf
ファイルを編集し、options
ステートメントに次の変更を加えます。listen-on
およびlisten-on-v6
ステートメントを更新して、BIND がリッスンする IPv4 インターフェイスおよび IPv6 インターフェイスを指定します。listen-on port 53 { 127.0.0.1; 192.0.2.1; }; listen-on-v6 port 53 { ::1; 2001:db8:1::1; };
listen-on port 53 { 127.0.0.1; 192.0.2.1; }; listen-on-v6 port 53 { ::1; 2001:db8:1::1; };
Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow-query
ステートメントを更新して、クライアントがこの DNS サーバーにクエリーを実行できる IP アドレスおよび範囲を設定します。allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
Copy to Clipboard Copied! Toggle word wrap Toggle overflow allow-recursion
ステートメントを追加して、BIND が再帰クエリーを受け入れる IP アドレスおよび範囲を定義します。allow-recursion { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
allow-recursion { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告サーバーのパブリック IP アドレスで再帰を許可しないでください。そうしないと、サーバーが大規模な DNS 増幅攻撃の一部になる可能性があります。
デフォルトでは、BIND は、ルートサーバーから権限のある DNS サーバーに再帰的にクエリーを実行することにより、クエリーを解決します。または、プロバイダーのサーバーなど、他の DNS サーバーにクエリーを転送するように BIND を設定することもできます。この場合、BIND がクエリーを転送する DNS サーバーの IP アドレスのリストを含む
forwarders
ステートメントを追加します。forwarders { 198.51.100.1; 203.0.113.5; };
forwarders { 198.51.100.1; 203.0.113.5; };
Copy to Clipboard Copied! Toggle word wrap Toggle overflow フォールバック動作として、フォワーダーサーバーが応答しないと、BIND はクエリーを再帰的に解決します。この動作を無効にするには、
forward only;
ステートメントを追加します。
/etc/named.conf
ファイルの構文を確認します。named-checkconf
# named-checkconf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが出力を表示しない場合は、構文に間違いがありません。
着信 DNS トラフィックを許可するように
firewalld
ルールを更新します。firewall-cmd --permanent --add-service=dns firewall-cmd --reload
# firewall-cmd --permanent --add-service=dns # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BIND を開始して有効にします。
systemctl enable --now named
# systemctl enable --now named
Copy to Clipboard Copied! Toggle word wrap Toggle overflow change-root 環境で BIND を実行する場合は、
systemctl enable --now named-chroot
コマンドを使用して、サービスを有効にして開始します。
検証
新しく設定した DNS サーバーを使用してドメインを解決します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、BIND が同じホストで実行し、
localhost
インターフェイスでクエリーに応答することを前提としています。初めてレコードをクエリーした後、BIND はエントリーをそのキャッシュに追加します。
前のクエリーを繰り返します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーがキャッシュされるため、エントリーの有効期限が切れるまで、同じレコードに対するそれ以降のリクエストは大幅に高速化されます。