1  什么是DNS? 

  DNS(Domain Name Server,域名服务器)即域名解析服务,是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

2 DNS工作方式

  递归查询  #若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。

  迭代查询 #根据客户机向非权威域名服务器提交域名解析查询请求后,逐级进行查询直到查到结果或者没有得到结果,都将最终结果传送给客户机的行为。

  说明:假设你要寻找一家你从未去过的公司,你会有2种解决方案,1是找一个人替你问路,那可能是你的助手,2是自己问路,每走过一个路口,就问一个人,这就好比递归查询和迭代查询,递归查询在这里代表你的第1种解决方案,而迭代则是第2种解决方案。

3 DNS应用层协议及端口

  使用的协议有两种,TCP和UDP协议,端口是53,TCP协议负责主从服务器同步记录,UDP协议除了负责主从同步记录并且负责查询工作。

4  DNS服务器类型

  主DNS服务器:管理和维护所负责解析的域内解析库的服务器

  从DNS服务器:从主服务器或从服务器复制解析库副本

  序列号:解析库版本号,主服务器解析库变化时,其序列递增刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔                        重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔过期时长:从服务器联系不到主服务器时,多久后                         停止服务

   “通知”机制:主服务器解析库发生变化时,会主动通知从服务器

 5 DNS解析流程

   一次完整的查询请求经过的流程:Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->         二级域名DNS…

  centos6.9版本里,提供DNS域名解析服务的默认组件是bind,可以用 yum info bind 查询当前安装包库里的bind版本信息,其服务名是named,主要文件如下:

centos服务器更换域名解析服务 centos 域名服务器_开发工具

centos服务器更换域名解析服务 centos 域名服务器_开发工具_02

 

 在/etc/named.conf文件里可以修改DNS相关参数

centos服务器更换域名解析服务 centos 域名服务器_运维_03

 

named-chkconf命令可以检测named.conf文件的语法错误。

/etc/resolv.conf           #文件里存的是本机的DNS服务器地址

 dig www.qq.com @127.0.0.1     #查询www.qq.com对应的IP地址,@后边跟地址意思是向那个地址的DNS服务器查询

 

区域数据库的增加及修改,此文件位置在/etc/named.rfc1912.zones,在相对应的格式下添加自己的域名,比如我们这里要添加一个chykj.com的主域名解析记录

1 zone "chykj.com" IN {         #此处填上你的域名信息
2         type master;               #因为是主解析服务器,所以这里应该是master类型                                                                                
3         file "chykj.com.zone"       #此处填你此域名数据库文件名字,相对应的在/var/named下边也要创建你的同名文件,格式参考/var/named/named.localhost文件
4         allow-update { none; };   #是否允许从解析服务器同步更新
5 };

1 cp -p /var/named/named.localhost /var/named/chykj.com.zone  #将named.localhost作为模板,复制一份名字为chykj.com.zone,文件属性要相同所以这里-p

 

centos服务器更换域名解析服务 centos 域名服务器_centos服务器更换域名解析服务_04

 这两个文件改完了,可以用named-checkconf来检测有没语法错误。

解析库文件语法检查:named-checkzone "chykj.com" /var/named/chykj.com.zonerndc status|reload ;service named reload      

这两步都做完了,切记启动named服务,不然会报错,如果启动服务还报以下错误。

运行 rndc reload 提示 rndc: neither /etc/rndc.conf nor /etc/rndc.key was found 

解决方法:  1  rndc-confgen -r /dev/urandom -a    #手动创建key

       2 chown root:named /etc/rndc.key     #修改rndc.key 文件属主

       3 chmod 644 /etc/rndc.key        # 修改rndc.key 读权限   

       4 /etc/init.d/named restart         # 重启named 服务

建立主从域名服务器:

1 yum install bind                  #安装bind服务systemctl start named                #启动服务systemctl enable named               #开启开机自启动

2 vim /etc/named.conf                #修改主配置文件 listen-on port 53 { localhost; }; allow-query { any; };                 #允许所有人查询

3 vim /etc/named.rfc1912.zones            #修改rfc配置文件

zone "chykj.com" IN {             type master;                     #设置其为主域名服务器 file "chykj.com.zone";                 };

4 vim /var/named/chykj.com.zone            #修改区域数据库文件$TTL 1D                       #本段域,刷新周期为1天@ 2D IN SOA dns1 admin.chykj.com. (          #SOA记录,声明dn1为主域服务器,邮件服务器为admin.chykj.com. (如果要添加域名后缀,需在后缀加.) 2017 ; serial                              #标签为2017 86400 ; refresh                    #主从服务器更新周期为86400秒即1D 1H ; retry                       #如果从主联系失败后,每隔1小时重新尝试连接更新 1M ; expire                       # 3H ) ; minimum NS dns1dns1 2D A 192.168.25.107websrv A 192.168.25.106www CNAME websrv

chgrp named /var/named/chykj.com.zone         #修改文件属组为named组

5named-checkconfnamed-checkzone chykj.com /var/named/chykj.com.zone   #此两项为检查配置文件语法正确与否systemctl restart named                 #重启服务生效

测试命令dig

dig [-t type] name [@SERVER] [query options]dig只用于测试dns系统,不会查询hosts文件进行解析 查询选项:+[no]trace:跟踪解析过程 : dig +trace chykj.com+[no]recurse:进行递归解析测试反向解析:dig -x IP = dig –t ptr reverseip.in-addr.arpa模拟区域传送:dig -t axfr ZONE_NAME @SERVERdig -t axfr chykj.com @10.10.10.11dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1dig -t NS . @114.114.114.114dig -t NS . @a.root-servers.net

 ========================================================================

域名反向解析

1 修改/etc/named.rfc1912.zones         #修改区域数据库

1 zone  "40.18.172.in-addr.arpa" IN {      #建立一个172.18.40.0段的反向解析
2            type master;             
3            file "172.18.40.zone";
4 };

2  在/var/named目录下建立一个172.18.40.zone配置文件

1 $TTL  1D
2 @  IN SOA dns1.chykj.com.   admin.chykj.com.  ( 1 10m 2m 1h 3h )
3            NS   dns1.
4 101    PTR    dns1.chykj.com.
5 104    PTR    dns3.chykj.com.
6 105    PTR    chykj.com.

 =================================================

创建转发服务器

(1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器Options {forward first|only;forwarders { ip;};};

#first选项:如果A向B提交一个域名解析请求,B会去网络找地址,如果找不到地址,则A机器会亲自去互联网或者根DNS找地址。

#only选项:如果A向B提交一个域名解析请求,B如果找不到地址,则此次解析任务就失败,A也不会去互联网继续找。

 

 (2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高zone "ZONE_NAME" IN {type forward;forward first|only;forwarders { ip;};};

以上操作均是在/etc/named.rfc1912.zones修改

--------------------------------------------------------------

根服务器建立是在/var/named/named.ca 修改

centos服务器更换域名解析服务 centos 域名服务器_服务器_05

然后将此文件都传到各自角色的机器里即可。