裂脑DNS(Split DNS)的那点旧事研究
昨天夜里发生的事情
今天看到了老黄在夜里1点多更新了blog,并针对运维业务知识谈来自己的看法,这种很好的理念促动了我懒惰的双手.今天想对一个几乎是所有拥有自己DNS服务器的企业来说都存在的一个问题,如何设计和规划DNS,乍看起来我们要谈的题目有些大,所以我缩小了这个范围,将上一次和学生讨论的Split DNS问题在这里澄清.
这个国人翻译过来叫裂脑DNS的东西在很多书中没有进行深入大讨论,也不会在你参加的培训中有人会结合下面的情况进行实际分析,不过各位在设置DNS转发时老师可能都会提到.你也会看到一切企业网络中的内部DNS和外部的DNS会存在两种不同的名字,甚至他们的后缀都根本搭不上遍.我认为这是使用非常好的安全防护手段,这就像公司(普遍都这么做)的帐本,肯定都存在着两本不同的账目.我现在不想向刚学习的朋友们灌输一些技术的枝梢末节,这也就对应了老黄blog中提到的可行性方案的条目,也许这依然是那句老话:“只会安装的人领子永远是蓝色的”格言.
我身边发生的事情
我们都知道DNS本身是一个很呆傻的网络服务体系,如果它发现了一个与自己查找名字相同的区域名称来匹配的区域文件,那么这台服务器就不再向其他网点查找了,这里面有一个和我身边的一个用户有关,他喜欢将自己的主机名称设置为 “WWW” ,这是因为她叫: 吴菀文 .那么她抱着笔记本来到你们公司的时候,如果你没有规划Split DNS,反而有启用了DNS自动更新的朋友可要小心,你们公司的内网用户们将不能访问你们放置在DMZ的Web服务器了.(假设这个web服务器叫做www,一般也都这么叫).
这个故事告诉我们在不同的网络区域中, 内部DNS和外部的DNS会存在两种不同的名字.这个故事发生在你身边机会是:假设你本地DNS服务器就是vfast.com.cn解析服务器,而是上端的管理员则为你设置好了一个vfast.com.cn的区域,用于向内发布web站点.
微软曾经发生的事情
仔细考虑一下其实上面这种情况还是有可能发生的,因为我觉得80%(有点保守)的以上Active Directory 都在使用了裂脑或者叫分离DNS技术,微软设计了AD必须从DNS中查找它的数据,至少你必须从DNS中获取叫做SRV的记录来实现kerberos 验证。,这就是说任何能看到你DNS的人都能看到你DC的准确位置,而微软之前的做法是让这个区域成为“动态”,而且很多人不限制dns的区域传输,那么保护AD的方法就是让别有用心地人根本不知道它的存在。这在IDC设计时非常常见,设计者会采用Split DNS技术来把DNS系统划分为内部和外部两部分,其中外部DNS系统位于公共服务区,负责IDC正常对外解析工作,如IDC的Web服务器、IDC用户的Web服务器等解析工作全由外部DNS服务器来完成,一般采用Bind系统假设在unix和linux主机上。而内部DNS系统主要有两项工作,一是负责解析IDC内部网络的主机,如目录服务器、邮件服务器等,另一工作是负责当内部要查询Internet上域名时,其把查询任务转发到外部DNS服务器上,然后由外部DNS服务器完成查询任务,返回结果。由于把DNS系统分内外两部分,Internet上用户只能看到外部DNS系统中的服务器,而看不见内部的服务器,而且只有内外DNS服务器之间交换DNS查询信息,从而保证了系统的安全性。
这一下,我就能回答上次讲课时的那个学生的具体问题了,为什么我们的老师要讲两边dns的配置,分别在Windows和linux上了。
那么剩下的就是具体的配置问题了,关于转发器的配置,你可以到blog上看看其他人的图文并茂,不过有人会问,这不是把鸡蛋放在一个篮子里了吗?如果转发不成功,我们就上不了网了,sorry,不是你想的那样,随便看一下转发器设置的那个界面,在他的右下方,你会发现一个转发超时的默认配置时间,如果真的过了这个时间,你的DNS Server 回绕道而行的。如果你的网络确实比较大的话,还是在转发器里面多设几个IP地址吧,这样会减轻你的转发器缓存压力。
断网以后发生的事情
我们做了很多试验,也包括安全试验,因为一些特殊的代码会造成系统的嘎然,那么这种练习环境多在vpc或者vm中,并且自己隔离在Internet之外了。过了几天,我忽然发现在Active Direcotry中配置dns时发现提示及转发器为灰色,造成客户端上网时无法进行internet域名解析。这在公司搬家的时候也有可能发生,只要你新家没有连到Internet上。此时,你的DNS服务器傻的吧唧的认为自己是世界上唯一的根了,因为这是DNS体系决定的,它在没有找到那13个大哥的时候,认为自己可以当大哥了,于是决定自己成立一个“专用”的根。这种情况也会出现在AD和DNS集成的时候,最令人烦闷的是他认为永远不能和Internet连接了。发生最多的情况是在第一种环境下(长期没有联网),这不像Linux的name.ca,既然有这种情况也就有解决的办法,那么你可以使用 dnscmd /zonedelete . (注意有个空格),如果和AD已经集成了,还得加一个 /dsdel ,然后重启dns services 就可以了。当然还有两种方法,一种是打开正向搜索区域文件夹,删除 “ . ”, 如果和AD集成了就更麻烦些,还得先改区域的属性,唉。最后一种方法是找注册表
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\DNS Server\Zones\.
有钱和没有钱的事
有钱你可以按照微软的MSA CDC 分离-分离式 DNS 设计,如果你也是Contoso公司的话,哈哈。没钱就可以在单台服务器上启用Split DNS分离解析服务配置,方法也是很简单的。
交待一下睡觉前的事
还有很多东西,写着写着发现很晚了,大周末不较劲了,而且老婆不让写了,让睡觉,身体健康重要呀。在条件转发中还有另外一种脑裂工具,当然在防火墙设计中也包含了脑裂DNS的管理,这可以和转发/辅助设置等多方面结合,确保DNS的安全。有空继续了。
本文出自 “张琦” 博客,转载请与作者联系!