第1章 BIND DNS サーバーのセットアップおよび設定
Domain Name System (DNS) サービスを管理するには、BIND DNS サーバーを設定します。BIND は、インターネット技術タスクフォース (IETF) の DNS 標準およびドラフト標準に完全に準拠しています。BIND は、ローカルネットワークのキャッシュサーバーとして、またゾーンの高可用性を確保するためのセカンダリーサーバーとして機能します。
1.1. BIND をキャッシュ DNS サーバーとして設定する リンクのコピーリンクがクリップボードにコピーされました!
同じレコードに対するルックアップおよび応答リクエストの成功と失敗をキャッシュから解決およびキャッシュするには、BIND をキャッシュ DNS サーバーとして設定します。これはゾーンの権威 DNS サーバーとして機能し、DNS ルックアップの速度を向上させます。
前提条件
- 管理者権限がある。
- サーバーの IP アドレスは静的です。
手順
bindパッケージおよびbind-utilsパッケージをインストールします。# dnf install bind bind-utilsBIND を change-root 環境で実行する場合は、
bind-chrootパッケージをインストールします。# dnf install bind-chrootデフォルトである
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; };allow-queryステートメントを更新して、クライアントがこの DNS サーバーにクエリーを実行できる IP アドレスおよび範囲を設定します。allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };allow-recursionステートメントを追加して、BIND が再帰クエリーを受け入れる IP アドレスおよび範囲を定義します。allow-recursion { localhost; 192.0.2.0/24; 2001:db8:1::/64; };警告サーバーのパブリック IP アドレスで再帰を許可しないでください。そうしないと、サーバーが大規模な DNS 増幅攻撃の一部になる可能性があります。
デフォルトでは、BIND は、ルートサーバーから権限のある DNS サーバーに再帰的にクエリーを実行することにより、クエリーを解決します。ただし、BIND を設定して、プロバイダーの DNS サーバーなど、他の DNS サーバーにクエリーを転送することも可能です。この場合、BIND がクエリーを転送する DNS サーバーの IP アドレスのリストを含む
forwardersステートメントを追加します。forwarders { 198.51.100.1; 203.0.113.5; };フォールバック動作として、フォワーダーサーバーが応答しないと、BIND はクエリーを再帰的に解決します。この動作を無効にするには、
forward only;ステートメントを追加します。
/etc/named.confファイルの構文を確認します。# named-checkconfコマンドが出力を表示しない場合は、構文に間違いがありません。
着信 DNS トラフィックを許可するように
firewalldルールを更新します。# firewall-cmd --permanent --add-service=dns # firewall-cmd --reloadBIND を開始して有効にします。
# systemctl enable --now namedchange-root 環境で BIND を実行する場合は、
systemctl enable --now named-chrootコマンドを使用して、サービスを有効にして開始します。
検証
新しく設定した DNS サーバーを使用してドメインを解決します。
# dig @localhost www.example.org... __www.example.org.__ __86400__ IN A __198.51.100.34__ ;; Query time: __917 msec__ ...この例では、BIND が同じホストで実行し、
localhostインターフェイスでクエリーに応答することを前提としています。初めてレコードをクエリーした後、BIND はエントリーをそのキャッシュに追加します。
前の手順で実行したクエリーを繰り返します。
# dig @localhost www.example.org__www.example.org.__ __85332__ IN A __198.51.100.34__ ;; Query time: __1 msec__ ...キャッシュされたエントリーのおかげで、エントリーの有効期限が切れるまでは、同じレコードに対するその後のリクエストは高速になります。
詳細は、
named.conf(5) のman ページと、システム上の/usr/share/doc/bind/sample/etc/named.confファイルを参照してください。