我正在设置新的服务器环境,该环境由 70 多台服务器组成,所有服务器都运行 Linux(Redhat/CentOS 混合)。我想设置几个 DNS 服务器(主/辅),以便在所有服务器上使用/配置,这些服务器应该主要能够处理以下事项。
1. 用于解析本地服务器条目的权威DNS。
我想为服务器分配简单的域名(主要是 A 记录),例如 db1.example.int
或 app1.example.int 基本想法是服务器应该能够通过那里(内部)dns 名称相互访问。
2. 公共域名(如 google.com)的递归/缓存 DNS 解析。
为了解析除本地域(example.int)之外的任何 DNS 条目,查询都应发送到配置为转发器的上游 DNS 服务器。
目前,我正在为此目的探索 BIND 和 dnsmasq。我应该使用 BIND 还是应该尝试 dnsmasq(禁用 dhcp - 因为我的所有服务器都将使用静态 IP)。如果您使用过类似的设置,请分享您的想法和经验。
答案1
通常这称为“拆分 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。
- 在您的 DNS 服务器上配置“拆分 DNS”或 DNS“视图”。
BIND 和其他 DNS 系统可以配置为根据 DNS 请求的来源或 DNS 请求所处的接口提供不同的答案。
例如,如果您有一个在公司内部有 1 个 NIC 的 DNS 服务器,以及在公司外部有 1 个 NIC 的 DNS 服务器:
内部网卡:
- LOCATION.corp.example.com(针对每个位置)
- corp.example.com
- 例如.com。
- 所有其他域均使用 DNS“转发器”
外部 NIC:
- example.com(与内部网卡使用相同的区域文件)
- 任何“递归”或转发均被禁用。
您还可以拥有 2 台不同的机器,每台都有不同的配置。
软件:
注意:我认为 dnsmasq 不能进行拆分 DNS。BIND 可以,大多数其他“企业”产品也可以。请在手册中查找“视图”或“拆分 DNS”。