DNSサーバーは、DNS要求を処理するためのマスターまたはスレーブとして機能するように構成できます。 DNSがスレーブとして構成されている場合、DNSは、ゾーン転送方式を使用してマスターからゾーンデータのコピーを取得し、DNSクエリを処理するために特定の期間キャッシュに保持します。
環境
itzgeek.local | ||
---|---|---|
ns1.itzgeek.local | 192.168.0.10 | マスターDNSサーバー |
ns2.itzgeek.local | 192.168.0.20 | スレーブDNSサーバー。マスターサーバーがダウンしたときにDNSリクエストを処理します |
ns1.itzgeek.localは、すでにitzgeek.localドメインのマスターとして構成されています。
読む :Ubuntu 18.04 /Ubuntu16.04でDNSサーバーを構成する
読む :Debian 10 /Debian9でDNSサーバーを設定する
ここで、ns2.itzgeek.localをitzgeek.localドメインのスレーブDNSサーバーとして構成します。
マスターサーバーの構成
マスターサーバー(ns1.itzgeek.local)でBINDを構成して、セカンダリサーバー(ns2.itzgeek.local)へのゾーン転送を有効にする必要があります。
ns1.itzgeek.localの/etc/named.conf.localファイルを編集します。
sudo nano /etc/bind/named.conf.local
itzgeek.local用に作成した既存のゾーンをallow-transferおよびalso-notifyパラメーターで更新する必要があります。
転送を許可すると、ゾーンをマスターサーバーからスレーブサーバーに転送できます。また、マスターサーバーのゾーンに変更があった場合に、スレーブサーバーに通知するのに役立ちます。
フォワードゾーン
zone "itzgeek.local" IN { // Domain name type master; // Primary DNS file "/etc/bind/forward.itzgeek.local.db"; // Forward lookup file allow-transfer { 192.168.0.20; }; //Allow Transfer of zone from the master server also-notify { 192.168.0.20; }; //Notify slave for zone changes };
逆引きゾーン
zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name, should match your network in reverse order type master; // Primary DNS file "/etc/bind/reverse.itzgeek.local.db"; //Reverse lookup file allow-transfer { 192.168.0.20; }; //Allow Transfer of zone from the master server also-notify { 192.168.0.20; }; //Notify slave for zone changes };
ns1.itzgeek.localでDNSサービスを再起動します。
sudo systemctl restart bind9
スレーブサーバーの構成
必ず次のパッケージをスレーブサーバーにインストールしてください。
sudo apt-get install -y bind9 bind9utils bind9-doc dnsutils
スレーブサーバー(ns2.itzgeek.local)にスレーブゾーン宣言を追加するときが来ました。 /etc/bind/named.conf.localファイルを編集します。
sudo nano /etc/bind/named.conf.local
フォワードゾーン
以下のようにスレーブゾーンを追加します。
zone "itzgeek.local" IN { //Domain name type slave; //Secondary Slave DNS file "/var/cache/bind/forward.itzgeek.local.db"; //Forward Zone Cache file masters { 192.168.0.10; }; //Master Server IP };
逆引きゾーン
以下のようにスレーブゾーンを追加します。
zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name. Should match your network in reverse order type slave; // Secondary/Slave DNS file "/var/cache/bind/reverse.itzgeek.local.db"; //Reverse Zone Cache file masters { 192.168.0.10; }; //Master Server IP };
ns2.itzgeek.localでDNSサービスを再起動します
sudo systemctl restart bind9
数分待つと、/ var / log/syslogファイルに次のようなものが表示されるようになります。
Jan 4 23:18:49 ns2 named[2637]: zone itzgeek.local/IN: Transfer started. Jan 4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: connected using 192.168.0.20#54333 Jan 4 23:18:49 ns2 named[2637]: zone itzgeek.local/IN: transferred serial 3 Jan 4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: Transfer status: success Jan 4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: Transfer completed: 1 messages, 8 records, 228 bytes, 0.004 secs (57000 bytes/sec) Jan 4 23:18:49 ns2 named[2637]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted Jan 4 23:18:49 ns2 named[2637]: resolver priming query complete Jan 4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: Transfer started. Jan 4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: connected using 192.168.0.20#55105 Jan 4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: transferred serial 3 Jan 4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: Transfer status: success Jan 4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: Transfer completed: 1 messages, 6 records, 210 bytes, 0.007 secs (30000 bytes/sec) Jan 4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 3)
DNSレコードの更新
マスターサーバー上の任意のゾーンのレコードを変更するときは、シリアル番号を現在よりも大きい乱数に更新してください。また、マスターサーバーで次のコマンドを実行してゾーンをリロードし、スレーブゾーンが更新されたレコードを取得できるようにします。itzgeek.localと0.168.192.in-addr.arpaをゾーン名に変更します。
### Forward Zone ### sudo rndc reload itzgeek.local ### Reverse Zone ### sudo rndc reload 0.168.192.in-addr.arpa
スレーブDNSサーバーの確認
クライアントマシンで、/ etc/resolv.confファイルにスレーブDNSサーバーのIPアドレスを追加します。
sudo nano /etc/resolv.conf
既存のエントリとともに、以下のようなDNSエントリを追加します。
nameserver 192.168.0.20
または
以下のチュートリアルを読んで、LinuxでDNSサーバーのIPを設定してください。
読む: CentOS/FedoraでDNSIPアドレスを設定する方法
読む: Ubuntu / DebianでDNSIPアドレスを設定する方法– ifupdown
読む: Ubuntu 18.04でDNSIPアドレスを設定する方法– Netplan
nslookupまたはdigコマンドを使用して、DNSサーバーを確認できます。
/etc/resolv.confにエントリを作成できない場合に備えて、digコマンドを使用して、@ns2.itzgeek.local(192.168.0.20)を使用してwww.itzgeek.localのルックアップを確認します
dig www.itzgeek.local @192.168.0.20
出力:
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.local @192.168.0.20 ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29076 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 0ff4fbeabbfe6d45cf28f0e85e11725b14943fb073203e78 (good) ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 604800 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 604800 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 604800 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.20#53(192.168.0.20) ;; WHEN: Sun Jan 05 10:51:26 IST 2020 ;; MSG SIZE rcvd: 124
これで、スレーブサーバーがDNSクエリに応答することがわかります。
結論
それで全部です。 Ubuntu 18.04 /Ubuntu16.04およびDebian10/Debian9でスレーブDNSサーバーを正常に構成しました。コメントセクションでフィードバックを共有してください。