0.3DNS服务配置-实现DNS主从服务架构-以及主从dns的安全

185 阅读5分钟

在实现只缓存的dns基础

juejin.cn/post/684490…

以及正向dns主服务器及优化 juejin.cn/post/684490…

的基础上实现dns主从服务架构以及dns的安全

dig工具 yum install bind-utils -y

1.配置从服务器

1.安装
[root@localhost ~]# yum install bind.x86_64 -y
2.修改配置文件

[root@localhost ~]# vim /etc/named.conf
options {
        //listen-on port 53 { 127.0.0.1; };
        //allow-query     { localhost; };

[root@localhost ~]# vim /etc/named.rfc1912.zones

zone "wyjn.icu" IN {
        type slave;
        # 标记为从服务器
        masters {10.0.0.8;};
        # 从哪个主服务器同步
        file "slaves/wyjn.icu.slave.zone";
        # 保存到/var/named/下的哪里叫什么,这是个相对路径
        # /var/named/slaves是专门放从服务器同步的域库文件
};

# 启动并设为开机启动
[root@localhost ~]# systemctl enable --now named.service

# 查看端口是不是都是正常开的
[root@localhost ~]# ss -ntl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port     
LISTEN     0      128    127.0.0.1:953                      *:*                 
LISTEN     0      100    127.0.0.1:25                       *:*                 
LISTEN     0      5      127.0.0.1:25151                    *:*                 
LISTEN     0      128          *:111                      *:*
LISTEN     0      10     10.0.0.3:53                       *:*
LISTEN     0      10     127.0.0.1:53                       *:*                 
LISTEN     0      128          *:22                       *:*
LISTEN     0      128      [::1]:953                   [::]:*
LISTEN     0      100      [::1]:25                    [::]:*
LISTEN     0      128       [::]:443                   [::]:*
LISTEN     0      128       [::]:111                   [::]:*
LISTEN     0      128       [::]:80                    [::]:*
LISTEN     0      10       [::1]:53                    [::]:*
LISTEN     0      128       [::]:22                    [::]:*

# 查看从服务器同步
[root@localhost ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 379 Mar 18 04:15 wyjn.icu.slave.zone
# 显示已经同步了,但是不能打开,centos6是明文的,以后的都是data文件,不能查看
[root@localhost ~]# cat /var/named/slaves/wyjn.icu.slave.zone
^q/▒XQ▒
wyjnicu8masterwyjnicu
3555409634qqcom4;}Q▒X▒ 1Q▒
dbwyjnicusterwyjnicu(Q▒appwyjnicu/\ȣ'Q▒                                        +Q▒masterwyjnicu                                                                +Q▒websrvwyjnicu

[root@localhost ~]# file /var/named/slaves/wyjn.icu.slave.zone
/var/named/slaves/wyjn.icu.slave.zone: data


# 测试从dns功能
[root@localhost named]# dig www.wyjn.icu @10.0.0.3

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> www.wyjn.icu @10.0.0.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4075
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 89a1084b73d586169602d60a5e7132721eec6234feada6c6 (good)
;; QUESTION SECTION:
;www.wyjn.icu.                  IN      A

;; ANSWER SECTION:
www.wyjn.icu.           86400   IN      CNAME   websrv.wyjn.icu.
websrv.wyjn.icu.        86400   IN      A       10.0.0.3

;; AUTHORITY SECTION:
wyjn.icu.               86400   IN      NS      master.wyjn.icu.

;; ADDITIONAL SECTION:
master.wyjn.icu.        86400   IN      A       10.0.0.8

;; Query time: 1 msec
;; SERVER: 10.0.0.3#53(10.0.0.3)
;; WHEN: Wed Mar 18 04:26:26 CST 2020
;; MSG SIZE  rcvd: 143

# 测试主dns功能
[root@localhost named]# dig www.wyjn.icu @10.0.0.8

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> www.wyjn.icu @10.0.0.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51257
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: b01bed82278deb718b1808785e7132b470f623916d07fc19 (good)
;; QUESTION SECTION:
;www.wyjn.icu.                  IN      A

;; ANSWER SECTION:
www.wyjn.icu.           86400   IN      CNAME   websrv.wyjn.icu.
websrv.wyjn.icu.        86400   IN      A       10.0.0.3

;; AUTHORITY SECTION:
wyjn.icu.               86400   IN      NS      master.wyjn.icu.

;; ADDITIONAL SECTION:
master.wyjn.icu.        86400   IN      A       10.0.0.8

;; Query time: 0 msec
;; SERVER: 10.0.0.8#53(10.0.0.8)
;; WHEN: Wed Mar 18 04:27:32 CST 2020
;; MSG SIZE  rcvd: 143

PS:同步有两种机制,一种是拉(从拉主),一种是推(主推从) 如果只有从拉主,如果在拉取间隔内修改主配置文件会导致响应不及时,所以也要配主推从 或者主推从的时候,这时候网断了,就需要从按一定时间间隔拉主了

2.配置主服务器主动同步

主服务器要知道推给谁
所以要加NS记录和A记录
[root@localhost named]# vim /var/named/wyjn.icu.zone

$TTL 1D
@   IN   SOA  master  3555409634.qq.com. ( 20200318 1D 10M 3D 2H )
# 如果要完成推同步,一定要把序列号往大里的调20200318
         NS   master
         NS    slave
              # 这个从服务器叫什么不重要只要能解析
              就告诉主服务器,网络中一个是自己,另一个就是从多加几个也可以,都算从
master   A    10.0.0.8
slave    A    10.0.0.3
websrv   A    10.0.0.3
www    CNAME  websrv
app      A    47.92.200.163
db       A    10.0.0.8

# 之后重启服务即可
[root@localhost named]# systemctl restart named.service
# 查看从服务器,发现文件已经被修改updata变了04:44
[root@localhost ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 400 Mar 18 04:44 wyjn.icu.slave.zone

3.实现主从dns安全

# 不安全
[root@localhost named]# dig xs.wyjn.icu

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> xs.wyjn.icu
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11918
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 448ffbe153ae9d6909952a395e7138d572b2f004e7bd58ab (good)
;; QUESTION SECTION:
;xs.wyjn.icu.                   IN      A

;; ANSWER SECTION:
xs.wyjn.icu.            86400   IN      CNAME   www.wyjn.icu.
www.wyjn.icu.           86400   IN      CNAME   websrv.wyjn.icu.
websrv.wyjn.icu.        86400   IN      A       10.0.0.3

;; AUTHORITY SECTION:
wyjn.icu.               86400   IN      NS      master.wyjn.icu.
wyjn.icu.               86400   IN      NS      slave.wyjn.icu.

;; ADDITIONAL SECTION:
master.wyjn.icu.        86400   IN      A       10.0.0.8
slave.wyjn.icu.         86400   IN      A       10.0.0.3

;; Query time: 0 msec
;; SERVER: 10.0.0.8#53(10.0.0.8)
;; WHEN: Wed Mar 18 04:53:41 CST 2020
;; MSG SIZE  rcvd: 196

[root@localhost ~]# dig -t axfr wyjn.icu @10.0.0.8/10.0.0.3

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t axfr wyjn.icu @10.0.0.8
;; global options: +cmd
wyjn.icu.               86400   IN      SOA     master.wyjn.icu. 3555409634.qq.com. 20200318 86400 600 259200 7200
wyjn.icu.               86400   IN      NS      master.wyjn.icu.
wyjn.icu.               86400   IN      NS      slave.wyjn.icu.
app.wyjn.icu.           86400   IN      A       47.92.200.163
master.wyjn.icu.        86400   IN      A       10.0.0.8
slave.wyjn.icu.         86400   IN      A       10.0.0.3
websrv.wyjn.icu.        86400   IN      A       10.0.0.3
www.wyjn.icu.           86400   IN      CNAME   websrv.wyjn.icu.
wyjn.icu.               86400   IN      SOA     master.wyjn.icu. 3555409634.qq.com. 20200318 86400 600 259200 7200
;; Query time: 4 msec
;; SERVER: 10.0.0.8#53(10.0.0.8)
;; WHEN: Wed Mar 18 04:50:25 CST 2020
;; XFR size: 9 records (messages 1, bytes 260)

[root@localhost named]# dig -t axfr wyjn.icu @wyjn.icu

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> -t axfr wyjn.icu @wyjn.icu
;; global options: +cmd
wyjn.icu.               86400   IN      SOA     master.wyjn.icu. 3555409634.qq.com. 20200318 86400 600 259200 7200
wyjn.icu.               86400   IN      A       10.0.0.8
wyjn.icu.               86400   IN      NS      master.wyjn.icu.
wyjn.icu.               86400   IN      NS      slave.wyjn.icu.
*.wyjn.icu.             86400   IN      CNAME   www.wyjn.icu.
app.wyjn.icu.           86400   IN      A       47.92.200.163
master.wyjn.icu.        86400   IN      A       10.0.0.8
slave.wyjn.icu.         86400   IN      A       10.0.0.3
websrv.wyjn.icu.        86400   IN      A       10.0.0.3
www.wyjn.icu.           86400   IN      CNAME   websrv.wyjn.icu.
wyjn.icu.               86400   IN      SOA     master.wyjn.icu. 3555409634.qq.com. 20200318 86400 600 259200 7200
;; Query time: 2 msec
;; SERVER: 10.0.0.8#53(10.0.0.8)
;; WHEN: Wed Mar 18 04:55:42 CST 2020
;; XFR size: 11 records (messages 1, bytes 320)

# 用dig分析后再dig扒库,这样可以被其他人直接扒下dns域库



# 解决
1.对主dns来说
[root@localhost named]# vim /etc/named.conf

allow-transfer {10.0.0.3;};
# 只允许10.0.0.3扒库

[root@localhost named]#rndc reload

测试
[root@localhost ~]# dig -t axfr wyjn.icu @10.0.0.8

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> -t axfr wyjn.icu @10.0.0.8
;; global options: +cmd
; Transfer failed.



2.对从dns来说
[root@localhost named]# vim /etc/named.conf

allow-transfer {none;};
# 不允许任何人
[root@localhost named]#rndc reload