centos的DNS服务工作流程及搭建
1 什么是DNS?
DNS(Domain Name Server,域名服务器)即域名解析服务,是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
2 DNS工作方式
3 DNS应用层协议及端口
使用的协议有两种,TCP和UDP协议,端口是53,TCP协议负责主从服务器同步记录,UDP协议除了负责主从同步记录并且负责查询工作。
4 DNS服务器类型
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器复制解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔过期时长:从服务器联系不到主服务器时,多久后 停止服务
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器
5 DNS解析流程
![](https://images2017.cnblogs.com/blog/1199208/201709/1199208-20170919210550462-686305359.jpg)
![](https://images2017.cnblogs.com/blog/1199208/201709/1199208-20170919211406134-937283054.jpg)
![](https://images2017.cnblogs.com/blog/1199208/201709/1199208-20170919215806618-607261515.jpg)
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 修改
然后将此文件都传到各自角色的机器里即可。