我正在设置新的服务器环境,包括70多个运行Linux的服务器(Redhat / CentOS混合)。我想要设置一些DNS服务器(主/辅助),以便在所有服务器上使用/configuration主要关心以下事情。
1.用于parsing本地服务器条目的权威DNS。
我想分配简单的域名到服务器(主要是Alogging),如db1.example.int
或app1.example.int基本思想是服务器应该能够通过那里(内部)DNS名称到达对方。
2.公有域的recursion/cachingDNSparsing(如google.com)。
为了parsing除本地域(example.int)以外的任何DNS条目,应该将qory发送到configuration为转发器的上游DNS服务器。
目前我正在为此探索BIND&dnsmasq。 我应该去BIND还是应该尝试dnsmasq(由于dhcp-disabled – 因为我的所有服务器都将使用静态IP),请分享您的想法和经验,如果工作在类似的设置。
通常这被称为“分裂DNS”。 您创build一个系统,其中在公司外部看到的DNSlogging与在公司内部看到的DNSlogging不同。 特别是,外部人员看到www.example.com和其他外部可见的主机。 公司内部的所有机器都有DNSlogging……这些logging在外面看不到。
通常,公司内部的机器位于公司域的子域中。 例如,如果你的公司是example.com,那么里面的所有机器都是MACHINENAME.corp.example.com。 这个问题是,你永远不能使用“corp.example.com”作为外部DNS名称。
警告:我曾经看到一家公司使用“内部”而不是“公司”。 当营销想要build立一个名为“inside.example.com”的外部网站(使用他们的产品的“内部人士指南”)时,这变成了一个政治上的噩梦。
警告:我强烈推荐额外的层级。 MACHINENAME.LOCATION.corp.example.com。 “位置”可以是总部的“hq”,NYC销售办公室的“nyc”等等。大多数组织使用三字母代码,通常是最近的机场代码。
当我在一家公司时,我们在总部所有的机器都是“MACHINENAME.corp.example.com”,因为我们不认为我们会有当地的办事处。 当我们在别处打开大型办公室时,他们是“MACHINENAME.SITE.corp.example.com”。 我们写的每一个工具都必须“特例”总部不同的事实。 最终,我们不得不改变总部就像所有其他网站。 这是一个痛苦的过渡。 但是,我看到公司一再犯这个错误。 因此,即使你没有增长计划,我仍然build议MACHINENAME.LOCATION.corp.example.com。
BIND和其他DNS系统可以configuration为根据DNS请求的来源或DNS请求的接口提供不同的答案。
例如,如果您在公司内部有一个带有1个NIC的DNS服务器,并且在公司外部有1个NIC:
网卡内部:
外网卡:
您也可以有两台不同的机器,每台机器configuration不同。
软件:
注意:我不认为dnsmasq可以分割DNS。 BIND可以像大多数其他“企业”产品一样。 在手册中查找“视图”或“分割DNS”。