我所在的公司有 2 条 ADSL 线路接入办公室。我们有一个域名 office.ourfirm.com,我们希望能够通过该域名访问我们的网络服务器。其中一个 ADSL 连接已经是 office.ourfirm.com 的 DNS 条目。
我们想使用另一个连接作为备份。我知道有“循环”DNS,但这不是冗余系统,对吧?您建议我们如何将另一个 ADSL 连接添加到 DNS,以便一个 ADSL 充当另一个 ADSL 的故障转移?
例如:如果其中一条 ADSL 线路出现故障,则可以无缝使用另一条线路。
干杯克里斯
答案1
我之前已经多次这样做了。我的做法是使用动态 DNS 提供商,例如 dyndns.org。
- 将路由器设置为优先通过一个连接发送流量。至少,对 HTTP/HTTPS 流量执行此操作(这样做有好处——如果您使用相同的会话但在不同的 IP 之间来回切换,某些 Web 应用程序会不喜欢这种情况,并将您注销)。这意味着除非主连接关闭,否则不会通过辅助连接发送任何 HTTP(S) 流量。
- 为 office.ourfirm.com 创建动态 DNS 帐户和记录
- 在内部服务器上安装动态 DNS 客户端。
当 dyn DNS 客户端更新您的记录时,它通常来自您的主连接,因此所有内容都将转到该 IP。如果连接断开,它将开始从您的辅助连接开始,这样您就可以进行故障转移。如果您失去连接,则需要与您的 dyn DNS 客户端更新一样长的时间才能恢复(可能 5 分钟?使用“专业”帐户则更少)。
有两种方法可以创建 dyn DNS 帐户:
- 获取一个高级帐户,它可以为您托管 DNS(您可以托管 ourfirm.com,或者只是将 office.ourfirm.com 委托给该服务)。
- 使用他们的托管服务创建一个域名,例如 ourfirm.dyndns.org(这将是 dyndns 托管的 A 记录)。将 office.ourfirm.com 设置为 ourfirm.dyndns.org 的 CNAME。通常这种方法是免费的。
关于故障转移,您提到了两个 ADSL 连接。这很好,但这里有几点需要考虑:
- 如果这两个帐户来自同一家提供商,那么您实际上获得的只是办公室 DSL 调制解调器的冗余。如果电话线、您的提供商或其上游提供商出现故障,无论是否进行故障转移,您仍处于离线状态。
- 这些线路是否来自同一组电话线?大多数数据中心都付出了很多努力来确保其上游连接在物理上来自不同的方向,并从不同的地方进入建筑物。这确保了例如施工队无法拆除一条线路并一下子切断所有连接。
- 如果它们是不同的提供商,它们是否仍在相同的上游连接上?找出您的 ISP 的提供商(希望他们有多个)。如果您有两个不同的 ISP,但它们都共享相同的上游提供商,那么您仍然没有完全受到保护。
- 对于 DSL,通常是电话公司提供 DSL,然后转售带宽和 ISP 访问权限(例如 Bell Nexxia)。在这种情况下,即使实际的互联网带宽来自不同的地方,您仍然依赖一家公司(您的本地电话公司)来建立他们的 DSL 网络。
在我目前的办公室,我们的故障转移正如所描述的那样,我们的主要连接是电缆,而辅助连接是 DSL。两者之间没有任何共享,并且两者都是主要的 ISP,拥有多个到互联网主干的上游连接。我敢肯定,在某些地方,它很容易受到反铲挖土机操作员的攻击,但至少它们是由不同公司维护的完全不同的物理电缆,因此几乎不可能同时杀死两者。
我强烈建议使用两种不同的技术以获得最佳冗余度。现在有很多种连接方式,因此在大多数地方连接并不太困难或昂贵:有线、DSL、光纤、卫星、无线、GSM/蜂窝。
答案2
根据您对 BIND 的熟悉程度(我假设您控制自己的 DNS 服务器,但您未指定类型),使用动态 DNS 更新是可能的。我最近设置了类似的东西作为概念验证。
您可以配置一个探测器,用于测试 ADSL 连接的可用性,并nsupdate
在发生故障时调用以动态修改区域。man nsupdate
有关详细信息,请参阅。您可以提供一些简单的指令,指示“删除已关闭路由器的 A 记录”或“一旦路由器恢复,重新添加 A 记录”。在正常情况下,您可以使用具有低 TTL 的“循环”A 记录,以便 DNS 服务器返回多个功能地址。然后,如果非功能地址不可用,您只需将其删除,并在它们再次工作时重新添加它们。
答案3
简单的答案是使用支持故障转移连接的路由器,但这样您就不能同时使用两条线路。您现在如何使用两条线路?一条 ADSL 断线而另一条线路正常运行的可能性有多大?它们是否来自同一提供商,通过同一分界点?如果您希望创建网络冗余以确保 office.ourfirm.com 的正常运行时间,请考虑从通过其他方式进入您办公室的其他提供商处获取备用互联网连接。您可能还想考虑将 office.ourfirm.com 的站点托管给可以保证正常运行时间的托管提供商。