我计划标准化主机命名约定,并希望设置一个“内部”网络,以便不同服务器之间轻松通信。我们从多个不同的专用服务器提供商处购买服务器,这些服务器在物理上并未连接到同一个本地网络。目前,在配置 Web 服务器等时,我们使用每台机器的 IP 地址。我希望用“db1-fr.internalnet”之类的主机名替换它,以简化事情并使事情变得容易理解。在每台机器上处理名称解析的最佳方法是什么?我目前计划只在主办方为每个服务器创建一个文件,但从可维护性角度来看,这似乎规模很小。我想尝试避免仅为内部网络查找而托管一个完整的 DNS 服务器,但如果这是推荐的方式,那么这当然是一个选择。那么我的下一个问题是,哪里是配置此 DNS 服务器的合适位置?如果我替换服务器范围的 DNS 服务器,事情就会开始崩溃。是否有用于本地查找的特定配置文件?
答案1
如果你乐意使用生产域,那么你可以在内部网络上运行 DNSMasq,并让所有服务器使用它作为缓存解析器
这有两个好处
- 通过本地缓存结果来加快内部网络的 DNS 解析速度
- 能够使用 DNSMasq 的别名配置命令动态更改 DNS 结果
从 dnsmasq 示例配置中提供有关上述第 2 点的更多信息:
# If you want to fix up DNS results from upstream servers, use the
# alias option. This only works for IPv4.
# This alias makes a result of 1.2.3.4 appear as 5.6.7.8
#alias=1.2.3.4,5.6.7.8
# and this maps 1.2.3.x to 5.6.7.x
#alias=1.2.3.0,5.6.7.0,255.255.255.0
# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40
#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
基本上,这意味着如果你对一个地址进行 DNS 查找,而该地址在 DNS 中通常会返回 IP 1.2.3.4,它将动态重写该地址以返回 5.6.7.8
将其替换为您的外部 IP 到内部 IP 映射,然后您就成功了
如果您想使用“仅限内部区域”,另一种方法是再次使用 DNSmasq 和 dnsmasq 服务器上的 hosts 文件来定义您的内部 DNS 记录,dnsmasq 使用您的 hosts 文件及其配置的外部解析器将 DNS 结果返回给其客户端(默认情况下,hosts 文件优先),就像您将记录添加到每个框上的 hosts 文件中一样,但只需在一个位置执行此操作
只需记住,当你对该机器上的 hosts 文件进行更改时,重新加载/重新启动 dnsmasq