我有一个小型分支机构,它有来自两个不同 ISP 的两个互联网连接,每个连接都为我们提供了一个 /29(八个 IP)。
我目前在那里有一个外联网服务器(基本上是 DMZ 中的 Web 服务器,它与我们的其中一个内部数据库服务器的连接有限 - 因此我确实需要将其保留在现场)。它目前使用来自一个 ISP 的 IP 之一。
我想将其设置为监听其他 ISP,作为一种故障转移机制。我知道我需要非常巧妙地使用 DNS 才能实现这一点,但我可以使用 DNS 上的主动故障转移选项(由 Dynect 提供),因此这本身应该不是不可能的。
但是,我不知道如何让路由正常工作。
服务器位于 DMZ 中,其中包含一个路由器和两个防火墙。如果我将默认网关设置为路由器,则所有出站流量在主 ISP 正常运行时都会通过主 ISP,而在主 ISP 停机时会重新路由到辅助 ISP(我们在 Cisco 路由器上使用对象跟踪)。如果我将默认网关指向其中一个防火墙,则所有流量都会流向该 ISP。
我想要做的是在我的服务器上设置两个 IP 地址 - 要么都在同一个 NIC 上,要么在单独的 NIC 上;如果有帮助的话,我确实有第二个 NIC - 并且回复通过一个防火墙进入一个 IP 的流量以及回复通过另一个 IP 进入另一个防火墙的流量。
我尝试将两个不同的 NIC 放在具有不同默认网关的不同 IP 上,但这不起作用 - Windows 中的路由表不会根据流量的源地址确定路由。
我可以用路由器做一些事情 - 虽然这可能意味着要得到比我拥有的更强大的东西 - 但我想知道是否有人知道一种 Windows 方式,可以让 TCP 响应根据它们来自多宿主服务器上的哪个 IP 地址转到不同的默认网关,即基于源地址而不是纯粹基于目的地进行路由?
我知道 Linux 可以使用 iproute2 来做到这一点,但是 Windows 可以吗,也许使用 RRAS?
答案1
不幸的是,最简单的(我确实是说最简单的)方法是获得自己的 /24 并运行 BGP 来处理上游,让路由而不是窗口路由发挥魔力。您的情况需要动态路由协议,而以其他方式执行会变得复杂。请注意,您确实不是如果您只是采用每个提供商的默认设置(基本上就是您现在正在做的事情),则需要一个大型路由器来运行 BGP。