1. 程式人生 > >深入DNS---dns叢集及dns遠端更新

深入DNS---dns叢集及dns遠端更新

     
DNS的叢集

為了分擔dns的壓力,我們需要再配置一臺dns快取記憶體伺服器與事先存在的dns伺服器(172.25.254.202)組成一個叢集,我的一臺虛擬機器已經是dns快取記憶體伺服器了,現在搭建另外一臺,讓他們兩組成群。
另外一臺虛擬機器的配置
1. >   配置網路

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0   
DEVICE=eth0
BOOTPROTO=none
IPADDR=172.25.254.102
NETMASK=255.255.255.0
[[email protected]

~]# systemctl restart network

2 . > 搭建yum 源,安裝bind軟體

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# ls
yum.repo
[[email protected] yum.repos.d]# vim yum.repo

[rhel7.0]
name=rhel7.0
baseurl=file:///rhel7.0
gpgcheck=0
[[email protected] yum.repos.d]# yum repolist
Loaded plugins: langpacks
rhel7.o                                                  | 4.1 kB     00:00     
(1/2): rhel7.o/group_gz                                    | 134 kB   00:00     
(2/2): rhel7.o/primary_db                                  | 3.4 MB   00:00     
repo id                              repo name                            status
rhel7.o                              rhel7.0                              4,305
repolist: 4,305
[

[email protected] yum.repos.d]# yum install bind -y      安裝bind 軟體

4 . > 火牆策略

[[email protected] yum.repos.d]# firewall-cmd --add-service=dns
success
[[email protected] yum.repos.d]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources:
  services: dhcpv6-client dns ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

5 . > named 服務的配置

[[email protected] yum.repos.d]# systemctl start named
[[email protected] yum.repos.d]# vim /etc/resolv.conf


[[email protected] yum.repos.d]# vim /etc/named.conf

修改內容:

 11        listen-on port 53 { any; };

 17         allow-query     { any; };

32         dnssec-validation no;

[[email protected] yum.repos.d]# vim /etc/named.rfc1912.zones

zone "westos.com" IN {
        type slave;
        masters { 172.25.254.202; };
        file "slaves/westos.com.zone";         

注意:/var/named相當於dns服務的根目錄,A記錄存放的位置,所以設定file"slaves/..."
檔案中填寫的名稱隨意,但是建立檔名要與主DNS要相同

        allow-update { none; };
};

[[email protected] yum.repos.d]# systemctl restart named
[[email protected] yum.repos.d]# cd /var/named/slaves/
[[email protected] slaves]# ls
westos.com.zone

[[email protected] slaves]# dig www.westos.com

; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> www.westos.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64151
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.westos.com.            IN    A

;; ANSWER SECTION:
www.westos.com.        86400    IN    A    172.25.254.68

上述方法如果主DNS的內容改變,那麼副DNS上不會同步,同步需要主伺服器做以下操作:

配置主dns
[[email protected] named]# vim /etc/named.conf  
還原環境


[roo[email protected] ~]# vim /etc/named.rfc1912.zones       更改zone檔案
zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-transfer { 172.25.254.102; };         新增,企業6版本之前的需要,企業7之後就不用了
        also-notify { 172.25.254.102; };               新增,通知102同步我的更改
};


[[email protected] named]# vim westos.com.zone
$TTL 1D
@       IN SOA  westos.westos.com.  root.westos.com. (
               2018111801      ; serial         serial ##服務編號,同步時在讀是時候檢視的資訊,前面的數字不同,同步,相同就不同步

                                1D      ; refresh
                                1H      ; retry
                               1W      ; expire
                               3H )    ; minimum
             NS         dns.westos.com.
       

[[email protected] named]# systemctl restart named
在輔助DNS測試看是否同步

DNS的遠端更新

在主DNS中(server)進行配置

1. > 對zone檔案進行備份

[[email protected] named]# mkdir /westos
[[email protected] named]# cp -p westos.com.zone /westos/   

2. > 設定DNS服務端,允許客戶端主機修改westos.com.zone

[[email protected] named]# vim /etc/named.rfc1912.zones

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { 172.25.254.102; };
        also-notify { 172.25.254.102; };
};

[[email protected] named]# systemctl restart named        重啟服務,使修改生效
3. > 更改/var/named許可權,讓其他人對檔案有寫許可權

[[email protected] named]# chmod 770 /var/named/
4. > 開啟核心對 named 服務的寫功能。


若為Disabled 則不用處理
Enforcing
[[email protected] named]getsebool -a | grep named

named_tcp_bind_http_port --> off
named_write_master_zones --> off
[[email protected] named]setsebool - P named_write_master_zones on

5 . > 在副dns中進行遠端更新

[[email protected] slaves]# nsupdate
> server 172.25.254.202
> update add test.westos.com 86400 A 172.25.254.90
> send
> quit

更新成功並退出

6. > 在主dns 中執檢測,更新是否成功

[[email protected] named]# systemctl restart named
[[email protected] named]# vim westos.com.zone

發現新增test,更新成功!!
[[email protected] named]# dig test.westos.com


這樣的更新方式是不安全的,我們再來設定一種新的dns更新方式,key更新。

DNS的遠端key 更新

首先在主DNS中進行配置
1 . > 首先實驗環境還原

2 . > 生成key
[[email protected] named]# dnssec-keygen -a HMAC-MD5 -b 128 -n  HOST westoskey

3 .> 編輯加密檔案

key "westoskey" {     金鑰名稱
        algorithm hmac-md5;
        secret "金鑰";
};

3 . > 更改服務的配置檔案

編輯vim /etc/named.conf檔案

[[email protected] named]# vim /etc/named.conf

寫入:
include "/etc/westos.key";

編輯 vim /etc/named.rfc1912.zones檔案

zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { key westoskey; };
        also-notify { 172.25.254.102; };
};

重新啟動服務

[[email protected] named]# systemctl restart named

4 . > 給客戶端分發金鑰

[[email protected] named]# scp Kwestoskey.+157+54500.* [email protected]:/var/named

5 . > 測試

[[email protected] named]# ls
data     Kwestoskey.+157+54500.key      named.ca     named.localhost  slaves
dynamic  Kwestoskey.+157+54500.private  named.empty  named.loopback

[[email protected] named]# nsupdate -k Kwestoskey.+157+54500.private
> server 172.25.254.202
> update delete test.westos.com
> send
> quit

測試 遠端更新 成功並退出

進入主DNS 確認


遠端更新成功,test  被刪除