我试图通过添加后备 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 地址,我不确定如何继续。我有两个主要问题:
我希望 ISP 1 成为主要的(它具有更好的连接),但如果 1 不可用,我想回退到 ISP 2。我将服务器用于 VoIP 以及 HTTP 和 SSH。VoIP 需要具有相当高的可用性(因此需要冗余 ISP)。但是,我不知道如何实现这样的故障转移。
如何使两个 DNS 记录保持最新?只需一个 ISP,我就可以使用如下命令可靠地确定来自服务器的 WAN IP
dig +short myip.opendns.com @resolver1.opendns.com
:对于两个 ISP,我无法想象如何从服务器获取两者的 IP。
#1的想法
我已经阅读了有关具有多个 A 记录的 DNS 循环法,但我发现它在任何地方都提到它是不推荐的。另一个选项似乎是 BGP,但我不明白,我觉得我没有实现它所需的东西(这篇文章似乎适用)。
#1 的另一个解决方案可能是使用域指向的单个 IP 的负载均衡器。然后,该负载均衡器根据一些健康检查选择将流量路由到哪个 ISP。问题是这需要与协议无关(即与 VoIP 流量以及 HTTP 等无缝协作)。这就是为什么 DNS 级别的解决方案看起来很有吸引力的原因。
我偶然发现了这篇看起来很有希望的 AWS 博客文章,但是当我试图弄清楚如何在运行状况检查和各种相应的 DNS 记录中保持动态 IP 为最新时,我的头脑爆炸了。
读完这篇文章后,在我的水平上做这件事的“正确”方法似乎是这样的链接平衡器,但该系列中最便宜的型号约为 1,200 美元,这比我想要的要多一点。另外,当我从 ISP 获取动态 IP 时,如何将我的域的名称服务器指向我的链接平衡器,我仍然有点迷茫。
#2的想法
我想我可以将我的双 WAN 路由器配置为在 IP 更改时调用 webhook,但这实现起来有点复杂。
是否有一些我缺少的灵丹妙药解决方案?
我将AWS Route53运行状况检查用于入站 DNS 解析和 Internet 故障转移。
创建健康检查。
为每个服务创建一个公共 DNS 条目。
将运行状况检查与 DNS 条目相关联。
这取决于您的双 WAN 路由器的功能,但我相信最直接的解决方案可能是让路由器仅在检测到 ISP/WAN 1 关闭时才使用 ISP/WAN 2。这样您就可以拥有服务器及其动态 DNS 脚本;当 WAN1 失败时,它将更新相同的记录以解析为 WAN2 的公共 IP。
当然,这最多需要
TTL
几秒钟才能生效,但是TTL
这样的短暂300
时间不会导致停机时间过长。