一、DNS基本概念
1、DNS概念:
DNS:Domain Name System ,域名解析系统,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使得用户可以方便的访问互联网,而不用去记主机对应的IP地址的过程叫做域名解析。
DNS协议运行在UDP协议之上,使用端口号53。 DNS服务器的功能:每个IP地址都有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要去记每台设备的IP地址,只需要记住相对直观有意义的主机名就可以了。这就是DNS协议所要完成的功能。
2、DNS映射方式:
主机名到IP地址的映射有两种方式:1、静态映射:每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用。2、动态映射:建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,需要再DNS服务器上查询主机对应的IP地址。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析列表中,这样可以大大提高域名解析效率。
3、DNS常用的资源记录类型
A:地址 此记录列出特定主机名的IP地址。这是名称解析的重要记录
CNAME:标准名称 此记录指定标准主机名的别名
MX:邮件交换服务器,此记录列出了负责接收到域中的电子邮件的主机。
NS:名称服务器此记录指定负责给定区域的名称服务器
4、DNS服务器类型:
缓存服务器:不负责解析,仅为加速,不需要注册
主DNS服务器:负责解析本地客户端请求
辅助DNS服务器:辅助服务器的区域数据都是从主服务器复制而来,其数据都是只读的。
5、dig命令:
语法:dig -t 资源记录类型 名称@server-ip
工作机制:不加“@server-ip”:根据 /etc/resolv.conf 配置的解析文件类查询
加“@server-ip”:根据指定的DNS服务器来解析,绕过了本地解析库中设置的DNS服务器。
dig -x IP @server-ip :查询反向解析
dig -t 资源记录类型 名称+trace:追踪解析过程
二、环境配置
1、操作系统:CentOS Linux release 7.6.1810 (Core) Windowserver2008R2
2、DNS服务器IP地址:
Domain Name: melvin.com
主DNS服务器:LinuxMaster.melvin.com 172.28.5.156
备DNS服务器:LinuxSlave.melvin.com 172.28.5.157
辅助DNS服务器:Win2008Slave.melvin.com 172.28.5.158
辅助DNS服务器:
web主机:www.melvin.com 172.28.5.156 172.28.5.157 172.28.5.158
ftp主机: ftp.melvin.com CNAME www.melvin.com.
mx邮件服务器:mx.melvin.com. 172.28.5.158
3、正向解析思路:以172.28.5.165的机器为DNS服务器,其他服务器(例如:172.28.5.155)通过DNS服务器172.28.5.156解析后以域名melvintest.com来访问172.28.5.155,在172.28.5.155上通过域名melvintest.com来登录172.28.5.156.
4、反向解析设计思路:以172.28.5.156为DNS服务器,通过172.28.5.155主机的IP来查询其域名:melvintest.com
三、正向解析配置
1、DNS服务器需要安装bind、bind-chroot、bind-utils
yum -y install bind bind-utils bind-chroot
编辑配置文件 /etc/named.conf :
vim /etc/named.conf
禁用如下三行:
启动named服务:
service named start
验证named服务是否启动:
netstat -ntlp
配置开机启动:
systemctl enable named
2、配置区域配置文件:
编辑区域配置文件: /etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
新建区域如下:
3、创建区域数据文件(/var/named/***.zone)可以复制 name.localhost文件 然后进行修改
在/var/named下建立“zone_name.zone”文件,通常只包含宏定义和资源记录,且第一个记录必须是SOA记录,(格式如下):
$TTL 600;
name[TTL] IN RR_TYPE value
注: 一个FQDN可对应多个IP ;负载均衡
多个FQDN可对应一个IP; 一台主机有多个名称,且可以用CNAME定义
vim melvin.com.zone
4、测试配置文件及区域文件是否存在语法错误
使用命令:named-checkconf
named-checkzone "melvin.com.zone" /var/named/data/melvin.com.zone
5、确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;
(1)检查主配置文件的权限
(2)检查区域解析库文件/var/named/melvin.com.zone的权限:
(3)更改权限
6、重启服务
systemctl restart named
7、更改iptables和selinux的设置(如果不了解此两项可以暂时关闭)
systenctl stop firewalld
vi /etc/sysconfig/selinux
8、分别使用(dig/nslookup)在Linux/Windows主机进行查询DNS相关资源记录。
(1)使用dig命令在Linux主机上进行DNS资源查询
dig -t SOA melvin.com @172.28.5.156
(2)使用nslookup命令在windows系统平台下测试DNS相关资源记录:
以上操作步骤,一台能够正向解析的bind服务器就配置成功了。
四、配置反向解析bind服务
正向解析与反向解析各自采用不同的解析库,一台DNS服务器可以只有正向解析库或只有反向解析库,也可以同时提供正向/反向解析。
反向区域的区域名称格式:
ReverseIP.in-add.arpa.
例如:假如网络地址为 172.16.100.1 那么规则命名为100.16.172.in-addr.arpa
这里我本地的内网IP地址为:172.28.5.0 ,所以则写成 5.28.172.in-addr.arpa
1、修改配置文件 /etc/named.conf , 添加反向解析区域配置文件
vim /etc/named.conf
2、创建反向区域解析文件 28.172.zone (可以复制 melvin.com.zone这个文件,然后进行修改)
vim /var/named/28.172.zone
3、检查语法错误
named-checkconf
named-checkzone "28.172.zone" /var/named/28.172.zone
4、设置权限
5、重启dns服务
systemctl restart named
6、使用Windows系统客户端进行验证解析
以上配置步骤完成了主bind服务器的配置方法,能够实现正向解析,同时也可以实现反向地址解析
五、rndc的相关知识
1、什么是rndc:
rndc:Remote Name Domain Controller ,远程名称域控制器,rndc是BIND安装包提供的一种控制域名服务运行的工具。
rndc 通过一个TCP连接与名字服务器通信,发送经过数字签名认证的命令。在当前版本的rndc和named中,唯一支持的认证算法是HMAC-MD5 , 在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的key_id签名。
监听端口:953/tcp
语法:
rndc [-b address] [-c config] [-s server] [-p port]
[-k key-file] [-y key] [-V] command
command is one of the follwoing:
reload Reload configuration file and zones . #重新加载配置文件和区域文件
reconfig Reload configuration file and new zones only . #重新加载配置文件和新的区域文件
freeze Suspend updates to all dynamic zones.
stats Write server statistics to the statistics file. #将服务器统计信息写入统计文件中
stop Save pending updates to master files and stop the server.
halt Stop the server without saving pending updates.
flush Flushes all of the server's caches. #清空DNS缓存
status Display status of the server. #显示bind服务器的工作状态
2、rndc的调试和日志:
调试:显示程序运行中的详细信息(会产生I/O,正常情况下建设关闭)
调试级别:0,1,2,3 ....
提升调试级别:
rndc trace
rndc trace LEVEL
rndc notrace
打开查询日志:记录查询动作(会增加磁盘I/O)
rndc querylog
六、区域传送原理
1、为什么需要区域传送:
DNS辅助服务器是一种容错设计,考虑的是一旦DNS主服务器出现故障或因负载太重无法及时响应客户机请求,辅助服务器将挺身而出代替主服务器。辅助服务器的区域数据都是从主服务器复制而来,因此辅助服务器的数据都是只读的,当然,如果有必要,我们可以很轻松地辅助服务器升级为主服务器。辅助服务器从主服务器复制区域数据的过程叫“区域传送”。区域传送使用TCP的53号端口。
2、区域传送的类型:
(1)完全区域传送(AXFR)
(2)增量区域传送(IXFR)
3、区域传送原理
七、辅助DNS服务器的配置
注意:辅助DNS是针对区域来说的;如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将不向其发送通知;
1、区域的定义:
zone “区域名称” IN {
type slave; #区域类型为辅助
file "slaves/ZONE_NAME.zone"; #区域文件必须保存在slaves目录下,放在其他目录没有权限
masters { #指出主服务器是谁,注意:花括号前后要有一个空格
MASTER_DNS_IP;
MASTER_DNS2_IP;
};
};
2、辅助DNS和区域传送的配置:
第一步:先创建一个辅助DNS (分别在LinuxSlave 和win2008的虚拟主机中实现)
(1)在LinuxSlave主机上安装bind服务并做相应的配置:
yum -y install bind bind-chroot bind-utils
编辑/etc/named.rfc1912.zones,添加如下记录:
检查语法错误:
named-checkconf
(2)在主DNS服务器所在LinuxMaster主机上的区域文件/var/named/melvin.com.zone 和/var/named/28.172.zone中添加相应的记录:
检查语法错误、重读配置文件
在主DNS服务器上,用dig命令做下检测,看看新增加的记录是否出现:
3、在windows server 2008 R2 上配置辅助DNS
准备工作:配置好网络,是的win2008虚拟机能够ping通主DNS服务器并安排好DNS相关组件。
win2008 服务器创建DNS服务器角色:
新建DNS区域:
同样的方法创建反向代理区域:
第二步:实现从主DNS服务器完全同步区域数据文件,查看日志文件验证辅助服务器是否完成同步:
在辅助DNS服务器上使用dig命令检测是否能从主DNS服务器同步数据(完全区域传送)
在辅助DNS服务器上查看对应的区域文件是否已经有了:
ls /var/named/slaves/
第三步:在主DNS服务器上新增一条资源记录并查看日志文件,然后到辅助DNS服务器上查看日志是否完成增量数据同步
rndc reload
查看辅助DNS服务器日志信息:
第四步:在windows客户端用nslookup 命令来验证辅助DNS的配置
八、DNS服务器配置总结
1、每个DNS服务器必须要有一个对应的NS资源记录;
2、创建slave的时候,其配置文件类型必须是type slave ;必须指定主服务器的IP地址
3、可以使用dig -t axfr test.com @server_IP 从主DNS服务器拉取所有解析库资源记录;
4、主辅同步完成后,将自动在slave服务器上的slaves/目录下生成zone文件,这些区域文件是从主DNS同步过来的,一般为只读,不建议更改slave的zone文件;
5、在主DNS上修改区域文件时,必须将SOA记录的serial加1因为slave是通过serial值来进行判断更新的(windows系统上是自动完成的);
6、DNS的日志默认全部保存在/var/log/messege文件中;
7、DNS的解析依赖于解析库,所以就算是所配置的内容是完全不存在的也可以解析(且正向解析和反向解析的解析是各自独立的)。需要注意,正向解析力没有PTR记录,而反向解析库里不需要A记录、MX记录和CNAME记录。