Linux 使用两个不同的网关路由两个不同的 LAN

Linux 使用两个不同的网关路由两个不同的 LAN

我有两个不同的网络(独立的 LAN),每个网络都有自己的 ISP 网关,我想要跨越它们(用户从一个 LAN 到达另一个 LAN)。 ISP 网关是愚蠢的品牌家庭网关,没有任何花哨的功能(例如静态路由)。

基本上当前的拓扑是:

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

我希望能够跨越 LAN,但保留每个 LAN 的 WAN 流量。我的想法是使用一台 Linux 机器作为路由器/dhcp 服务器,以便保持 WAN 与每个 LAN 的连接,但也能够从一个 LAN ping 到另一个 LAN。

我正在尝试的拓扑是:

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

Linux/路由器机器有两个以太网接口,每个接口连接到不同的 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 计算机保留为所有 LAN 相关流量的 LAN1 网关。

任何指针都非常感谢

答案1

我认为源路由应该使之成为可能,但是您需要为两个网络显式创建所有路由,即默认路由和另一个网络的路由。像这样的东西:

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 为客户端提供默认路由和到其他网络块的静态路由。因此,他们可以与自己的互联网网关对话,而无需通过中央盒子,而只需通过中心即可到达对面。

提及option classless-static-routes的上下文中,dhclient但 ISC DHCP 服务器似乎不直接支持它。

相反,可能需要手动插入该选项。有一些例子可以说明这一点这里,但对格式的解释稍微简单一些。RFC 3442描述了“无类别路由选项格式”下的格式。

相关内容