Linux

強制來自同一網橋上伺服器的所有流量通過路由器介面

  • April 17, 2014

我有一個網橋,來自 192.168.5.0/24 網路的所有主機都連接到它。它們都通過輔助介面 eth1 連接到這個網橋。

我有一個路由器,它通過 192.168.5.1 將此網橋連接到我網路上

的其他人網路(192.168.5.0)

我相信這是因為如果例如 192.168.5.2 要 ping 192.168.5.3 流量會直接進入網橋而不通過我的路由器網關 192.168.5.1

是否可以強制同一子網的所有流量先去路由器?

以下是我的靜態路由的摘錄:

default         192.168.3.1     0.0.0.0         UG    0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
192.168.3.0     *               255.255.255.0   U     0      0        0 eth0
192.168.5.0     *               255.255.255.0   U     0      0        0 eth1

以下是我的 ifcfg-ethx 文件(CentOS)的摘錄:

DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.3.255"
GATEWAY="192.168.3.1"
IPADDR="192.168.3.2"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

DEVICE="eth1"
BOOTPROTO="static"
BROADCAST="192.168.5.255"
IPADDR="192.168.5.2"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

如果我沒記錯的話,可以編輯我的靜態路由,特別是上面程式碼段的最後一行,為 192.168.5.0/24 網路指定網關 192.168.5.1。

我嘗試將 GATEWAY=“192.168.5.1” 添加到 ifcfg-eth1 中,這會創建一個預設使用此介面的路由表。如何保持 3.1 作為主網關,同時強制來自 192.168.5.0/24 地址空間的所有流量通過 192.168.5.1?

在您的網橋主機上放置一些 iptables 規則。這比試圖將流量路由到不應該去的地方要整潔得多。請記住,試圖到達同一網路上的對等點的主機並不關心路由器。源會發出一個 ARP 請求,找出目標禮物的乙太網地址,並直接向它發送數據包。這裡直接意味著您橋接主機,然後使用其 ARP 表將數據包轉發到目標。所以這裡沒有路由的概念。

也許您可以在配置 eth1 時刪除核心在主機上添加的自然路由,然後在 eth1 上添加到網關的特定路由,然後在 eth1 網路(192.168.5.0/24)中添加另一條路由,將您的路由器指定為網關…但只有這個描述應該讓你明白它是多麼的垃圾。

真的,你應該更喜歡在網橋上使用 iptables

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