Linux

單個子網的多個網關

  • September 28, 2019

我有 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 條路由。我不得不刪除雲盒上的原始路線,然後斑馬接管,所有流量都在這兩個之間發送,同樣……快樂的日子!

引用自:https://serverfault.com/questions/778636