我在一家大型组织工作(数千台服务器、数百个物理位置、六个数据中心,在不久的将来会进行一定程度的整合),该组织正在重新审视网络基础设施和服务器托管环境的许多方面。
我被要求提供意见的领域之一是 DNS 实现。我最大的不满是我们不支持水平分割或视图分割 DNS。面向互联网的设备被命名为 host.example.com,而内联网设备和管理界面被标记为 host.example.customtld。这给实现面向互联网和内联网的服务的人们带来了很多麻烦。
SF 社区能否提供一些建议,以便更好地利用 DNS?有哪些可怕的故事需要避免?有哪些创新的想法可以节省大量工作?
答案1
您是否考虑过任播 DNS?这个问题等提供了更多信息。Anycast 允许您从网络中的多个位置通告相同的 IP 前缀,并将客户端系统路由到(逻辑上)最近的服务实例。
一些好处:
- 所有客户端都可以使用相同的解析器 IP 地址,无论其物理位置如何。这大大简化了配置管理。
- 可以自动提供故障转移/恢复能力;如果您将路由通告设置为 DNS 服务器正常运行并接受查询的条件,那么每当服务器发生故障时,其路由都会自动撤回。然后客户端将被路由到下一个“最近”的服务实例,而无需任何重新配置。
- Anycast 还允许您非常轻松地水平扩展;由于所有客户端都可以定位相同的 IP 地址,而不管位置如何,因此将新服务器上线变得轻而易举。
答案2
实施分割视图 DNS 将省去很多麻烦(对于实施面向互联网和内联网的服务的人来说),因此对您来说很有效。使用 BIND,设置起来很简单。
当然,如果您没有运行 BIND,那么可能需要做更多工作。
如果当权者说“你不能使用分屏视图”,那你就完蛋了。
答案3
您可能知道,每个域(或 LAN、组织单位等)至少配备两台 DNS 服务器是一种很好的做法(有时是必需的)。人们普遍误以为这两台服务器中的一台必须是“主服务器”,而其他服务器必须是“从服务器”。如果您有多个 LAN(或子域),并且每个 LAN 都有自己的一对 DNS 服务器,那么管理分散在组织各处的所有主服务器将是一件非常困难的事情。
因此,这里有一个提示:两个 DNS 服务器中不一定有一个是主服务器。真正的要求是两个都应该是权威性。 那不一样。
两个权威服务器都是从属服务器并没有什么问题。事实上,我经常这样做,即使是对于小域也是如此。拥有权威从属服务器让我可以腾出时间做一些有趣的事情。
假设我有两个现有的 DNS 服务器(A 和 B),并且想要将 A 的数据迁移到新服务器 C,并删除 A。步骤如下:
- 将 C 设置为 A 的从属。它会复制所有区域文件。(或者,如果您想保留良好的格式,也可以手动复制它们。)
- 更新 DHCP 以便客户端查询 B 和 C。现在您有两个对您的域具有权威性的从属服务器(B 和 C)。
- 将 C 重新配置为主设备。
- 将 B 重新配置为 C 的从属。
- 让事情平静一天左右。
- 在 A 上禁用 DNS。
另一个技巧是仅使用从服务器作为权威服务器。主服务器不被客户端使用,仅用于保存主区域文件。从服务器从主服务器获取区域文件,主服务器可能隐藏在防火墙后面,以防止篡改。您可以拥有一个主服务器,所有从服务器(整个组织)都从该主服务器获取区域文件,从而消除了管理多个主服务器的管理开销。