centos的DNS服务工作流程及搭建

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,主要文件如下:
 
 在/etc/named.conf文件里可以修改DNS相关参数
 
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

 

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

解析库文件语法检查:
named-checkzone "chykj.com" /var/named/chykj.com.zone
rndc 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 dns1
dns1 2D A 192.168.25.107
websrv A 192.168.25.106
www CNAME websrv

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

5
named-checkconf
named-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 @SERVER
dig -t axfr chykj.com @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig -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 修改

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

原文地址:https://www.cnblogs.com/chenyongmou/p/7553862.html