我有一个使用两个互联网连接的双宿主 VOIP 服务器的情况。该解决方案运行良好,除了一个问题,即当主要互联网连接中断时,DNS 解析也会出现问题。这会阻止我的 VOIP 服务器连接到备用 Internet 连接上的 VOIP 提供商,因为它无法解析服务器的 DNS 名称。我不能使用 IP,因为提供商喜欢移动他们的服务器。
所以我的“解决方法”计划是在 cron 作业中每 x 分钟更新一次 HOSTS 条目,这样除非主互联网长时间关闭并且服务器 IP 地址发生变化,否则我应该很好。
但是,我真的想不出一个好的方法来做到这一点,请记住,如果 dns 条目无法解析,我不想用空白或错误信息覆盖它们。
有什么建议么?
编辑:
也许我不是很清楚。我需要这样做的原因是因为我的 VOIP 提供商喜欢移动他们的服务器。如果我使用的是缓存名称服务器,并且他们移动了服务器,那么我将遇到陈旧的 DNS 数据,如果我将 DNS 缓存时间设置得足够低,那么它就达不到目的,因为当主互联网出现故障时,缓存将在它恢复之前过期,我在同一条船上。
我需要的是一种两全其美的方法,即能够快速响应 DNS 更改,但在连接断开时不会失去解析能力,因此我能想到的唯一解决方案是更新主机文件。
此外,使用 OpenDNS 并不能解决任何问题,因为 DNS 查找不会发生在辅助网络连接上,它们总是会出现在主网络连接上。这就是问题。即使我已将应用程序绑定到使用不同网络连接的两个接口,它也只会在主连接上进行 DNS 查找。
为什么不安装本地缓存 DNS 服务器(例如绑定) - 配置它非常简单。
这样,您只需要询问您的本地 DNS 服务器,它就会向您的 ISP 的名称服务器询问(并缓存)。您只需将转发器指令添加到
named.conf
...(您可以根据需要添加任意数量)。
为什么不直接使用第三方 dns 服务器呢?opendns 快速、可靠且免费。
它们将完全独立于您正在运行的互联网连接,您真的不需要使用主机文件和 cron 作业。
编辑:根据您的编辑...
所以您还没有将第二个连接定义为替代网关?
您可以为第二个连接提供更高的“度量”值,这实际上意味着如果主连接出现故障,它将成为默认网关。
这是路线手册页和一个很好的方法
完成此操作后,您应该能够使用良好的非 ISP DNS 提供商(如 OpenDNS),并拥有两个完全冗余的 Internet 连接。
/ 里奇
我没有任何同时使用 2 个互联网连接的经验,但是如果您将两个提供商的 dns 服务器放在您的 resolv.conf 中,它可以工作吗(可以在您的 dhclient 中使用“替代域名”来完成.conf) ?
DNS 本身是一个分布式数据库,试图保持主机文件的更新。它通过递归查找来做到这一点,并在本地缓存结果,并过期。BIND为您执行此操作。
您还可以使用适用于两个 ISP 的 OpenDNS 名称服务器。