6.DNS部署与安全
1.域名组成概述
以www.sina.com.cn为例,sina.com.cn是域名,需要购买。
.com是根域名,我们购买的是顶级域名(也叫一级域名),如上就是sina.com,买完后可以根据自己需求做配置,比如配置www.sina.com给某台服务器使用,再配置个mail.sina.com给另一台服务器。这里的www和mail就是二级域名,也被称为主机名。
一个完整的主机名+域名对应的是某台服务器,其IP地址可以用nslookup指令来查看:
2.DNS(域名解析)服务
输入域名访问网站时,需要域名解析获取其相应的IP地址,以www.baidu.com为例,客户机会先在本地缓存中查找,找不到会到Host文件中查询,再没有会发请求给本地DNS服务器,本地DNS服务器先查看自己的缓存,找不到会把请求发给根域服务器(.)(目前架设在国外),根域服务器发现此域名以.com结尾,会告诉DNS服务器.com对应的域服务器的IP地址,随后此DNS服务器再发送请求给相应的.com域名服务器,.com域名服务器找到baidu.com对应的域名服务器IP地址,返回给DNS服务器后,此DNS服务器再发送请求给baidu.com域名服务器,它会返回最终的IP地址,随后此DNS服务器会把此IP地址缓存并返回给客户机,客户机也会将之缓存下来。
一般来说,本地DNS服务器是一些公网的服务器,但有些公司会有搭建自己专用的DNS服务器的需求,这里有个概念,就是私有的DNS服务器一般会有个是否"负责"的判断,如果一些DNS请求在本地缓存和Host中找不到,且此域名不在自己要负责的范围内,此时分两种情况:
1.若设置了转发器,它不会去请求根域服务器,而会用DNS转发器把此请求转发给公网的DNS服务器,这相当于将请求各级子域服务器的压力转移给了公网的DNS服务器,可以提高公司员工的解析速度。
2.若未设置转发器,它会直接请求根域服务器,这就和正常流程一样了。
解析也分为两种,正向解析和反向解析。
正向解析是把域名解析成IP地址,反向解析是把IP地址解析成域名。
3.DNS服务器搭建:
现在用Win2003虚拟机来搭建一下DNS服务器,首先要安装DNS服务:
这里可以参考之前写的DHCP部署:
https://www.cnblogs.com/czw52460183/p/13387997.html
类似地,我们先给虚拟机配上静态IP地址,挂载此光盘后选中"安装可选的Windows组件",随后双击网络服务组件,选中DNS服务,点击确定并点下一步进行安装:
注意,此时可能会弹这种提示:
这是因为装虚拟机时,我们做了分区,把原先光驱所在的D盘,重新划分到了E盘,而这里仍去D盘找此DNS服务相关文件,自然是找不到的。
我们把盘符改成光驱所在盘即可,我这里是E盘:
点击确定后继续安装,此窗口可能又会弹出几次,还是按此方法修改即可。
DNS监听端口号是53,安装好后可以看到此端口已经打开:
注意,此时只安装好了DNS服务,若把客户机的DNS地址指向此服务器(此服务器能上网),并发送访问百度的请求,是否能正确解析呢?
答:按我们之前的思路来分析。
首先,由于此时它刚搭建,无缓存,因此找不到对应解析条目。
其次,我们还未做设置,因此也是不负责的。
再然后,由于我们还未设置转发器,因此会直接访问根域服务器,由于此服务器能上网,因此能正常得到根域服务器的应答,接下来的流程就和正常解析流程一样,因此是能正确解析的。
在开始->管理工具中可以看到DNS服务选项,点开它,在相应的服务器下,有两种查找区域,分别对应之前说的正向解析和反向解析。
我们这里先新建个正向解析的查找区域,右键->新建区域:
点击下一步后选择要创建的区域类型,其中主要区域代表主服务器,辅助区域是当已经存在主服务器时,做备份用的。存根区域用于创建自己的根域服务器,一般不会用到。
我们这里选主要区域:
为区域命名,建议填上想负责的区域的名称,比如我们解析百度相关的域名:
点下一步后点确定,会在C盘生成相应的区域解析文件:
随后一直点下一步直到完成。
此时可以在服务界面上看到此区域的解析条目:
现在里面已经有了两条解析条目:
第一条类型是SOA,代表这是权威服务器,即所有该名称的解析以它为准,后面的数据说明目前是本主机
注意,名称里的"与父文件夹相同"即没有主机名,代表本条解析的就是baidu.com
第二条类型是NS,代表这是备份服务器,后面的数据说明目前负责解析baidu.com的只有本主机
现在我们开始添加新的解析条目,右键->新建主机,在名称里填上主机名,比如我们要解析baidu.com下的www为主机的域名,就填www,下面填上此域名相应的IP地址,这里为了简便起见,我们就随便写个1.1.1.1,再点击确认后就添加完毕了:
现在来验证一下,我们在另一台WinXP虚拟机上做测试:
先要把它的DNS地址指向我们的服务器,我们手动配置一下:
现在我们用nslookup指令在XP上看下www.baidu.com的IP地址,是否是之前配置的1.1.1.1:
可以看到,www.baidu.com已经被解析成了1.1.1.1。
为了方便理解,我们在真实机上(Win10)也解析下www.baidu.com:
上面的结果代表真实机将www.baidu.com这个域名送到了192.168.1.1去请求解析,解析的结果是180.101.49.11和180.101.49.12两个IP地址,另外本次解析是非权威解析,意思是192.168.1.1也是去请求了其他服务器,并将得到的结果返回给了我们,并不是它本身内置的解析条目。
另外补充一点,ping某个域名的时候,其实第一步做的是域名的解析,我们在WinXP虚拟机上测试下ping下www.baidu.com:
可以看到,虽然没有Ping通,但解析是成功的,www.baidu.com被成功解析成了1.1.1.1
DNS缓存问题:
记录一个小问题,就是由于有缓存的存在,当服务器中解析的IP地址被修改时,由于客户机发起DNS请求时是先从缓存拿的,会拿到之前的IP地址。
我们做下测试,先在Win2003服务器上把www.baidu.com的解析从1.1.1.1改成1.1.1.2:
随后在XP客户机上尝试ping www.baidu.com:
可以看到,解析出来的仍然是1.1.1.1,估计是因为DNS缓存未更新的缘故,我们再用nslookup尝试一下:
咦,为什么nslookup能成功解析呢?经过一番查询,我发现自己对nslookup的理解有误,实际上它不会去修改/读取DNS缓存,它是直接对DNS服务器做的查询,因此是必然能得到DNS服务器上的正确结果的。
为了验证,我们用ipconfig /displaydns来查看下DNS缓存:
果然,DNS缓存中仍是1.1.1.1,再次证明nslookup不会修改DNS缓存。
那我们怎么更新XP客户机中的DNS缓存呢?答案是用ipconfig /flushdns来实现,我们做下尝试:
可以看到,刷新DNS缓存后,ping的解析成功了,且DNS缓存中也成功修改为了1.1.1.2。
现在我们来熟悉下DNS转发功能:
我们再开一台Win2003虚拟机作为第二台DNS服务器,还是像之前一样,先配置静态IP为10.1.1.2(上一台为10.1.1.1)
随后安装DNS服务,参考上文即可。
这台服务器负责解析qq.com的相关域名,参照上文进行设置:
为它建立一条www.qq.com的解析条目,IP地址随便配置一个:
此时由于客户机配置的还是第一台DNS服务器的地址,肯定是无法解析www.qq.com的,但我们可以建立转发器来解决此问题。
在第一台DNS服务器的主机那里右键->属性,在打开页面的转发器页签下,添加第二台DNS服务器的IP地址:
这样就完成了,我们在XP客户机下做一下测试:
可以看到,虽然DNS服务器仍然指向的是10.1.1.1(第一台),但www.qq.com已经能成功被解析了。
然后我们看一下如何在另一台服务器上备份某个解析域:
我们打算把第一台服务器的baidu.com解析域备份到第二台DNS服务器上。
首先在第一台DNS服务器的baidu.com域右键->属性,选中区域复制页签,勾选"只允许到下列服务器"选项,然后填入第二台DNS服务器的IP地址:
随后在第二台DNS服务器上右键->新建区域,这次选择"辅助区域",区域名称就是我们要备份的baidu.com:
随后填入主DNS服务器(即第一台DNS服务器)的IP地址:
随后点击完成即可。
此时可能会出现备份的baidu.com解析域报错的问题,这种情况下只要多刷新几次就可以了:
完成