我正在设置新的服务器环境,包括 70 多台服务器,所有服务器都运行 Linux(Redhat/CentOS 混合)。我想设置几个 DNS 服务器(主要/次要),以便在所有应该能够使用的服务器上使用/配置主要关心以下事情。
1. 用于解析本地服务器条目的权威 DNS。
我想将简单的域名分配给像 db1.example.int
或 app1.example.int 这样的服务器(主要是 A 记录) 基本想法是服务器应该能够通过那里的(内部)dns 名称相互访问。
2.公共域(如google.com)的递归/缓存DNS解析。
对于解析本地域 (example.int) 以外的任何 DNS 条目,应将查询发送到配置为转发器的上游 DNS 服务器。
目前我正在为此目的探索 BIND & dnsmasq。我应该使用 BIND 还是应该尝试 dnsmasq(禁用 dhcp - 因为我所有的服务器都将使用静态 IP。)如果在类似的设置上工作,请分享您的想法和经验。
通常,这称为“拆分 DNS”。您创建了一个系统,其中在公司外部看到的 DNS 记录与在公司内部看到的 DNS 记录不同。特别是,外人看到 www.example.com 和其他外部可见的主机。公司内部所有机器都有DNS记录……这些记录在外面是看不到的。
通常,公司内部的机器位于公司域的子域中。例如,如果您的公司是 example.com,那么里面的所有机器都是 MACHINENAME.corp.example.com。这样做的问题是您永远不能使用“corp.example.com”作为外部 DNS 名称。
警告:我曾经看到一家公司使用“inside”而不是“corp”。当营销部门想要创建一个名为“inside.example.com”的外部网站(使用他们产品的“内部人员指南”)时,它变成了一场政治噩梦。
警告:我强烈建议增加一个层次结构。MACHINENAME.LOCATION.corp.example.com。“location”可以是总部的“hq”,纽约销售办事处的“nyc”等。大多数组织使用 3 个字母的代码,通常是最近的机场代码。
当我在一家公司时,我们在总部的每台机器都是“MACHINENAME.corp.example.com”,因为我们认为我们不会在当地设有办事处。当我们在其他地方开设大型办公室时,它们是“MACHINENAME.SITE.corp.example.com”。我们编写的每个工具都必须“特殊情况”,即总部不同。最终,我们不得不将总部更改为与所有其他站点一样。这是一个痛苦的过渡。然而,我看到公司一次又一次地犯这个错误。因此,即使您没有超过一栋建筑的增长计划,我仍然推荐 MACHINENAME.LOCATION.corp.example.com。
BIND 和其他 DNS 系统可以配置为根据 DNS 请求的来源或 DNS 请求出现的接口提供不同的答案。
例如,如果您的 DNS 服务器在公司内部有 1 个 NIC,在公司外部有 1 个 NIC:
网卡内部:
网卡外:
您还可以拥有 2 台不同的机器,每台都有不同的配置。
软件:
注意:我不认为 dnsmasq 可以拆分 DNS。BIND 可以,就像大多数其他“企业”产品一样。在手册中查找“视图”或“拆分 DNS”。