DNS - master/slave 架構

Share on:

DNS-MA

生意越做越大, 發現全世界都在問 tonychoucc.com 在哪裡了, 一台 DNS 太過勞碌, 需要多一點人手, 那就來弄個 DNS master/slave 架構吧~

Story

延續 DNS - 基礎實作 這篇, 希望能增加 2 個 slave, 好讓名稱查詢的任務不要太過集中

  • DNS Slave1 : 192.168.124.102/24 (以下簡稱 slave1)
  • DNS Slave2 : 192.168.124.104/24 (以下簡稱 slave2)
  • DNS Master : 192.168.124.64/64 (以下簡稱 dns7)
  • DNS Client : 192.168.124.133/64 (以下簡稱 os7)

Prerequest

  • IPv4 Routing 基本概念
  • DNS 查找機制的觀念
  • 4 台同網段的實驗用 VM (底下範例我使用4台 CentOS7)
  • 如果你跟我一樣適用 VM 在搞, 那 RAM 要夠大啊~~~

Implementation

  1. DNS master
  2. DNS slave

1. DNS master

dns7:

假設剛剛服務都設定好了, 那 master DNS(dns7) 只需要作作修改就可以了

 1$# vim /etc/named.conf
 2zone "orz.com" IN {
 3    type master;
 4    file "named.orz.com";
 5    allow-transfer {
 6        192.168.124.102;    # 允許 slave1 從 master 這邊拿 RR 正解檔
 7        192.168.124.104;    # 允許 slave1 從 master 這邊拿 RR 反解檔
 8    };
 9};
10
11zone "124.168.192.in-addr.arpa" IN {
12    type master;
13    file "named.192.168.124";
14        allow-transfer {
15        192.168.124.102;    # 允許 slave1 從 master 這邊拿 RR 正解檔
16        192.168.124.104;    # 允許 slave1 從 master 這邊拿 RR 反解檔
17    };
18};
19# 修改上面的部份即可
20
21$# vim /var/named/named.orz.com
22# 1. 修改 SOA 裡面的 Serial 部份(起碼要比之前的序號大)
23# 2. 新增底下 4 筆資料
24@           IN  NS      slave1.orz.com.
25slave1      IN  A       192.168.124.102
26@           IN  NS      slave2.orz.com.
27slave2      IN  A       192.168.124.104
28
29$# vim /var/named/named.192.168.124
30# 1. 修改 SOA 裡面的 Serial 部份(起碼要比之前的序號大)
31# 2. 新增底下 4 筆資料
32@           IN  NS      slave1.orz.com.
33102         IN  PTR     slave1.orz.com.
34@           IN  NS      slave2.orz.com.
35104         IN  PTR     slave2.orz.com.
36
37$# systemctl restart named
38
39# 然後檢查 log, 要有看到底下的東西
40$# vim /var/log/messages
41Dec 26 16:19:35 dns named[7100]: zone 124.168.192.in-addr.arpa/IN: sending notifies (serial 2018122603)
42Dec 26 16:19:35 dns named[7100]: zone orz.com/IN: sending notifies (serial 2018122603)
43# 要看到「sending notifies (serial xxxxxxxxxx)」, 最主要是 序號的部份!!

2. DNS slave

以下的動作, slave1 及 slave2 都要作

  1. 安裝套件 (略)
  2. 開防火牆 (略)
  3. 修改設定主檔
 1$# scp 192.168.124.64:/etc/named.conf /etc/named.conf
 2
 3$# vim /etc/named.conf
 4zone "orz.com" IN {
 5    type slave;     # DNS Slave
 6    file "slaves/named.orz.com";
 7    masters { 192.168.124.64; };    # 設定老大是誰, 注意有個 s 哦
 8};
 9
10zone "124.168.192.in-addr.arpa" IN {
11    type slave;
12    file "slaves/named.192.168.124";
13    masters { 192.168.124.64; };
14};
15# 修改以上部份
  1. 注意 SELinux 問題
 1$# ll -dZ /var/named/slaves
 2drwxrwx---. named named system_u:object_r:named_cache_t:s0 /var/named/slaves/
 3# 基本上, named 安裝時, 已經設定好此路徑下的 SELinux context 了
 4# 除非要換地方, 不然可不理
 5
 6# 一切就緒後, 啟動服務
 7$# systemctl start named
 8
 9# 保險一點, 檢查一下 Log, 看看 serial 有沒有跟 master 同步
10$# grep 'serial 20181226.*' /var/log/messages
11Dec 26 16:19:35 dns1 named[2449]: zone 124.168.192.in-addr.arpa/IN: transferred serial 2018122603
12Dec 26 16:19:35 dns1 named[2449]: zone 124.168.192.in-addr.arpa/IN: sending notifies (serial 2018122603)
13Dec 26 16:19:35 dns1 named[2449]: zone orz.com/IN: transferred serial 2018122603
14Dec 26 16:19:35 dns1 named[2449]: zone orz.com/IN: sending notifies (serial 2018122603)
15# 如果有同步到, 那就表示 DNS Slave 成功了!

後記

後續使用者就可以藉由 slave1, slave2 來作名稱解析了~

最後要注意的是, 將來 master 改完 zone file 或是 RR 之後, 一定要改 Serial 阿!!

不然 slave 不會作同步

comments powered by Disqus