Linux 使用兩個不同的網關路由兩個不同的 LAN
我有兩個不同的網路(獨立的 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描述了“無類路由選項格式”下的格式。