Routing

Ubuntu 10.04:同一個子網上的兩個介面和同一個網關

  • July 17, 2011

我的 ISP 給了我一個 187.xx224/29 子網。網關是 187.xx225 我有一個帶有 6 個乙太網埠的 Ubuntu 伺服器。該伺服器執行 NAT 路由,還充當網路伺服器。我的計劃是擁有eth1eth2擁有單獨的 WAN ip:分別為 187.xx226 和 187.xx227。我希望 NAT 流量通過 187.xx226,並且網路伺服器和其他本地應用程序應該在 187.xx227 上偵聽。但兩者的網關相同,即 187.xx225。eth0eth3eth4面對 3 個不同的 NAT 網路。目前 NAT 工作正常,但來自 NAT 網路的流量和網路伺服器流量僅通過eth1. 所以我的問題是如何設置路由和預設網關,以便通過eth2.

編輯 1:我在 eth1 上進行大量流量整形,它充當 NAT 網路的上行鏈路。我不希望網路伺服器受到它的影響。我的使用者進行大量的 bittorrent 下載,並且總是訪問不可靠的網站。由於該eth1ip 具有與之關聯的域,因此我發現它非常危險。我計劃將域附加的 ip 移動到eth2並提供一個匿名 ip eth1(NAT 網路的 WAN 連結)。我正在尋找的解決方案是,如果通過網路伺服器的請求eth2,回复應該從同一個界面出來。

如前所述,您真正能夠完成您正在嘗試做的事情的唯一方法是使用策略路由 - 它允許您設置多個路由表。如果不“虛擬化”路由表本身,您將無法真正獲得所需的結果,因為您無法在同一路由表內的同一子網上擁有兩個具有 IP 的 NIC。您一次只能在路由表中擁有一個活動的預設網關,並且它總是會嘗試退出其中指定的介面。

這將要求您的 linux 核心支持策略路由。您還需要 iproute2 實用程序(可能包含在您的發行版中或通過包管理安裝)。

以下是我找到的一些不錯的參考資料:

如何在啟動時自動執行所有操作取決於所使用的 linux 發行版。

完全披露 - 我從我發布的第一個連結中撕掉了大部分內容。我在虛擬機中對其進行了一些測試,它似乎可以工作,但您的里程可能會有所不同,特別是因為您已經在進行 NAT 和流量整形。

如果您的系統上有iproute2實用程序,您可以著手設置新的路由表。在 /etc/iproute2/rt_tables 您將添加類似於以下行的內容:

1 servers

這有效地創建了一個名為“servers”的新路由表(至少對於本範例而言)。要設置路由表,您需要定義本地子網路由和預設路由。

ip route add 187.x.x.224/29 dev eth2 src 187.x.x.227 table servers
ip route add default via 187.x.x.225 dev eth2 table servers

它應該已設置,但您需要使用ip rule命令將其添加到策略路由中:

ip rule add from 187.x.x.227/32 table servers
ip rule add to 187.x.x.227/32 table servers

完成所有這些後,您應該能夠執行ip rule show並查看預設路由表規則上方的策略路由規則集。然後,您可以執行ip rule flush cache以確保送出更改。

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