1、DNS工作原理

  • 主机先查询本地DNS缓存及hosts文件是否有域名对应IP地址,如果有,就先调用这个IP地址映射,完成域名解析。
  • 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性;如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
  • 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责.com域名解析的顶级域名服务器的一个IP。
  • 这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个负责.baidu.com域名解析的权限DNS服务器地址给本地DNS服务器
  • 本地域名服务器然后向权限域名服务器dns.baidu.com进行查询。权限域名服务器dns.baidu.com告诉本地域名服务器所查询的域名的IP地址。本地域名服务器最后把查询结果告诉本地主机。完成访问过程

2、搭建DNS主从

2.1 环境准备
10.0.0.146            主DNS服务器
10.0.0.147            从DNS服务器
10.0.0.148            web服务器
10.0.0.149            DNS客户端
2.2 实现步骤
主DNS配置
[root@DNS-1 ~]#yum install bind -y
[root@DNS-1 ~]#vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };

#只允许从服务器进行区域传输
allow-transfer { 从服务器IP;};

[root@DNS-1 ~]#vim /etc/named.rfc1912.zones 
#加上这段
zone "jiangfeng.org" {
        type master;
        file "jiangfeng.org.zone";
}; 
[root@DNS-1 ~]#cp -p /var/named/named.localhost /var/named/jiangfeng.org.zone
[root@DNS-1 ~]#vim /var/named/jiangfeng.org.zone
$TTL 1D
@       IN SOA  master admin.jiangfeng.org (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master
        NS      slave

master  A       10.0.0.146
slave   A       10.0.0.147  
www     A       10.0.0.148


[root@DNS-1 ~]#chgrp named /var/named/jiangfeng.org.zone
systemctl start named          #第一次启动服务
rndc reload                    #不是第一次启动服务
从DNS配置
[root@DNS-2 ~]#yum install bind -y
[root@DNS-2 ~]#vim /etc/named.conf 
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#不允许其它主机进行区域传输
allow-transfer { none;};

[root@DNS-2 ~]#vim /etc/named.rfc1912.zones	
zone "jiangfeng.org" {
        type slave;
        masters { 10.0.0.146; };                                                                                                      

        file "slaves/jiangfeng.org.slave";
};

systemctl start named          #第一次启动服务
rndc reload                    #不是第一次启动服务 
web端安装httpd
[root@web ~]#yum install httpd -y
[root@web ~]#systemctl enable --now httpd
[root@web ~]#echo test > /var/www/html/index.html
[root@web ~]#curl 10.0.0.148
test
客户端测试主从DNS服务架构
[root@client ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static                                                                                                                      
IPADDR=10.0.0.149
GATEWAY=10.0.0.2
DNS1=10.0.0.146
DNS2=10.0.0.147
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes

[root@client rpm-gpg]#dig www.jiangfeng.org

; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> www.jiangfeng.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12745
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: b0cec8bdbaf31a43b9b678a56134794d5aa9ab2c19a4455c (good)
;; QUESTION SECTION:
;www.jiangfeng.org.		IN	A

;; ANSWER SECTION:
www.jiangfeng.org.	86400	IN	A	10.0.0.148

;; AUTHORITY SECTION:
jiangfeng.org.		86400	IN	NS	slave.jiangfeng.org.
jiangfeng.org.		86400	IN	NS	master.jiangfeng.org.

;; ADDITIONAL SECTION:
master.jiangfeng.org.	86400	IN	A	10.0.0.146
slave.jiangfeng.org.	86400	IN	A	10.0.0.147

;; Query time: 2 msec
;; SERVER: 10.0.0.146#53(10.0.0.146)
;; WHEN: Sun Sep 05 16:01:17 CST 2021
;; MSG SIZE  rcvd: 163


在主服务器上停止DNS服务
[root@DNS-1 ~]#systemctl stop named
[root@client ~]#dig www.jiangfeng.org

; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> www.jiangfeng.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7526
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 8298f021556e1505755280f56134a04c74e9ea8dd3446f5f (good)
;; QUESTION SECTION:
;www.jiangfeng.org.		IN	A

;; ANSWER SECTION:
www.jiangfeng.org.	86400	IN	A	10.0.0.148

;; AUTHORITY SECTION:
jiangfeng.org.		86400	IN	NS	slave.jiangfeng.org.
jiangfeng.org.		86400	IN	NS	master.jiangfeng.org.

;; ADDITIONAL SECTION:
master.jiangfeng.org.	86400	IN	A	10.0.0.146
slave.jiangfeng.org.	86400	IN	A	10.0.0.147

;; Query time: 1 msec
;; SERVER: 10.0.0.147#53(10.0.0.147)
;; WHEN: Sun Sep 05 18:47:40 CST 2021
;; MSG SIZE  rcvd: 163
测试web
[root@client ~]#curl www.jiangfeng.org
test