Linux 路由 - 如何在多个网关之间切换 PC

Linux 路由 - 如何在多个网关之间切换 PC

我有一个带有多个网关(电缆调制解调器、ppp、vpn 等)的 Linux 路由器。通过不同的网关转发单个用户的所有互联网流量的最佳方法是什么?

以下是一个例子: 网络图图像

看来我需要为每个连接创建单独的路由表,添加连接网关,添加连接 IP,添加用户 IP,并启用 NAT。这适用于 PPP,但不适用于 OpenVPN(默认配置,我的路由器是客户端)。

例如:

openvpn --route-nopull --config ~/connect.ovpn &
ip route add default via 10.8.0.5 table myvpn
ip route add 10.8.0.1/32 via 10.8.0.5 table myvpn
ip rule add from 10.8.0.6 table myvpn
ip rule add from 192.168.1.3 table myvpn
ip rule add from 192.168.1.4 table myvpn
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o myvpn -j MASQUERADE

在这个例子中,路由器本身可以通过 10.8.0.6 进行连接(或任何其他单独的连接),但客户端不能。

答案1

我在这里找到了答案:将特定子网路由到 VPN 隧道

它可以适应我的情况或类似情况。请注意巧妙的 route-up.sh,它在启动时将路由复制到新表中。

答案2

本地网络上的机器与具有多个网关的路由器之间的 VPN 隧道完全是小题大做。

相反,使用VLAN 标记将您的 LAN 分成多个“覆盖层”(网络图中的不同颜色),确保每个用户/机器都连接到正确的 VLAN,并配置您的路由器以将每个 VLAN 路由到适当的网关。

每个 VLAN 都将在路由器上显示为一个独立的网络适配器。假设路由器是某种嵌入式 Linux,那么你可以轻松地使用策略路由将出口网络接口集成到路由决策中。通常不需要使用iptables它,除非您需要防火墙(尽管出于某种原因,互联网上很多人似乎想要iptables路由……这是我最讨厌的事情之一)。

相关内容