1.2. BIND をキャッシュ DNS サーバーとして設定する
デフォルトでは、BIND DNS サーバーは、成功したルックアップと失敗したルックアップを解決してキャッシュします。その後、サービスはキャッシュから同じレコードへの要求に応答します。これにより、DNS ルックアップの速度が大幅に向上します。
前提条件
- サーバーの IP アドレスは静的です。
手順
bindパッケージおよびbind-utilsパッケージをインストールします。dnf install bind bind-utils
# dnf install bind bind-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow BIND を change-root 環境で実行する場合は、
bind-chrootパッケージをインストールします。dnf install bind-chroot
# dnf install bind-chrootCopy 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-checkconfCopy 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 --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow BIND を開始して有効にします。
systemctl enable --now named
# systemctl enable --now namedCopy 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 エントリーがキャッシュされるため、エントリーの有効期限が切れるまで、同じレコードに対するそれ以降のリクエストは大幅に高速化されます。