dns解析过程:
如图所示,PC1主机的域名为www.cisco.com, ip地址为1.1.1.1 ,PC2主机的域名为www.kernel.org,ip地址为2.2.2.2 。现以PC1访问PC2的过程来介绍dns解析过程。
1.在PC1的浏览器上输入www.kernel.com,PC1先查看自己的dns缓存记录,若缓存中有该记录,直接将www.kernel.org 解析成ip地址,进而通过该ip地址进行访问。
2.若PC1的缓存中没有该条记录,则将该域名发送给自己指定的dns服务器dns6.
3.dns6查看自己的dns缓存,若缓存中有www.kernel.org 的条目,则将条目对应的ip地址发送给主机PC1。
4.若dns6 上没有www.kernel.org 的缓存,则向它的上一级dns2服务器进行查询。
5.dns2查看自己的缓存是否存在www.kernel.org 条目,若有则将ip地址发送给dns6,由dns6发送给PC1主机。若dns2服务器的缓存内也没有该条记录,dns2则向上一级的根dns1查询。
6.dns1收到请求后,检查域名www.kernel.org 发现它的顶级域名为org,而自己知道管理org区域的dns服务器为dns4,就将dns4的ip地址发送给dns2。
7.dns2得到dns4de ip后,向dns4查询www.kernel.org 的信息,dns4检查域名结构发现是到达kernel组织的请求,将负责kernel区域的dns服务器dns7的ip地址发送给dns2。
8.dns2得到dns7的地州,将查询请求发送到dns7 ,查询www.kernel.org,dns7 检查域名结构,发现请求的是自己管理的一台主机的域名www.kernel.org ,将该主机的ip地址发送给dns2 ,dns2将该条记录记录到自己的dns缓存内,以备将来使用,同时将该ip地址发送给dns6,dns6同样将该条记录记录到自己的dns缓存内,同时将ip地址发送给PC1,这样PC1就得到了www.kernel.org的ip地址。
案例一:
实验要求:
有3台dns服务器,两台dns服务器dns server1 和 dns server 2 为linux服务器,另一台为windows sever2008 服务器。要求windows dns server 与dns server 1互相备份, dns server 1管理父域 abc.com和子域bj.abc.com ,dns server 2 管理子域sh.abc.com, dns server 1授权dns server 2 来管理子域sh.abc.com;在dns server 2上做根提示和转发(有条件和无条件转发)使子域sh.abc.com内的主机能够解析父域 abc.com和子域bj.abc.com的主机。
拓扑示意图:
Linux DNS Server 1 配置:
1.新建挂载点/mnt/cdrom ,将光盘挂载到挂载点上
2.安装域名解析软件:
bind-9.3.6-4.P1.el5.i386.rpm 主程序软件
bind-chroot-9.3.6-4.P1.el5.i386.rpm 安全软件
caching-nameserver-9.3.6-4.P1.el5.i386.rpm 生成caching-only只做缓存的服务器,以及生成配置文件named.conf的模版
3.将/var/named/chroot/etc/named.caching-nameserver.conf 复制为 named.conf,复制时要加上-p 参数,这样named.conf 的权限和所有者,所属组就相同了。
4.编辑bind的配置文件named.conf
5.检查named.conf配置文件是否有错误:named-checkconf named.conf
6.编辑区域声明文件:named.rfc1912.zones
7.产生区域文件,由于在上步的区域声明文件中指明了两个区域文件,切换到/var/named/chroot/var/named 将localdomain.zone 复制成abc.com.zone和bj.abc.com.zone,要加-p 选项
8.编辑abc.com.zone文件
编辑bj.abc.com.zone
Linux DNS Server2 配置:
1.新建挂载点/mnt/cdrom ,将光盘挂载到挂载点上
2.安装域名解析软件:
bind-9.3.6-4.P1.el5.i386.rpm 主程序软件
bind-chroot-9.3.6-4.P1.el5.i386.rpm 安全软件
caching-nameserver-9.3.6-4.P1.el5.i386.rpm 生成caching-only只做缓存的服务器,以及生成配置文件named.conf的模版
3.将/var/named/chroot/etc/named.caching-nameserver.conf 复制为 named.conf,复制时要加上-p 参数,这样named.conf 的权限和所有者,所属组就相同了。
4.编辑bind的配置文件named.conf
5.检查named.conf配置文件是否有错误:named-checkconf named.conf
6.编辑区域声明文件:named.rfc1912.zones
7.切换到/var/named/chroot/var/named,将localdomain.zone 拷贝成 sh.abc.com.zone
cp -p localdomain.zone sh.abc.com.zone
windows DNS Server配置:
1.安装dns服务器
2.打开DNS管理器,右击主机名新建区域,使该服务器可以复制具有相同名称的主dns的区域内的记录
3.由于该服务器用作DNS Server 1的备份服务器,所以在此选择新建辅助区域
4.选择正向查找区域
5.该辅助dns服务器负责的区域,要与主dns服务器上的区域名称相同。
6.写出该服务器复制主dns服务器的ip地址
7.同理,新建区域bj.abc.com,使该辅助dns服务器可以复制主dns服务器上相同区域名称的记录。
8.写出该服务器复制主dns服务器的ip地址
9.刷新,可以看到已经复制了主dns服务器的区域abc.com和bj.abc.com的记录
现在拿一台测试PC,将其dns指向父域dns192.168.101.250
解析父域内的主机
解析子域bj.abc.com内的主机
解析子域sh.abc.com区域内的主机
将该测试PC的dns指向子域sh.abc.com的ip 192.168.101.249。
清空dns缓存
解析该区域内的一台主机
解析父域abc.com区域内的主机,解析失败
可以在管理区域sh.abc.com饿dns服务器上配置根提示或者转发器 ,使dns2不能解析的转发到其他dns服务器上进行解析,下面先配置根提示:
在/var/named/chroot/var/named下有一个named.ca文件
编辑该文件,编辑后重新加载文件
再次解析,能够成功解析
下面设置转发,使dns2无法解析的域名发送到dns1。
转发分为有条件转发和无条件转发
首先删除刚设置的根提示转发到dns1的条目,修改named.conf文件(文件named.rfc1912不行) (无条件转发)
重启服务,或rndc reload
或者是修改named.rfc1912.zones文件(有条件转发)
案例二:
一、linux作为主dns,windows server2003作为辅助dns
1.在linux上配置dns服务器,管理的区域名为:abc.com
更改刷新策略,便于验证
禁用防火墙
在windows上安装dns辅助服务器
1.
2.
3.
4.此处为辅助dns,所以区域名称应和主dns区域相同
5。主dns服务器地址
6.
7.改变序列号
8.rndc reload
9.日志文件,显示完全备份完成
10.
11.改变序列号,增加一条,保存,rndc reload
12.
在当前情况下,所有的辅助dns都能和主dns进行同步,不太安全。要对辅助dns进行限制
13.man 5 named.conf,查找关于allow的关键字,在options下找到allow-transfer{},将其添加到named.conf中。或者是在named.rfc1912.zones中区域abc.com中添加相同的语句
:allow-transfer { 192.168.2.102; };
man 5 named.conf 查找zone,可知在named.rfc1912.zones也可添加该语句
14 此时只有IP地址为192.168.2.102的辅助dns才能和主dns同步
再次更改序列号,但是辅助dns ip地址还是2.101
15.可以发现,同步被拒绝
16.。将辅助dns ip 地址给位192.168.2.102,,更改序列号,再次rndc reload
17.
案例三:
二、linux作为辅助dns,windows server2003作为主dns
1.在windows20003上安装DNS服务器
2.在linux上安装bind软件
3. cp –p named.caching-nameserver.conf named.conf ,编辑named.conf
4.编辑named.rfc1912.zones
5.重启dns服务,打开日志,切换到/var/named/chroot/var/named/slaves
在windows中dns中增加记录
案例四:
三 、linux dns管理父域,windows dns管理子域
拓扑图
1.在linux上配置dns服务器
2.
3. vim named.rfc1912.zones ,新建区域 父域abc.com 和子域 bj.abc.com
4.分别编辑两个区域文件
编辑abc.com.db文件
5.
6.该DNS服务器需要对管理子域的windows dns服务器进行授权。
在父域的区域文件中添加语句:
sh.abc.com. IN NS ns.sh.abc.com.
ns.sh.abc.com. IN A 192.168.2.101
7.对dns2 配置
8.
9.
10.
11.
12 。另外找一台PC进行测试
先将DNS指向dns1
13.
在dns1上询问dns2管理的域
14.更改验证PC的dns指向,指向dns2
15。此时解析sh.abc.com区域,能够解析
16.要是对父域abc.com 和bj.abc.com区域进行解析,发现无法解析
17.这是由于在sh.abc.com上未设置上层dns的位置。
有两种方式:一.根提示的方式。 二.转发器
一.根提示的方式
在windows server 2003 中
此时在验证PC 上,解析成功
二.转发器
删除刚刚配置的根提示配置。确保验证PC 不再能解析父域abc.com 和bj.abc.com 区域。
18.使用转发器,如果按照当前配置,全部dns请求都将转发到ns.abc.com. 也就是192.168.2.100 服务器进行处理。如果有用户请求该windows server 2003 dns 服务器对百度等网站进行请求,该dns也将把不能解析的请求发送到192.168.2.100 服务器,则将无法解析,所以应该对转发器进行修改。
原来的配置
更改为
只将查找abc.com区域的才会转发到192.168.2.100
案例五:
四 、windows dns管理父域,linux dns管理子域
拓扑图
1.在windows 2k3上安装dns域名解析服务
2.
3.
4.新建主要区域bj.abc.com
5.
6.
7.在linux上配置dns服务器,创建区域sh.abc.com
2.
3.
4.
5.