Linux

從具有 2 個 Internet 連接的伺服器轉發埠

  • September 27, 2013

我的主伺服器上有 3 個介面,第一個用於本地網路,第二個和第三個是網際網路連接(每個都有自己的 ip 路由表):

eth0 192.168.0.1
eth1 9.9.9.9
eth2 7.7.7.7

本地網路的主機 192.168.0.2 上有郵件伺服器。iptables 通過 DNAT 規則將數據包翻譯到主機 9.9.9.9 和 7.7.7.7 的 25 埠到 192.168.0.2:25。

我的主伺服器中還有特定的路由表 T1,郵件伺服器通過

ip rule add from 192.168.0.2 lookup T1

但是表 T1 只使用一個預設路由:

default via 7.7.7.6 dev eth2 src 7.7.7.7

如果數據包已從我的第一個提供商發送到介面 9.9.9.9,當 192.168.0.2 將請求發送回發送者時,它使用第二個提供商的預設網關,發送者無法建立連接。

我能做些什麼?我的 eth1 和 eth2 是 DNS 上的 mx 記錄,它們必須都在工作。

這是一種預期的行為。

SMTP 和路由路徑是 7 層網路蛋糕上的兩個不同層。管理郵件採用哪些路由的最接近方法是為特定網路建構輔助預設路由,您總是希望通過特定 NIC 僅針對該特定埠。

例如,您可以建構一個僅影響埠 25 流量的 iptables 規則;如果目標地址是某個東西,請將其路由到預設網關 2。其餘 (0.0.0.0) 將始終預設為主預設網關。

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