单个子网的多个网关

单个子网的多个网关

我有 2 台机器,local1 和 cloud1。local1 有 3 个网卡:2 个直接连接到具有公共 IPS 的电缆调制解调器(称为 eth0 和 eth1),1 个连接到我的 LAN 连接(eth2)。cloud1 只有一个网卡(eth0)并直接连接到互联网(数据中心中的 1Gb/s 链路)。本地的 eth0 和 eth1 都有默认网关,并通过其中任一网关发送流量,具体取决于发出请求的 IP。创建了 2 个 OpenVPN P2P 隧道,每个隧道都使用调制解调器的一个公共 IP,并通过其公共 IP 连接到 cloud1。这会在每个盒子上创建 2 个隧道,tun0 和 tun1。它们在 tun0 上获得 ips 10.8.0.1/2(分别),在 tun1 上获得 3/4。1 和 3 在云端,2 和 4 在本地。

本地框将其默认路由设置为使用 1 和 3(Debian 8.3,无论框中有什么内核),并且它可以“正确”工作(跟踪路由显示我在不同时间同时命中 1 和 3)。但是在 cloud1 上,为了返回到我的本地网络(192.168.1.0/24),它有一条路由,但只能通过 10.8.0.2......没有任何路由通过 10.8.0.4 返回......

观察流量监视器,我可以看到流量通过室内的 tun1 出去,但没有(或很少)流量回来,而 tun0 有大量的流量进出...

我知道如何使用 Linux 设置多个默认网关,但如何设置多个非默认网关:例如:

ip route add 192.168.1.0/24 via 10.8.0.2 (works)
ip route add 192.168.1.0/24 via 10.8.0.4 (tells me it already exists)

两个盒子上都设置了网络转发,我想在没有 NAT 或伪装的情况下做到这一点...此外,192.168.1.0/24 是 DMZ 网络,因此其他机器有进一步的上游防火墙。

答案1

因此,对于任何读者来说,我已经设法解决了这个问题。Zebra 的静态路由这样我就可以为一个子网设置 2 条路由。我不得不删除云盒上的原始路由,然后 Zebra 接管,所有流量都在这 2 条路由之间平等发送……真是快乐的日子!

相关内容