简述DNS服务器原理,并搭建主-辅服务器

发布时间 2023-10-07 14:53:36作者: 小糊涂90

1)DNS简介:

DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写。域名便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。上网时输入的网址通过域名解析系统解析找到了相对应的IP地址,这样才能上网。

 

2)DNS服务器工作原理:

假设我们访问www.tao.com的域名时的流程:

  1. 本地主机访问www.tao.com的域名时,首先会查询本地hosts文件及dns缓存,查询是否有对应的地址和ip映射关系,如有有则调用这个ip地址映射完成域名解析。

  2. 如果hosts文件和dns缓存没有这个域名的映射,则会根据tcp/ip参数设置中的首选DNS服务器,在此我们叫他本地DNS服务器,此服务器收到查询时,如果该域名包含在本地配置区域资源中,则返回解析结果给客户端,完成域名解析。

  3. 如果本地DNS服务器中没有,则本地DNS服务器会把请求发送到13台根服务器(.表示根服务器),根服务器收到请求后,发现自己没有相关记录,但是根服务器有下一级.com域名的解析记录。将.com域名对应的ip返回本地DNS服务器。

  4. 本地DNS服务器根据ip联系.com服务器,查询www.tao.com的ip,.com服务器查询后发现自己没有相关记录,但是有下一级tao.com域名的解析记录。返回tao.com的ip地址。

  5. 本地DNS服务器再次向tao.com服务器查询,此服务器查询到自己有www.tao.com的域名对应解析,返回对应ip地址。

  6. 本地DNS将解析到的www.tao.com的ip地址放到DNS缓存中。并返回客户端对应的ip地址。

     

    说明:本地客户端向DNS查询属于递归查询(步骤2),本地DNS服务器向其他DNS服务器查询属于迭代查询(步骤3-步骤5)。Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递

    归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

     

3)搭建主-辅服务器

说明: 主DNSip:10.0.0.150

备DNSip:10.0.0.160

客户端ip:10.0.0.152

主用DNS服务器:

1、安装bind包,编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,并允许接收指定备用DNS的区域传送;

[root@centos8 ~]#yum install bind -y
[root@centos8 ~]#vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#只允许从服务器进行区域传输
allow-transfer { 10.0.0.160;};

2、编辑/etc/named.rfc1912.zones文件,新增指定区域参数;


[root@centos8 ~]#vim /etc/named.rfc1912.zones    
#加上这段
zone "tan.org" {
  type master;
  file  "tan.org.zone";
};

 

3、新建zone文件,/var/named/tan.org.zone,添加SOA,NS,A,MX等记录;


[root@centos8 ~]#cp -p /var/named/named.localhost /var/named/tan.org.zone
#如果没有-p,需要改权限。chgrp named magedu.org.zone
[root@centos8 ~]#vim /var/named/tan.org.zone
$TTL 1D
@ IN SOA master admin.tan.org. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
        NS   master
          NS   slave
master     A    10.0.0.150
slave      A    10.0.0.160
www       A    10.0.0.152

 

4、使用named-checkconf、named-zone检查服务端配置、区域文件配置。


[root@centos8 ~]#named-checkconf
[root@centos8 ~]#named-checkzone "tan.org" /var/named/tan.org.zone
zone tan.org/IN: loaded serial 1
OK

 

5、使用systemctl start named启动DNS服务

[root@centos8 ~]#systemctl start named          #第一次启动服务
[root@centos8 ~]#rndc reload                    #不是第一次启动服务

 

备用DNS服务器:

1、安装bind包,编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,不允许区域传送;


[root@centos8 ~]#yum install bind -y
[root@centos8 ~]#vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query     { localhost; };
#不允许其它主机进行区域传输
  allow-transfer { none;};

 

2、编辑/etc/named.rfc1912.zones文件,新增指定区域参数(type类型slave,masters指定主DNS服务器,zone文件是放在/var/named/slaves/下且是自动生成);

[root@centos8 ~]#vim /etc/named.rfc1912.zones
zone "magedu.org" {
  type slave;
  masters { 主服务器IP;};                                                      
         
  file "slaves/tan.org.slave";
};

 

3、重启服务,并检查区域数据库文件是否生成。

[root@centos8 ~]#systemctl start named          #第一次启动服务
[root@centos8 ~]#rndc reload                    #不是第一次启动服务
[root@centos8 ~]#ls /var/named/slaves/tan.org.slave #查看区域数据库文件是否生成
/var/named/slaves/tan.org.slave

客户端验证解析结果:


首先客户端网卡配置文件DNS指向我们的两个dns
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.152
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.150
NS2=8.8.8.8


#使用主DNS解析
[root@localhost yum.repos.d]# dig www.tan.org @10.0.0.150

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.tan.org @10.0.0.150
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49336
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.tan.org.                   IN     A

;; ANSWER SECTION:
www.tan.org.            86400   IN     A       10.0.0.152

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

;; ADDITIONAL SECTION:
master.tan.org.         86400   IN     A       10.0.0.150
slave.tan.org.          86400   IN     A       10.0.0.160

;; Query time: 0 msec
;; SERVER: 10.0.0.150#53(10.0.0.150)
;; WHEN: Sat Oct 30 20:37:16 CST 2021
;; MSG SIZE rcvd: 129

#使用备DNS解析
[root@localhost yum.repos.d]# dig www.tan.org @10.0.0.160

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.tan.org @10.0.0.160
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59303
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.tan.org.                   IN     A

;; ANSWER SECTION:
www.tan.org.            86400   IN     A       10.0.0.152

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

;; ADDITIONAL SECTION:
master.tan.org.         86400   IN     A       10.0.0.150
slave.tan.org.          86400   IN     A       10.0.0.160

;; Query time: 0 msec
;; SERVER: 10.0.0.160#53(10.0.0.160)
;; WHEN: Sat Oct 30 20:37:21 CST 2021
;; MSG SIZE rcvd: 129

#在主DNS停掉服务
[root@centos8 ~]#systemctl stop named
#主服务器挂掉后,使用主服务器不能解析,但备用服务器正常解析。
[root@localhost ~]# dig www.tan.org @10.0.0.150

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.tan.org @10.0.0.150
;; global options: +cmd
;; connection timed out; no servers could be reached
[root@localhost ~]# dig www.tan.org @10.0.0.160

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.tan.org @10.0.0.160
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30808
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.tan.org.                   IN     A

;; ANSWER SECTION:
www.tan.org.            86400   IN     A       10.0.0.152

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

;; ADDITIONAL SECTION:
master.tan.org.         86400   IN     A       10.0.0.150
slave.tan.org.          86400   IN     A       10.0.0.160

;; Query time: 0 msec
;; SERVER: 10.0.0.160#53(10.0.0.160)
;; WHEN: Sat Oct 30 20:43:44 CST 2021
;; MSG SIZE rcvd: 129