A 记录故障转移?

A 记录故障转移?

我有一台 Fortigate 100D,带有 2x BT Business Infinity Fibre 连接,用作 WAN1 和 WAN2。

每条 BT 线路都带有 5 个静态公共 IP,并且我通过 CloudFlare 托管的 DNS 指向其中一个 WAN 连接上的静态 IP。

(假设您对 mylesgray.com 执行 nslookup,您将看到 217.45.201.1 作为公共 IP)。

我们希望我们的 A 记录 (用于托管网站、VPN、ssh 等) 具有冗余,但显然 2 条 BT 线路具有 2 组不同的公共 IP,因此如果 WAN1 出现故障,我们就无法继续工作了 - 由于地址是静态的,因此无法进行故障转移。

我查过外部 DNS 故障转移,但我觉得这很乱,而且非常不对(循环让我很烦)。然后任播作为一个选项出现了,但是,任播似乎需要整个 /24 块,或者在某些 ISP 的广播中甚至需要 /22。我们正在运行企业级路由器,因此使用 BGP 等不是问题。

有人可以解释一下如何在不购买 /22 IP 块或使用循环 DNS 的情况下实现 DNS A 记录的故障转移吗?

答案1

只需注意几点:Anycast 并不真正提供 A 记录故障转移。您提到“外部 DNS 故障转移”和 roundrobin - 这些根本不是一回事。Roundrobin 是为同一主机名设置多个 A 记录。DNS 故障转移是在链接断开时将单个 A 记录更改为不同的 IP 地址,理想情况下,在链接恢复时将其更改回来。

正如 Lukas 提到的,DNS 故障转移通常不是实现此目的的最佳方法,原因如下。它确实适用于最多用户,但缓存和 DNS 服务器会忽略 TTL,从而产生延迟,这会影响故障转移到备用 IP 地址的时间。

如果您希望继续使用这种方法,有各种第三方 DNS 服务(DNSMadeEasy、Amazon Route 53 等)提供此服务。如果各种链接平衡器(PepLink、Baraccuda)充当您的 DNS 服务器,它们也可以执行 DNS 故障转移的变体。根据您的环境,您还可以编写自定义脚本来检查链接的状态并根据需要更新 IP 地址。

除非您拥有并管理自己的 ASN 和 IP 地址块,否则 BGP 不会为您提供任何帮助。理想的解决方案是向当地区域互联网注册机构 (RIPE/ARIN/等) 申请您自己的 IP 块和 ASN,并运行您自己的路由器以从适当的链路通告路由。

答案2

很多管理员认为使用 DNS 记录进行故障转移是一种不好的做法,因为:

  • DNS 记录具有生存时间,您必须在以下两者之间取得平衡:表现(高 TTL = 长缓存)和更新行为(低 TTL = 变化传播得更快)。

  • 一些 DNS 客户端和递归服务器(例如 ISP 的服务器)倾向于完全忽略 TTL 值或设置自己的值。

  • 据我所知,CF 的最小 TTL 为 5 分钟(至少在免费账户上)。

我自己没有使用过 BT 服务,但是否可以选择在两个上行链路之间移动 IP 地址?不过,我不确定如何使用您的设置来实现这一点。

答案3

由于您不怕运行 BGP,因此您应该与 BT 沟通,看看是否可以使用 BGP 向他们公布您的公共 IP 地址,从而实现互联网和路由器之间的动态路由。您的服务器将只有 1 个 IP,通过一个或另一个管道进行路由。

因此,就不需要任何公共 AS 甚至 /24,因为您将使用在其网络中聚合的 BT IP 空间。

不过,他们可能会通过“Business Infinity”优惠支持 BGP 选项,因此您也可以看看BT 的租用线路,升级您现有的链接。

他们提供BGP4 跻身“弹力”套餐。但费用可能与“Business Infinity”不同。

相关内容