如何使用动态 DNS 管理冗余 ISP

如何使用动态 DNS 管理冗余 ISP

我正在尝试通过添加备用 ISP 来使我的小型企业网络更加强大。我不知道如何管理入站连接的 DNS。我的网络的简化视图如下所示:

+-------+    +-------+
| ISP 1 |    | ISP 2 |
+-------+    +-------+
    |           |
 +-----------------+
 | Dual WAN Router |
 +-----------------+
          |
    +----------+
    |  Server  |
    +----------+

当我只有 1 个 ISP 时,我只需要担心一个 WAN IP 地址,并且只要我的动态 IP 发生变化,我就会更新我的 DNS A 记录。我使用 AWS (Route 53) 进行 DNS,因此编写脚本来获取当前 IP,然后使用其 CLI 工具相应地更新 DNS 记录非常容易。

现在我有两个 WAN IP 地址,但我不太清楚该怎么做。我有两个主要问题:

  1. 我希望 ISP 1 成为主 ISP(它具有更好的连接),但如果 ISP 1 不可用,我希望回退到 ISP 2。我使用服务器进行 VoIP 以及 HTTP 和 SSH。VoIP 需要具有相当高的可用性(因此需要冗余 ISP)。但是,我不知道如何实现这样的故障转移。

  2. 我如何才能使两个 DNS 记录保持最新?如果只有一个 ISP,我可以使用以下命令从服务器可靠地确定 WAN IP:。如果有dig +short myip.opendns.com @resolver1.opendns.com两个 ISP,我无法想象如何从服务器获取两个 ISP 的 IP。

想法 #1

我读过有关使用多个 A 记录的 DNS 轮询的文章,但我发现到处都提到不建议使用。另一个选择似乎是 BGP,但我不理解它,而且我有点觉得我没有实现它所需的东西(这个帖子似乎适用)。

针对 #1 的另一种解决方案是使用一个域指向的单个 IP 负载均衡器。然后,该负载均衡器根据一些健康检查选择将流量路由到哪个 ISP。问题是这需要与协议无关(即无缝地与 VoIP 流量以及 HTTP 等配合使用)。这就是为什么 DNS 级别的解决方案看起来很有吸引力。

我偶然发现这篇 AWS 博客文章这看起来很有希望,但是当我试图弄清楚如何在健康检查和各种相应的 DNS 记录中保持动态 IP 为最新时,我的脑袋爆炸了。

看完之后这个帖子在我看来,“正确”的做法似乎是使用链接平衡器像这样,但该系列中最便宜的型号价格约为 1,200 美元,比我想要的贵一点。另外,当链路平衡器从 ISP 获取动态 IP 时,我仍然不太清楚如何将我的域的名称服务器指向它。

想法 #2

我认为我可以将双 WAN 路由器配置为调用 webhook当 IP 改变时,但这实现起来会比较复杂。

是否存在一些我所忽略的灵丹妙药解决方案?

答案1

这取决于您的双 WAN 路由器的功能,但我相信最直接的解决方案可能是让路由器仅在检测到 ISP/WAN 1 发生故障时才使用 ISP/WAN 2。这样,您就可以保持服务器及其动态 DNS 脚本的原样;当 WAN1 发生故障时,它将更新相同的记录以解析为 WAN2 的公共 IP。

当然,这需要TTL几秒钟才能生效,但是这么短的时间TTL不会300导致百分比的停机时间过长。

答案2

我用AWS Route53入站 DNS 解析和互联网故障转移的健康检查。

创建健康检查。

在此处输入图片描述

在此处输入图片描述

为每个服务创建一个公共 DNS 条目。

在此处输入图片描述

将健康检查与 DNS 条目关联。

在此处输入图片描述

相关内容