使网络故障安全的最佳方法?

网络工程 路由 联网 dns 故障转移
2022-02-10 11:44:42

我有一台基于 Debian 的机器,带有来自 2 个不同 ISP 的 2 个完全不同的网络接口,作为我的服务器连接的备份。它们有两个不同的 IP(比如说 IP1 和 IP2backup)

我在两个路由器(检查点)上配置了完全相同的端口转发规则,因此两个网络在使用特定端口访问它们时始终指向同一主机。

我想确保当外部有人尝试使用我的 DNS 连接到我的服务器时,他将始终使用 IP1 进行路由,除非它失败,在这种情况下,他应该被定向到 IP2backup。

这样,我将拥有一个备份网络,该网络也可以路由所需的端口。

实现这一目标的最佳方法是什么?智能DNS?检查点路由器中的设置?

我不知道,也无法在网上找到明确的答案。

2个回答

您可以使用 AWS Route 53 运行状况检查来实现您所追求的那种冗余——故障转移时间为几分钟。

有关起点,请参阅本指南: https ://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html

长期以来,我一直在为各种规模的 BGP 网络进行咨询。我发现大多数像你一样的人——为网络资产寻找冗余——不需要 BGP。正如 Zac 所提到的,您最好将服务器托管在一家值得信赖的公司,该公司已经投资了您所需的网络冗余级别。

如果您认为您可能需要 BGP,此一般待办事项列表可能会帮助您决定是否进一步调查此选项:

  • 联系您的 ISP 并询问他们是否提供 BGP,如果提供,是否必然会增加您的成本?
  • 验证您的路由设备是否支持 BGP。
  • 确定您是否可以证明至少有一个 /24 的 IPv4 空间路由到您的网络(也许您已经拥有了。)
  • 从您的 RIR(例如 ARIN 或 RIPE)获取自治系统编号 (ASN)
  • 提供与您的 ISP 的 BGP 会话
  • 配置您的设备

我想确保当外部有人尝试使用我的 DNS 连接到我的服务器时,他将始终使用 IP1 进行路由,除非它失败,在这种情况下,他应该被定向到 IP2backup。

发生这种情况的唯一方法是在故障检测时更新 DNS 记录。DNS 记录被缓存,因此您需要设置一个非常短的 TTL 以避免客户端使用过时的缓存记录。尽管有专门的提供商,但您可能很难让您的 ISP 托管如此短的 TTL 记录。尽管 TTL 很短,但记录可能会被缓存更长的时间,因为许多 ISP 在其缓存中使用合理的最小 TTL。

覆盖故障 -> 检测 -> DNS 更新 -> 缓存过期所需的时间是您的最小故障窗口。你不能让它少于几分钟,也许是一分钟。此外,更改服务器的 IP 会终止所有实时会话。

使用 BGP 将您的网络前缀从一个 ISP 重新路由到另一个(请参阅 Ron 的评论)可以更快地工作。但是,跨 ISP 通过 BGP 通告您的前缀要求您拥有子网并且其大小至少为 /24。

另一种选择是使用外部代理作为重定向器。当然,它需要高可用性并使用检测方案连接到工作地址。不过,将您的服务器移至 HA 托管可能更容易,甚至可能更便宜。