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.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 修改
然后将此文件都传到各自角色的机器里即可。