マスターDNSがダウンした時にスレーブDNSで名前解決できるようにしてみる

## やりたいこと
マスターがダウンした時にスレーブで名前解決
![構成図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636718/0694c195-29fa-fa9c-af99-940bd3c9da72.jpeg)


## スレーブDNSサーバーの設定

設定ファイルの編集
```/etc/named.conf
[root@DNS-slave named]# vi /etc/named.conf
options {
~~省略~~
recursion no; 再起問い合わせをしないようにする。
};
zone "linux.com" IN {
        type slave;　スレーブであることを設定する。
        file "forward.linux.com";
        masters { 192.168.56.104; };　マスターDNSのIPアドレス
};

zone "56.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.56.104; };
        file "reverse.linux.com";
};
```

 ## マスターDNSの設定

```/etc/named.conf
[root@DNS-slave named]# vi /etc/named.conf
 options {
~~省略~~
allow-transfer { 192.168.56.112 }; スレーブDNSのIPアドレスゾーンファイルのコピーが転送される
}
```

## 実際にコピーが転送されるか確認してみる

linux.comのゾーンファイル、逆引きのファイルがないこと確認する。(forward.linux.comとreverse.linux.com)
```
[root@dns-slave named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
```

namedの再起動

```
[root@dns-slave named]# systemctl restart named
[root@dns-slave named]# ls
data  dynamic  forward.linux.com  named.ca  named.empty  named.localhost  named.loopback  reverse.linux.com  slaves
```

forward.linux.comとreverse.linux.comが転送されていることを確認

```
[root@dns-slave named]# journalctl  | tail -15
 7月 02 22:05:11 dns-slave named[1875]: managed-keys-zone: Key 20326 for zone . is now trusted (acceptance timer complete)
 7月 02 22:05:11 dns-slave named[1875]: resolver priming query complete
 7月 02 22:05:11 dns-slave named[1875]: zone 56.168.192.in-addr.arpa/IN: Transfer started.
 7月 02 22:05:11 dns-slave named[1875]: transfer of '56.168.192.in-addr.arpa/IN' from 192.168.56.104#53: connected using 192.168.56.112#59587
 7月 02 22:05:11 dns-slave named[1875]: zone 56.168.192.in-addr.arpa/IN: transferred serial 2023061101
 7月 02 22:05:11 dns-slave named[1875]: transfer of '56.168.192.in-addr.arpa/IN' from 192.168.56.104#53: Transfer status: success
 7月 02 22:05:11 dns-slave named[1875]: transfer of '56.168.192.in-addr.arpa/IN' from 192.168.56.104#53: Transfer completed: 1 messages, 9 records, 355 bytes, 0.003 secs (118333 bytes/sec) (serial 2023061101)
 7月 02 22:05:11 dns-slave named[1875]: zone 56.168.192.in-addr.arpa/IN: sending notifies (serial 2023061101)
```

## マスターDNSを停止させてスレーブDNSで名前解決ができるの確認してみる

クライアントの/etc/resolv.confを編集します。

```/etc/resolv.conf
[root@client2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search linux.com
nameserver 192.168.56.104
nameserver 192.168.56.112 ★スレーブDNSのIPアドレスを追記

```

マスターDNSがダウンしていることを確認する。

```
[root@client2 ~]# ping 192.168.56.104
PING 192.168.56.104 (192.168.56.104) 56(84) bytes of data.
送信元 192.168.56.108 icmp_seq=1 目的のホストへ届きません。
送信元 192.168.56.108 icmp_seq=2 目的のホストへ届きません。
送信元 192.168.56.108 icmp_seq=3 目的のホストへ届きません。
^C
--- 192.168.56.104 ping 統計 ---
送信パケット数 5, 受信パケット数 0, +3 エラー, 100% packet loss, time 4102ms
pipe 4
```

digをしてみる

```
[root@client2 ~]# dig client1.linux.com
~~省略~~
;; ANSWER SECTION:
client1.linux.com.      86400   IN      A       192.168.56.109
~~省略~~
```

ANSWER SECTIONが返ってきているので名前解決はできている

逆引きも試してみる

```
[root@client2 ~]# dig -x 192.168.56.109
~~省略~~
;; ANSWER SECTION:
109.56.168.192.in-addr.arpa. 86400 IN   PTR     client1.linux.com.
~~省略~~
```

逆引きでも名前解決ができていることを確認