2個網路卡由

2個網路卡由

我有 2 個帶有公共 ip 的網卡。我正在運行 2 個服務。那我該如何路由連線呢?

目前只有一個介面 ip 正在工作,儘管兩者都可以從互聯網上執行 ping 操作。

我的路由表就像這樣的atm:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.128.1    0.0.0.0         UG    0      0        0 eth1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.31.128.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
172.31.129.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

那麼我應該添加什麼才能讓它發揮作用呢?

目前 eth1 可以正常工作,沒有任何問題。

答案1

由於介面名稱和“iproute2”標籤,我假設是 Linux。


這是行不通的,因為簡單地指定預設路由將意味著所有傳出流量都將通過該接口,甚至是來自其他接口的請求的回應!

在你的例子中,你說你有公共IP,但兩個直接連接的介面有私有IP位址,所以我認為這意味著你有NAT正在進行。每當你有NAT 時,你就無法使用這種類型的三角路由,即傳入和傳出資料包採取不同的路徑,因為資料包在NAT 盒傳入的途中已被更改,並且需要以相同的方式進行更改出去的路上。您的請求客戶端最終收到來自它不期望的 IP 位址的資料包,並且無法識別回應。

您需要做的是告訴作業系統,任何源自您介面 172.31.128.0/24 的 IP 位址通往 Internet 的封包都需要到達 172.31.128.1 處的網關,相應地到達 172.31.129.0/24 子網路。

可以這樣完成:

ip route add 172.31.129.0/24 dev eth0 src 172.31.129.XXX table T1
ip route add default via 172.31.129.1 table T1
ip route add 172.31.128.0/24 dev eth1 src 172.31.128.XXX table T2
ip route add default via 172.31.128.1 table T2
ip rule add from 172.31.129.XXX table T1
ip rule add from 172.31.128.XXX table T2

您需要將 XXX 替換為這些本機子網路伺服器的 IP 位址。

這應該可以幫助你開始。您可以在以下位置找到有關此主題的更多信息Linux 進階路由與流量控制 HOWTO 的第 4.2 節

相關內容