DNS原理及基本配置

网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。
我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。


一、简介

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将

主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
在这里插入图片描述

DNS域名称

域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机名和域名。DNS数据库中的名称形成一个分层树状结构称为域命名空间。域名包含单个标签分隔点,例如:im.qq.com。完全限定的域名 (FQDN) 唯一地标识在 DNS 分层树中的主机的位置,通过指定的路径中点分隔从根引用的主机的名称列表。
 下图显示与主机称为 im 内 qq.com DNS 树的示例。 主机的 FQDN 是 im.qq.com。

DNS 域的名称层次结构:

在这里插入图片描述

DNS域名称空间的组织方式

按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例。
在这里插入图片描述

DNS 和 Internet 域

互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。 一些很多现有缩写,保留以

供组织中,以及两个字母和三个字母的国家/地区使用的缩写使用下表所示。一些常见的DNS域名称如下图:

在这里插入图片描述

资源记录

DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。 常见的RR见下图:
在这里插入图片描述

Dns服务的工作过程

当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。
● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。
● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。
● DNS域名的指定类别。
对于DNS 服务器,它始终应指定为 Internet 类别。例如,指定的名称可以是计算机的完全合格的域名,如im.qq.com,并且指定的查询类型用于通过该名称

搜索地址资源记录:
DNS 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。DNS 服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他 DNS 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。
另外,客户机自己也可尝试联系其他的 DNS 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询,该过程称作迭代

  • DNS服务器之间的交互查询就是迭代查询。
  • DNS 查询的过程如下图所示。

在这里插入图片描述

1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。

二、基本安装配置

(1)安装配置

[root@server1 ~]# yum install bind -y
[root@server1 ~]# rpm -ql bind #部分安装的目录
/etc/named.conf   #DNS的主配置文件
/etc/rc.d/init.d/named  #启动脚本
/var/named    #在此目录下为DNS的解析信息
/var/named/data
/var/named/dynamic
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves

(2)编写主配置文件

[root@server1 ~]# vim /etc/named.conf #可以自己进行编写配置文件,将之前的备份
options {
	directory  "/var/named";
};

zone "." IN {   #.域
	type hint;    #hint为提示信息,去寻找根服务器
	file "named.ca";   #相对路径,相对与directory的named.ca文件
};

zone "localhost" IN {
	type master;   #master为主区域
	file "named.localhost";   
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.loopback";
};

三、添加正向解析

(1)编辑主配置文件

[root@server1 ~]# cat /etc/named.conf 
options {
	directory  "/var/named";
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "localhost" IN {
	type master;
	file "named.localhost";
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.loopback";
};

zone "redhat.com" IN {   #添加redhat.com域
	type master;   #主区域
	file "redhat.com.zone";   #详细解析在/var/named/redhat.com.zone中
};

(2)编写DNS解析文件

SOA段格式:
##此处的域名称可以使用@来代替,@表示之前在/etc/named.conf中定义的域名称
域名称 IN SOA FQDN#ns的完整域名 ( serial number 版本号
							    refresh:刷新时间,每隔多久去查看版本号
								retry:重新刷新时间
								expire:过期时间
								nagative answer TTL :否定答案缓存时间 )
NS段格式:
ZONE NAME	IN	NS	FQDN   #在下面配置中将ZONE NAME省略了,因为上面已经写了ZONE NAME
FQDN		IN	A	IP
A段格式:
FQDN		IN	A	IP
CNAME段格式:
FQDN------>FQDN
FQDN		IN	CNAME	FQDN
MX段格式:
ZONE----->FQDN
ZONE		IN	MX	PRI(优先级)	FQDN

在下面的配置中,例如
ns1             IN      A       172.25.1.1
###ns1===ns.redhat.com.  因为ns1后没有跟. 所以服务会自动补齐


[root@server1 ~]# vim /var/named/redhat.com.zone   #编辑配置
$TTL 600 ;分号后面为注释信息,过期时间
redhat.com.     IN      SOA     ns1.redhat.com. admin.redhat.com (
                                2019021611
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1
                IN      NS      mail
ns1             IN      A       172.25.1.1
mail            IN      A       172.25.1.2
www             IN      A       172.25.1.3
www             IN      A       172.25.1.4
ftp             IN      CNAME   www


(3)重启named服务,安装测试工具

[root@server1 ~]# /etc/init.d/named restart
[root@server1 ~]# yum install bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64 #使用bind中的dig命令可以查看dns解析的信息

(4)查看正向解析结果

在这里插入图片描述

dig www.redhat.com #可以看到两次dig的结果中,ip的次序不用,因此dns也可以实现负载均衡的功能

在这里插入图片描述在这里插入图片描述

四、反向解析

(1)编辑主配置文件

[root@server1 ~]# vim /etc/named.conf  #添加到主配置文件中
#添加反向解析域,注意格式
zone "1.25.172.in-addr.arpa" IN {
        type master;
        file "redhat.ptr";
};

(2)编辑反向解析文件

[root@server1 ~]# vim /var/named/redhat.ptr
$TTL 600
@       IN      SOA     ns1.redhat.com          admin.redhat.com (
                                2019021612
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1.redhat.com.
ns1             IN      A       172.25.1.1
1               IN      PTR     ns1.redhat.com.
2               IN      PTR     mail.redhat.com.
3               IN      PTR     www.redhat.com.
4               IN      PTR     www.redhat.com.

(3)重启服务

[root@server1 ~]# /etc/init.d/named restart

(4)测试

[root@server1 ~]# dig -x 172.25.1.1   #-x表示反向解析

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 172.25.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36385
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.1.25.172.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
1.1.25.172.in-addr.arpa. 600	IN	PTR	ns1.redhat.com.

;; AUTHORITY SECTION:
1.25.172.in-addr.arpa.	600	IN	NS	ns1.redhat.com.

;; ADDITIONAL SECTION:
ns1.redhat.com.		600	IN	A	172.25.1.1

;; Query time: 0 msec
;; SERVER: 172.25.1.1#53(172.25.1.1)
;; WHEN: Sat Feb 16 23:41:24 2019
;; MSG SIZE  rcvd: 99

五、递归设置

在dns解析中,其他主机可以指定服务器来进行递归,只有dns服务器允许递归的时候,指定以后才有用,这个功能也可以进行设置

(1)编辑主配置文件

[root@server1 ~]# vim /etc/named.conf
options {
        directory  "/var/named";
        recursion no;    #默认为允许给其他主机递归,设置为不给任何人递归
        #allow-recursion { 172.25.1.0/24; };   #允许给某个网段主机递归
};
[root@server1 ~]# /etc/init.d/named restart

(2)测试

[root@server1 ~]# dig -t A www.baidu.com @172.25.1.1   #通过172.25.1.1的服务器查询不到任何消息

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.baidu.com @172.25.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 8541
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

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

;; Query time: 0 msec
;; SERVER: 172.25.1.1#53(172.25.1.1)
;; WHEN: Sun Feb 17 14:19:40 CST 2019

(3)打开递归查询

[root@server1 ~]# vim /etc/named.conf
options {
        directory  "/var/named";
        #recursion no;    #默认为允许给其他主机递归,设置为不给任何人递归
        allow-recursion { 172.25.1.0/24; };   #允许给某个网段主机递归
};
[root@server1 ~]# /etc/init.d/named restart

(4)测试

[root@server1 ~]# dig -t A www.baidu.com @172.25.1.1

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.baidu.com @172.25.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15823
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6

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

;; ANSWER SECTION:
www.baidu.com.		1200	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	300	IN	A	183.232.231.172
www.a.shifen.com.	300	IN	A	183.232.231.173

;; AUTHORITY SECTION:
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.

;; ADDITIONAL SECTION:
ns2.a.shifen.com.	1200	IN	A	220.181.57.142
ns3.a.shifen.com.	1200	IN	A	112.80.255.253
ns4.a.shifen.com.	1200	IN	A	14.215.177.229
ns5.a.shifen.com.	1200	IN	A	180.76.76.95
ns1.a.shifen.com.	1200	IN	A	61.135.165.224

;; Query time: 1024 msec
;; SERVER: 172.25.1.1#53(172.25.1.1)
;; WHEN: Sun Feb 17 14:22:04 CST 2019
;; MSG SIZE  rcvd: 271

六、 norecurse使用迭代查询

使用dig +norecurse表示不进行迭代,则一次就会得到结果
使用dig +recurse表示进行迭代,需要指定解析服务器一步一步查询

[root@server1 ~]# dig +norecurse -t A www.qq.com @172.25.1.1

[root@server1 ~]# dig +norecurse -t A www.qq.com @172.25.1.1

; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> +norecurse -t A www.qq.com @172.25.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21290
;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 27

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

;; AUTHORITY SECTION:
com.			172718	IN	NS	k.gtld-servers.net.
com.			172718	IN	NS	m.gtld-servers.net.
com.			172718	IN	NS	h.gtld-servers.net.
com.			172718	IN	NS	a.gtld-servers.net.
com.			172718	IN	NS	i.gtld-servers.net.
com.			172718	IN	NS	c.gtld-servers.net.
com.			172718	IN	NS	l.gtld-servers.net.
com.			172718	IN	NS	j.gtld-servers.net.
com.			172718	IN	NS	b.gtld-servers.net.
com.			172718	IN	NS	e.gtld-servers.net.
com.			172718	IN	NS	f.gtld-servers.net.
com.			172718	IN	NS	d.gtld-servers.net.
com.			172718	IN	NS	g.gtld-servers.net.

;; ADDITIONAL SECTION:
a.gtld-servers.net.	172718	IN	A	192.5.6.30
a.gtld-servers.net.	172718	IN	AAAA	2001:503:a83e::2:30
g.gtld-servers.net.	172718	IN	A	192.42.93.30
g.gtld-servers.net.	172718	IN	AAAA	2001:503:eea3::30
l.gtld-servers.net.	172718	IN	A	192.41.162.30
l.gtld-servers.net.	172718	IN	AAAA	2001:500:d937::30
e.gtld-servers.net.	172718	IN	A	192.12.94.30
e.gtld-servers.net.	172718	IN	AAAA	2001:502:1ca1::30
j.gtld-servers.net.	172718	IN	A	192.48.79.30
j.gtld-servers.net.	172718	IN	AAAA	2001:502:7094::30
f.gtld-servers.net.	172718	IN	A	192.35.51.30
f.gtld-servers.net.	172718	IN	AAAA	2001:503:d414::30
k.gtld-servers.net.	172718	IN	A	192.52.178.30
k.gtld-servers.net.	172718	IN	AAAA	2001:503:d2d::30
b.gtld-servers.net.	172718	IN	A	192.33.14.30
b.gtld-servers.net.	172718	IN	AAAA	2001:503:231d::2:30
h.gtld-servers.net.	172718	IN	A	192.54.112.30
h.gtld-servers.net.	172718	IN	AAAA	2001:502:8cc::30
i.gtld-servers.net.	172718	IN	A	192.43.172.30
i.gtld-servers.net.	172718	IN	AAAA	2001:503:39c1::30
d.gtld-servers.net.	172718	IN	A	192.31.80.30
d.gtld-servers.net.	172718	IN	AAAA	2001:500:856e::30
m.gtld-servers.net.	172718	IN	A	192.55.83.30
m.gtld-servers.net.	172718	IN	AAAA	2001:501:b1f9::30
c.gtld-servers.net.	172718	IN	A	192.26.92.30
c.gtld-servers.net.	172718	IN	AAAA	2001:503:83eb::30

;; Query time: 0 msec
;; SERVER: 172.25.1.250#53(172.25.1.250)
;; WHEN: Sun Feb 17 14:23:25 CST 2019
;; MSG SIZE  rcvd: 835

七、 dig命令trace追踪

trace可以对查询结果进行追踪

[root@server1 ~]# dig +trace -t A www.qq.com @172.25.1.1

八、dig命令中关于区域传送

区域传送一般仅允许本区域人查看,不对外开放

区域传送类型:

  • 完全区域传送:axfr 将域中的所有信息输出
  • 增量区域传送:ixfr 仅将域中增加的信息输出
[root@server1 ~]# vim /var/named/redhat.com.zone 
$TTL 600
redhat.com.     IN      SOA     ns1.redhat.com. admin.redhat.com (
                                2019021612   #版本号+1,之前为2019021611,代表此文件已经更新
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1
                IN      NS      mail
ns1             IN      A       172.25.1.1
mail            IN      A       172.25.1.2
www             IN      A       172.25.1.3
www             IN      A       172.25.1.4
ftp             IN      CNAME   www
redhat          IN      A       172.25.1.5   #添加一个条目

[root@server1 ~]# /etc/init.d/named restart   #重新启动

(1)增量区域传送

[root@server1 ~]# dig -t IXFR=2019021612 redhat.com   #查询增添区域

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t IXFR=2019021612 redhat.com
;; global options: +cmd
redhat.com.		600	IN	SOA	ns1.redhat.com. admin.redhat.com.redhat.com. 2019021612 3600 300 172800 21600
;; Query time: 0 msec
;; SERVER: 172.25.1.1#53(172.25.1.1)
;; WHEN: Sun Feb 17 14:31:43 2019
;; XFR size: 1 records (messages 1, bytes 85)   #显示有一个代码修改

(2)完全区域传送

[root@server1 ~]# dig -t AXFR redhat.com   #完全区域传送,显示此区域所有信息

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t AXFR redhat.com
;; global options: +cmd
redhat.com.		600	IN	SOA	ns1.redhat.com. admin.redhat.com.redhat.com. 2019021613 3600 300 172800 21600
redhat.com.		600	IN	NS	ns1.redhat.com.
redhat.com.		600	IN	NS	mail.redhat.com.
ftp.redhat.com.		600	IN	CNAME	www.redhat.com.
linux.redhat.com.	600	IN	A	172.25.1.5
mail.redhat.com.	600	IN	A	172.25.1.2
ns1.redhat.com.		600	IN	A	172.25.1.1
www.redhat.com.		600	IN	A	172.25.1.3
www.redhat.com.		600	IN	A	172.25.1.4
redhat.com.		600	IN	SOA	ns1.redhat.com. admin.redhat.com.redhat.com. 2019021613 3600 300 172800 21600
;; Query time: 0 msec
;; SERVER: 172.25.1.1#53(172.25.1.1)
;; WHEN: Sun Feb 17 14:39:20 2019
;; XFR size: 10 records (messages 1, bytes 262)

九、DNS主从配置

(1)创建slave服务器

安装bind

[root@server2 named]# yum install bind-utils bind -y

配置slave

[root@server2 named]# ll
total 40
drwxrwx--- 2 named named 4096 Feb 17 13:37 data
drwxrwx--- 2 named named 4096 Feb 17 13:37 dynamic
-rw-r----- 1 root  named 1892 Feb 17 13:37 named.ca
-rw-r----- 1 root  named  152 Feb 17 13:37 named.empty
-rw-r----- 1 root  named  152 Feb 17 13:37 named.localhost
-rw-r----- 1 root  named  168 Feb 17 13:37 named.loopback
-rw-r----- 1 root  named  236 Feb 17 13:37 redhat.com.zone
-rw-r----- 1 root  named  251 Feb 17 13:37 redhat.ptr
-rw-r----- 1 root  named  249 Feb 17 13:37 redhat.ptr.bak
drwxrwx--- 2 named named 4096 Feb 17 14:51 slaves 
#当named运行时候,是以named的身份运行的,因为传送过来的目录需要named对其可以进行写操作,因此可以将数据放在slaved目录下
vim /etc/named.conf
##添加
zone "redhat.com" IN {
        type slave;  #类型为slave
        file "slaves/redhat.com.zone";   #文件存放位置在slaves下
        masters { 172.25.1.1; };  #指定master主机
        allow-transfer { none; };  #不允许区域传送,也可以进行全局定义
};
[root@server1 ~]# cd /var/named/
[root@server1 named]# vim redhat.com.zone 
$TTL 600
redhat.com.     IN      SOA     ns1.redhat.com. admin.redhat.com (
                                2019021614
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1
                IN      NS      ns2
                IN      MX 10   mail
ns1             IN      A       172.25.1.1
ns2             IN      A       172.25.1.2
mail            IN      A       172.25.1.2
www             IN      A       172.25.1.3
www             IN      A       172.25.1.4
ftp             IN      CNAME   www
linux           IN      A       172.25.1.5

[root@server2 named]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]

(2) server1查看日志

[root@server1 ~]# tail /var/log/messages
Feb 17 14:45:01 server1 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Feb 17 14:45:01 server1 rhsmd: In order for Subscription Manager to provide your system with updates, your system must be registered with the Customer Portal. Please enter your Red Hat login to ensure your system is up-to-date.
Feb 17 14:50:32 server1 named[1321]: client 172.25.1.2#60401: transfer of 'redhat.com/IN': AXFR started
Feb 17 14:50:32 server1 named[1321]: client 172.25.1.2#60401: transfer of 'redhat.com/IN': AXFR ended
##显示已经同步完毕

(3) server2查看同步信息

[root@server2 ~]# cd /var/named/slaves/
[root@server2 slaves]# ls   #已经同步完毕
redhat.com.zone
[root@server2 slaves]# vim redhat.com.zone  
#查看信息,可以看到named已经将我们的信息进行的整理,变成了标准格式
$ORIGIN .
$TTL 600        ; 10 minutes
redhat.com              IN SOA  ns1.redhat.com. admin.redhat.com.redhat.com. (
                                2019021614 ; serial
                                3600       ; refresh (1 hour)
                                300        ; retry (5 minutes)
                                172800     ; expire (2 days)
                                21600      ; minimum (6 hours)
                                )
                        NS      ns1.redhat.com.
                        NS      ns2.redhat.com.
                        MX      10 mail.redhat.com.
$ORIGIN redhat.com.
ftp                     CNAME   www
linux                   A       172.25.1.5
mail                    A       172.25.1.2
ns1                     A       172.25.1.1
ns2                     A       172.25.1.2
www                     A       172.25.1.3
                        A       172.25.1.4

(4)测试

server1更新数据

[root@server1 named]# vim redhat.com.zone 
$TTL 600
redhat.com.     IN      SOA     ns1.redhat.com. admin.redhat.com (
                                2019021615   修改版本号
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1
                IN      NS      ns2
                IN      MX 10   mail
ns1             IN      A       172.25.1.1
ns2             IN      A       172.25.1.2
mail            IN      A       172.25.1.2
www             IN      A       172.25.1.3
www             IN      A       172.25.1.4
ftp             IN      CNAME   www
linux           IN      A       172.25.1.5
redhat          IN      A       172.25.1.6   #添加条目
[root@server1 named]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]


server2查看日志信息和文件

[root@server2 slaves]# tail /var/log/messages
Feb 17 15:01:54 server2 named[1672]: transfer of 'redhat.com/IN' from 172.25.1.1#53: connected using 172.25.1.2#43338
Feb 17 15:01:54 server2 named[1672]: zone redhat.com/IN: transferred serial 2019021614
Feb 17 15:01:54 server2 named[1672]: transfer of 'redhat.com/IN' from 172.25.1.1#53: Transfer completed: 1 messages, 12 records, 298 bytes, 0.001 secs (298000 bytes/sec)
Feb 17 15:01:54 server2 named[1672]: zone redhat.com/IN: sending notifies (serial 2019021614)
Feb 17 15:05:41 server2 named[1672]: client 172.25.1.1#65112: received notify for zone 'redhat.com'
Feb 17 15:05:41 server2 named[1672]: zone redhat.com/IN: Transfer started.
Feb 17 15:05:41 server2 named[1672]: transfer of 'redhat.com/IN' from 172.25.1.1#53: connected using 172.25.1.2#41283
Feb 17 15:05:41 server2 named[1672]: zone redhat.com/IN: transferred serial 2019021615
Feb 17 15:05:41 server2 named[1672]: transfer of 'redhat.com/IN' from 172.25.1.1#53: Transfer completed: 1 messages, 13 records, 321 bytes, 0.001 secs (321000 bytes/sec)
Feb 17 15:05:41 server2 named[1672]: zone redhat.com/IN: sending notifies (serial 2019021615)

[root@server2 slaves]# cat redhat.com.zone 
$ORIGIN .
$TTL 600        ; 10 minutes
redhat.com              IN SOA  ns1.redhat.com. admin.redhat.com.redhat.com. (
                                2019021615 ; serial   #版本号也已经更新
                                3600       ; refresh (1 hour)
                                300        ; retry (5 minutes)
                                172800     ; expire (2 days)
                                21600      ; minimum (6 hours)
                                )
                        NS      ns1.redhat.com.
                        NS      ns2.redhat.com.
                        MX      10 mail.redhat.com.
$ORIGIN redhat.com.
ftp                     CNAME   www
linux                   A       172.25.1.5
mail                    A       172.25.1.2
ns1                     A       172.25.1.1
ns2                     A       172.25.1.2
redhat                  A       172.25.1.6   #数据已经更新
www                     A       172.25.1.3
                        A       172.25.1.4

十、rndc安装

(1)server1配置安装rndc

[root@server1 ~]# rndc-confgen > /etc/rndc.conf  #创建配置文件
[root@server1 ~]# vim /etc/rndc.conf    #将注释行添加到/etc/named.conf文件最后
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "H7q/qHEP+cpg3cACaSiBrg==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "H7q/qHEP+cpg3cACaSiBrg==";
# };
# 
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
[root@server1 ~]# vim /etc/named.conf  #最后添加以下内容
key "rndc-key" {
        algorithm hmac-md5;
        secret "H7q/qHEP+cpg3cACaSiBrg==";
};

controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
};
[root@server1 ~]# /etc/init.d/named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]

(2)测试

[root@server1 ~]# rndc -c /etc/rndc.conf status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 1
worker threads: 1
number of zones: 20
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

十一 、子域授权

创建redhat.com(server1)下的new.redhat.com(server3)域

(1)server1里创建new.redhat.com的ns服务器地址

[root@server1 named]# vim redhat.com.zone 
$TTL 600
redhat.com.     IN      SOA     ns1.redhat.com. admin.redhat.com (
                                2019021617
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1
                IN      NS      ns2
                IN      MX 10   mail
ns1             IN      A       172.25.1.1
ns2             IN      A       172.25.1.2
mail            IN      A       172.25.1.2
www             IN      A       172.25.1.3
www             IN      A       172.25.1.4
ftp             IN      CNAME   www

new             IN      NS      ns1.new      ;添加new的ns主机及地址
ns1.new         IN      A       172.25.1.3

(2)server3 为new.redhat.com的dns服务器

[root@server3 ~]# yum install bind bind-utils.x86_64 -y
[root@server3 ~]# vim /etc/named.conf 
options {
	directory  "/var/named";
	#recursion yes;
	allow-recursion { 172.25.1.0/24; };
	notify yes; 	
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "localhost" IN {
	type master;
	file "named.localhost";
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.loopback";
};

zone "new.redhat.com" IN {   #创建new.redhat.com域
	type master;
	file "new.redhat.com.zone";
};


[root@server3 named]# vim /var/named/new.redhat.com.zone
$TTL 600
@       IN      SOA     ns1.new.redhat.com.     admin.redhat.com (
                                2019021617
                                1H
                                5M
                                2D
                                6H )
                IN      NS      ns1
ns1             IN      A       172.25.1.3
www             IN      A       172.25.1.3
www             IN      A       172.25.1.4
ftp             IN      CNAME   www
[root@server3 named]# chown .named new.redhat.com.zone 
[root@server3 named]# chmod 640 new.redhat.com.zone 
[root@server3 named]# /etc/init.d/named restart

(3)测试

[root@server3 named]# dig -t A www.new.redhat.com @172.25.1.1

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A www.new.redhat.com @172.25.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59192
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.new.redhat.com.		IN	A

;; ANSWER SECTION:
www.new.redhat.com.	600	IN	A	172.25.1.3
www.new.redhat.com.	600	IN	A	172.25.1.4

;; AUTHORITY SECTION:
new.redhat.com.		588	IN	NS	ns1.new.redhat.com.

;; ADDITIONAL SECTION:
ns1.new.redhat.com.	588	IN	A	172.25.1.3

;; Query time: 1 msec
;; SERVER: 172.25.1.1#53(172.25.1.1)
;; WHEN: Sun Feb 17 16:37:40 2019
;; MSG SIZE  rcvd: 102

十二、 forward的配置

将请求本机的域名解析转发到指定服务器

(1)配置

[root@server3 named]# vim /etc/named.conf #以下为部分配置
options {
        directory  "/var/named";
        #recursion yes;
        allow-recursion { 172.25.1.0/24; };
        notify yes;
        forward first;   #添加转发,first首先会进行转发请求解析,only仅转发,转发以后收不到数据,也不去访问根服务器
        forwarders { 172.25.1.1; };  #将请求172.25.1.3的解析转发到172.25.1.1
};

(2)重启

    [root@server3 named]# /etc/init.d/named restart
    Stopping named:                                            [  OK  ]
    Starting named:                                            [  OK  ]

(3)测试

打开转发功能

[root@server3 named]# dig -t A www.redhat.com @172.25.1.3
#因为www.redhat.com为他的上级服务器,因为如果不进行转发则无法获得消息
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A www.redhat.com @172.25.1.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34750
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.redhat.com.			IN	A

;; ANSWER SECTION:
www.redhat.com.		600	IN	A	172.25.1.3
www.redhat.com.		600	IN	A	172.25.1.4

;; AUTHORITY SECTION:
redhat.com.		600	IN	NS	ns1.redhat.com.
redhat.com.		600	IN	NS	ns2.redhat.com.

;; ADDITIONAL SECTION:
ns2.redhat.com.		600	IN	A	172.25.1.2
ns1.redhat.com.		600	IN	A	172.25.1.1

;; Query time: 1 msec
;; SERVER: 172.25.1.3#53(172.25.1.3)
;; WHEN: Sun Feb 17 16:41:12 2019
;; MSG SIZE  rcvd: 132

关闭转发

[root@server3 named]# vim /etc/named.conf 
options {
        directory  "/var/named";
        #recursion yes;
        allow-recursion { 172.25.1.0/24; };
        notify yes;
        #forward first;
        #forwarders { 172.25.1.1; };
};
[root@server3 named]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]

测试

访问没有结果

[root@server3 named]# dig -t A www.redhat.com @172.25.1.3

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t A www.redhat.com @172.25.1.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55343
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.redhat.com.			IN	A

;; Query time: 6 msec
;; SERVER: 172.25.1.3#53(172.25.1.3)
;; WHEN: Sun Feb 17 16:41:38 2019
;; MSG SIZE  rcvd: 32

十三、视图

在我国目前的网络环境下面,多个运营商并存,运营商之间的存在一定的网络互通问题,如果把来自不同的运营商或者地域的所有用户通过简单的A记录分配到一个机房,那么就存在部分网民访问延时大或者丢包的问题。那么bind里面就提供了视图(Dns view ) 技术来解决这个问题,DNS视图 就是对同一个资源记录根据的DNS请求来源IP地址不同,分配到解析器的解析结果也不同,也就是说它可以提供这样的功能。

对于山东省的中国电信的DNS请求,可以把用户引导到部署在山东省中国电信机房的服务器上。
对于无法匹配到某个具体运营商或者国外的用户,可以把用户引导到指定的一组默认服务器上。
所以以上的功能,都是为了实现用户的就近访问,也就是让用户访问到对他来说网络质量较好的服务器上。

(1)dns服务器有两块网卡

[root@server1 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:b3:17:7a brd ff:ff:ff:ff:ff:ff
    inet 172.25.1.1/16 brd 172.25.255.255 scope global eth0
    inet6 fe80::5054:ff:feb3:177a/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:73:44:96 brd ff:ff:ff:ff:ff:ff
    inet 172.25.254.3/24 brd 172.25.254.255 scope global eth1
    inet6 fe80::5054:ff:fe73:4496/64 scope link 
       valid_lft forever preferred_lft forever

(2)配置dns服务器

[root@server1 named]# vim /etc/named.conf 
acl telecom {    #定义一个访问控制组
	172.25.1.0/24;
	127.0.0.0/8;
};

options {
	directory  "/var/named";
	#recursion yes;
	allow-recursion { 172.25.1.0/24; };
	notify yes; 	
};

view telecom {   #view添加视图功能,域只能定义在视图内!!!!!!
	match-clients { telecom; };   #如果匹配到用户为telecom组中,则执行下面
	zone "redhat.com" IN { 
		type master;
		file "telecom.redhat.com";
	};
};

view unicom{
	match-clients { any; };   #any表示其他所有用户
	zone "redhat.com" IN {
		type master;
		file "unicom.redhat.com";
};
};

(2)添加解析文件配置

[root@server1 ~]# vim /var/named/telecom.redhat.com 
$TTL 600
redhat.com.	IN	SOA	ns1.redhat.com.	admin.redhat.com (
				2019021617
				1H
				5M
				2D
				6H )
		IN	NS	ns1
		IN	NS	ns2
		IN	MX 10	mail
ns1		IN	A	172.25.1.1
ns2		IN	A	172.25.1.2
mail		IN	A	172.25.1.2
www		IN	A	172.25.1.3
www		IN	A	172.25.1.4
ftp		IN	CNAME	www

new		IN	NS	ns1.new
ns1.new		IN	A	172.25.1.3

[root@server1 ~]# vim /var/named/unicom.redhat.com 
$TTL 600
redhat.com.	IN	SOA	ns1.redhat.com.	admin.redhat.com (
				2019021617
				1H
				5M
				2D
				6H )
		IN	NS	ns1
		IN	MX 10	mail
ns1		IN	A	172.25.254.3
mail		IN	A	172.25.254.2
www		IN	A	172.25.254.3

(3)测试

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值