我有 2 台机器,local1 和 cloud1。local1 有 3 个网卡:2 个直接连接到具有公共 IPS 的电缆调制解调器(称为 eth0 和 eth1),1 个连接到我的 LAN 连接(eth2)。cloud1 有一个 nic (eth0) 并直接连接到 Internet(数据中心中的 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 网络,所以还有其他机器的上游防火墙。
所以,对于任何阅读的人,我已经设法解决了这个问题。Zebra 的静态路由允许我为一个子网设置 2 条路由。我不得不删除云盒上的原始路线,然后斑马接管,所有流量都在这两个之间发送,同样......快乐的日子!