Linux

Linux 使用兩個不同的網關路由兩個不同的 LAN

  • August 12, 2016

我有兩個不同的網路(獨立的 LAN),每個都有自己的 ISP 網關,我想跨越(來自一個 LAN 的使用者到達另一個 LAN)。ISP 網關是愚蠢的品牌家庭網關,沒有任何花哨的功能(例如靜態路由)。

基本上目前的拓撲是:

LAN1 -> ISP_G1 -> WAN
LAN2 -> ISP_G2 -> WAN

我希望能夠跨越 LAN,但保持每個 LAN 的 WAN 流量。我的想法是使用 Linux 機器作為路由器/dhcp 伺服器,以保持與每個 LAN 的 WAN 連接,但也能夠從一個 LAN ping 到另一個 LAN。

我正在嘗試的拓撲是:

WAN -> ISP_G1 -> LAN1/Switch1 -> Linux/Router <- LAN2/Switch2 <- ISP_G2 <- WAN

Linux/Router 機器有兩個乙太網介面,每個介面都連接到不同的 LAN,還充當 DHCP 伺服器,為來自每個 LAN 的客戶端提供兩個不同的子網。

定址方式如下:

Linux/Router machine:
eth0: 10.0.0.2
eth1: 10.0.1.2

ISP gateways:
ISP_G1: 10.0.0.1
ISP_G2: 10.0.1.1

ISP 網關中的 DHCP 已關閉,Linux 機器是 DHCP 伺服器,根據不同的子網(例如 10.0.0.0/24 和 10.0.1.0/24)為客戶端提供 IP。它還告訴客戶端他們的網關不是 ISP 網關而是 Linux 機器本身,例如 LAN1 為 10.0.0.2,LAN2 為 10.0.1.2。

我的問題是只有一個 LAN 可以同時訪問子網及其 WAN,這取決於 Linux 機器上配置的 WAN 網關。

例如:如果Linux機器配置了ISP_G2作為網關,LAN1可以訪問LAN2但不能訪問WAN,反之亦然。

我正在嘗試根據 Linux 機器上的路由表指定不同的網關,例如:

ip route add default via 10.0.0.1 dev eth0 table subnet1
ip rule add from 10.0.0.0/24 table subnet1

但是當 LAN1 可以通過 ISP_G1 訪問 WAN 時,它不能再訪問 LAN2。

我需要一種將 LAN1 網關更改為 ISP_G1 的方法,僅用於 WAN 的流量,並將 Linux 機器作為 LAN1 網關,用於所有與 LAN 相關的流量。

非常感謝任何指針

我認為源路由應該可以實現,但是您需要為兩個網路顯式創建所有路由,即預設路由和另一個網路的路由。像這樣的東西:

ip route add default via 10.0.0.1 dev eth0 table subnet1
ip route add 10.0.1.0/24 dev eth1 table subnet1
ip rule add from 10.0.0.0/24 table subnet1

其他塊也一樣,中央盒子本身的預設路線。


另一種選擇是告訴 DHCP 給客戶端一個預設路由和一個到另一個網路塊的靜態路由。因此,他們無需通過中央盒子就可以與自己的網際網路網關通話,而只通過中心到達對面。

在 的上下文中提到,但 ISC DHCP 伺服器似乎並不直接支持。option classless-static-routes``dhclient

相反,可能需要手動插入該選項。這裡有一些例子但對格式的解釋略顯簡短。RFC 3442描述了“無類路由選項格式”下的格式。

引用自:https://unix.stackexchange.com/questions/303042