我有一个带有多个网关(电缆调制解调器、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,它在启动时将路由复制到新表中。