标签:dns服务
www.baidu.com的全称域名FQDN实际上是www.baidu.com.即后面实际上省略了点,其中,www往往是某主机的别名,.baidu.com.是域名的全路径,路径中列出了各级域。
域名的分层结构如图:
DNS服务器能够将域名解析为ip,以实现主机间通信。下面将介绍各级服务器的搭建,并模拟客户端查询某域名的完整解析过程:
根域的DNS服务器:172.18.0.107 centos7.3 绿色提示符
com域的DNS服务器:172.18.0.109 centos7.3 紫色提示符
magedu.com域的主DNS服务器:172.18.250.110 centos7.4 白色提示符root@localhost
magedu.com域的从DNS服务器:172.18.22.200 centos7.3 蓝色提示符
运营商的DNS服务器:172.18.0.106 centos6 黄色提示符 ,用作转发服务器
客户端:172.18.18.5 rhel5 白色提示符root@rhel5
一 搭建magedu.com域的主DNS服务器(172.18.250.110)
1 检查SELINUX
当前SELINUX的状态为Enforcing
打开SELINUX配置文件
将其修改为disabled或permissive,即禁用SELINUX,保存退出
但是上面对配置文件的修改需重启后才能生效,可以用setenforce 0临时禁用SELINUX
2 检查防火墙
查看防火墙状态
当前防火墙的状态为开启
systemctl disable firewalld.service开机时禁用防火墙
systemctl stop firewalld.service临时禁用防火墙
3 开启DNS服务
临时启用DNS服务
将DNS服务设为开机启用
4 配置DNS
打开DNS总配置文件
假设本机ip为127.0.0.1 192.168.25.107 172.18.0.107
listen-on定义当前DNS服务器监听的端口,选项有
本机某个ip:只监听本机某个ip的3306端口
localhost:本机所有ip,即监听本机所有ip的3306端口
any:监听所有网段的ip的3306端口,实际上这个选项对listen-on来说,相当于localhost,注释listen-on时相当于any
allow-query定义当前DNS服务器为哪些主机提供查询服务,选项有
本机某个ip:本机某个ip,即只允许本机的某个ip查询,只为本机某个ip提供查询服务。此时本机既是客户端又是服务器。
某个网段ip:某个网段ip,即只允许某个网段ip查询,只为某个网段ip提供查询服务,例如172.18.0.0/16
localhost:本机所有ip,即只允许本机的所有ip查询,只为本机所有ip提供查询服务,此时本机既是客户端又是服务器。
any:所有网段的ip,即允许所有网段的ip查询,为所有网段的ip提供查询服务,注释allow-query时相当于any
图中表示监听本机所有ip,为所有网段的ip提供查询服务
之所以所有的DNS服务器都知道根,是因为在每个DNS服务器上都默认定义了一个根域,根域的数据库文件/var/named/named.ca中指定了根域的DNS服务器,即互联网上的13组DNS服务器。DNS服务器上对根域的定义与其他域的定义不同,其他域在其数据库文件中将DNS服务器指向当前DNS服务器。
打开根域的数据库文件/var/named/named.ca
NS记录表示出了为本域及本域的子域提供名字解析服务的所有DNS服务器,NS记录定义了DNS服务器的名称,A记录定义了与某个DNS服务器相对应的ip
如图表示互联网上的根域有一一台DNS服务器的ip为199.7.91.3
所以,将/var/named/named.ca的内容改成上图所示后,172.18.250.110就会认为根是172.18.0.107
实验中除了客户端和72.18.0.107之外的所有主机都需要将根指向172.18.0.107,可以用scp命令将改好的/var/named/named.ca文件拷贝到各主机,也可直接修改相应主机上的/var/named/named.ca,
172.18.22.200将根指向172.18.0.107
172.18.0.106将根指向172.18.0.107
打开172.18.0.108上根域的数据库文件,将根指向172.18.0.107
打开区域数据库配置文件
建立magedu.com域:
双引号内为域名;
类型为master,表示主DNS服务器;
file指定区域解析数据库文件的相对路径(相对于/var/named)和名称,即为/var/named/magedu.com.zone
打开并建立区域解析数据库文件/var/named/magedu.com.zone
区域解析库:由众多资源记录组成,记录类型包括A、 SOA、NS、CNAME等
资源记录定义的格式:
语法:name [TTL] IN rr_type value
名字 生命期 关键字 记录类型 值
下面以上图为例介绍区域解析库的使用:
(1)
TTL是记录缓存的有效期, 默认以s为单位
图中$TTKL为全局TTL,对下面的每条记录都有效,每条记录也可以单独定义局部TTL,只对当前记录有效。
(2)SOA记录:
@即名字,表示本域的域名,也可以写成magedu.com.
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为SOA
SOA记录的第一个值是主DNS服务器(有且仅有一个)的名称,不一定与DNS服务器的主机名保持一致,只要与下面的A记录匹配,即能够将该名称解析成ip地址即可
SOA记录的第二个值是DNS服务器管理员的邮箱地址,邮箱地址本来应该写成admin@magedu.com.但@有特殊含义,所以将@换成点
SOA记录的第三个值由一系列定义组成
其中,
区域数据库的版本号,一旦数据库发生更改,就需要手动增大该序列号。
主从复制时,系统判断区域数据库文件的内容是否发生变化时并不是真正去检查区域数据库文件的内容,而是看序列号是否增大,也就是说即使区域数据库文件的内容未发生变化,只要序列号增大,系统就认为区域数据库文件的内容发生了变化。
每个域可能有多台DNS服务器,其中有且仅有一台主DNS服务器,主DNS服务器的数据库可读可写,从DNS服务器的数据库只能读,即只能供用户查询。从DNS服务器数据库的内容来自于主DNS服务器数据库, 主从DNS服务器数据库的同步(即主从复制)机制有pull和push两种:
push:主DNS数据库重启服务时,会检查序列号。当序列号变化,即区域数据库文件的内容发生变化,主DNS数据库就会将新版数据库push至从DNS数据库,否则不执行push动作。
pull:从DNS数据库会周期性的到主DNS数据库检查序列号。当序列号变化,即区域数据库文件的内容发生变化,从DNS数据库就会将新版数据库pull至自己的数据库,否则不执行pull动作。
refresh定义了主从复制时每个周期的长度,默认以秒为单位
若因为网络原因,导致pull动作失败,则从DNS服务器过一段时间后会再去尝试。retry定义了这段时间的长度,默认以秒为单位
若主从DNS服务器的数据库超过expire时间仍未同步,则从DNS服务器数据库中的内容将过期
若用户查询DNS服务器时输入错误,如写成wwwwww.magedu.com,DNS服务器查不到该条记录,用户的机器上就会缓存该错误查询结果,下次再输成该错误结果时,就不用到DNS服务器上再去查询。miminum定义错误查询结果的缓存时间
(3)NS记录
NS记录表示出了为本域及本域的子域提供名字解析服务的所有DNS服务器
NS记录的名字为空时,会默认其名字为本域的域名,即magedu.com
也可以写成magedu.com.或@
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为NS
在本例中,NS记录的值是当前域DNS服务器的名称,不一定与DNS服务器的主机名保持一致,只要与下面的A记录匹配,即能够将该名称解析成ip地址即可
(4)A记录
DNS服务器的A记录
在本例中,A记录的名字为dns1,系统会默认将其补全为dns1.magedu.com.
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为A
值为192.168.25.107,与上面的NS记录匹配,将DNS服务器名称解析成ip地址,即当前域DNS服务器的ip为192.168.25.107
主机的A记录
在本例中,A记录的名字为websrv,系统会默认将其补全为websrv.magedu.com.
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为A
值为192.168.25.66,即主机websrv.magedu.com.的ip为192.168.25.66
(5)别名记录
在本例中,别名记录的名字为www,系统会默认将其补全为www.magedu.com.
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为A
值为websrv,系统会默认将其补全为websrv.magedu.com. 即www.magedu.com.是主机websrv.magedu.com.的别名,然后配合上面的A记录,可知ip为192.168.25.66。当客户端请求解析www.magedu.com这个别名对应的ip时,首先由别名记录得到websrv.magedu.com. 然后由A记录得到ip
172.18.18.5客户端直接请求172.18.250.110解析www.magedu.com,因为172.18.250.110有magedu.com域,在该域的数据库文件中有www.magedu.com的主机记录,即可解析为ip
二 搭建magedu.com域的从DNS服务器(172.18.22.200)
1 检查SELINUX
当前SELINUX的状态为Permissive,即已禁用
2 检查防火墙
当前防火墙的状态为已禁用
3 配置DNS
打开总配置文件
图中表示监听本机所有ip,为所有网段的ip提供查询服务
建立magedu.com域:
双引号内为域名,注意从服务器的域名仍为magedu.com;
类型为slave,表示从DNS服务器;
file指定区域解析数据库文件的相对路径(相对于/var/named)和名称,即为/var/named/slaves/magedu.com.zone,从DNS服务器的区域解析数据库文件放在/var/named/slaves下
重启服务后主从DNS服务器的数据库文件自动同步
172.18.18.5客户端直接请求172.18.22.200解析www.magedu.com,因为172.18.22.200是172.18.250.110的从DNS服务器,所以其数据库文件与主DNS服务器上数据库文件的内容相同,虽然没有magedu.com域,但有该域的数据库文件,即有www.magedu.com的主机记录,就可解析为ip
三 搭建com域的DNS服务器(172.18.0.109 )
1 检查SELINUX和防火墙
检查设置方式可以参考上面,此处不再赘述
2 DNS设置
打开区域数据库配置文件
建立com域:
双引号内为域名;
类型为master,表示主DNS服务器;
file指定区域解析数据库文件的相对路径(相对于/var/named)和名称,即为/var/named/com.zone
进入/var/named目录
打开并建立区域解析数据库文件com.zone
NS记录表示出了为本域及本域的子域提供名字解析服务的所有DNS服务器
NS记录的名字为magedu,系统会默认补上本域的域名,即magedu.com.表示为本域的子域magedu.com提供名字解析服务的DNS服务器
不可以写成@,因为@表示本域域名
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为NS
在本例中,NS记录的值是本域的子域的DNS服务器的名称,不一定与DNS服务器的主机名保持一致,只要与下面的A记录匹配,即能够将该名称解析成ip地址即可
DNS服务器的A记录
在本例中,A记录的名字为dns1,系统会默认将其补全为dns1.magedu.com.
TTL为空,表示继承全局TTL,即生命期为86400s
关键字IN
记录类型为A
值为172.18.250.46,与上面的NS记录匹配,将DNS服务器名称解析成ip地址,即本域的子域的DNS服务器的ip为192.168.25.107
本例中,com域将其子域magedu.com的DNS服务器委派给172.18.250.46
重启服务
客户端请求172.18.0.109将www.magedu.com解析成ip地址,172.18.0.109只有com域,而com域的子域是magedu.com域,根据区域数据库文件得到magedu.com域的DNS服务器为172.18.250.46,172.18.250.46就有www.magedu.com的主机记录,即可解析为ip
四 搭建根域的DNS服务器(172.18.0.107)
1 检查SELINUX和防火墙
检查设置方式可以参考上面,此处不再赘述
2 DNS设置
打开区域数据库配置文件
建立根域:
双引号内为域名;
类型为master,表示主DNS服务器;
file指定区域解析数据库文件的相对路径(相对于/var/named)和名称,即为/var/named/root.zone
打开总配置文件
图中表示监听本机所有ip,为所有网段的ip提供查询服务
因为172.18.0.107要当根,删掉真正的根的定义
打开并建立区域解析数据库文件/var/named/root.zone
根域将其子域com的DNS服务器委派给172.18.0.109
重启服务
客户端请求172.18.0.107将www.magedu.com解析成ip地址,172.18.0.107只有根域,根域的子域是com域,根据区域数据库文件得到com域的DNS服务器为172.18.0.109,172.18.0.109只有com域,com域的子域是magedu.com域,根据区域数据库文件得到magedu.com域的DNS服务器为172.18.250.110,172.18.250.110就有www.magedu.com的主机记录,即可解析为ip
五 搭建运营商的DNS服务器(172.18.0.106 )
172.18.0.106用作转发服务器
当DNS服务器上没有某域,且未专门设置转发时,默认将请求转发至根域DNS服务器;当DNS服务器上没有某域,且专门设置了转发时,转发方式有全局转发和特定区域转发两种类型:
全局转发:
将转发语句写在option中,表示全局转发,即客户端向DNS服务器A提出解析请求后,
若DNS服务器A上有相应的域,则由DNS服务器A进行解析,并将解析后的结果返回给客户端;
若DNS服务器A上没有相应的域,则全部转发到option中指定的DNS服务器B上:
(1)若设置转发规则为first,则将请求转发给DNS服务器B后,B未找到,则DNS服务器A会采用默认的转发路径,即将请求转发至根域DNS服务器
(2)若设置转发规则为only,则将请求转发给DNS服务器B后,B未找到),则DNS服务器A直接将解析失败的结果返回给客户端
示例:
图中表示若当前DNS服务器上没有相应的域,则全部转发到option中指定的DNS服务器:192.168.25.108
特定区域转发:
将转发语句写在zone中,表示特定区域转发,即客户端向DNS服务器A提出解析请求后,
若DNS服务器A上有相应的域,则由DNS服务器A进行解析,并将解析后的结果返回给客户端;
若DNS服务器A上没有相应的域,且该域未设置转发,则DNS服务器A会采用默认的转发路径,即将请求转发至根域DNS服务器
若DNS服务器A上没有相应的域,且该域设置了转发(即存在一个类型为forward、域名与要解析的域相同的域)则转发到zone中指定的DNS服务器B上:
(1)若设置转发规则为first,则将请求转发给DNS服务器B后,B未找到,则DNS服务器A会采用默认的转发路径,即将请求转发至根域DNS服务器
(2)若设置转发规则为only,则将请求转发给DNS服务器B后,B未找到,则DNS服务器A直接将解析失败的结果返回给客户端
示例:
vim /etc/named/rfc1912.zones
图中表示若当前DNS服务器上没有wang.com域,且为wang.com设置了转发,即将请求转发到192.168.25.108
在本实验中,172.18.0.106用作转发服务器,并未专门设置转发,直接采用的是默认的转发路径,即将请求转发至根域DNS服务器:
vim /etc/named.conf
实际上定义了一种特殊的特定区域转发,即当前DNS服务器要查询根域时,会读该语句块,将请求转发至该语句块中定义的DNS服务器:在/var/named/named.ca中定义了该DNS服务器的ip
172.18.0.106已将根指向172.18.0.107
重启服务
客户端请求172.18.0.106将www.magedu.com解析成ip地址失败
客户端请求172.18.0.106将www.magedu.com解析成ip地址,172.18.0.106上没有与该主机相关的任何信息,则会将请求转发到根,即172.18.0.107。172.18.0.107只有根域,根域的子域是com域,根据区域数据库文件得到com域的DNS服务器为172.18.0.109,172.18.0.109只有com域,com域的子域是magedu.com域,根据区域数据库文件得到magedu.com域的DNS服务器为172.18.250.110,172.18.250.110就有www.magedu.com的主机记录,即可解析为ip
本文出自 “运维” 博客,请务必保留此出处http://fightingg.blog.51cto.com/13311108/1968263
标签:dns服务
原文地址:http://fightingg.blog.51cto.com/13311108/1968263