我正在运行两个 OpenVPN 客户端,因此tun
配置了两个接口。
每个tun
接口都有不同的子网。假设其中一个接口tun1
有一条默认路由,因此我的大部分流量都经过那里。
然而,我的tun0
接口没有默认路由,因此只有发送到其子网的数据包才会通过此接口路由。
问题是应该通过tun0
=>的数据包实际上eth0
正在通过tun0
=> tun1
=> eth0
。这确实有意义,因为tun1
它被用作默认设备。
如何防止专用网络中的数据包通过两个 VPN 路由,并使其仅通过其中一个 VPN 路由?
更新:
这是我当前的路由表:
0.0.0.0/1 via 10.4.102.81 dev tun1
default via 192.168.10.1 dev eth0 proto static
10.4.0.1 via 10.4.102.81 dev tun1
10.4.102.81 dev tun1 proto kernel scope link src 10.4.102.82
10.176.128.0/18 via 172.29.2.77 dev tun0
10.177.0.0/18 via 172.29.2.77 dev tun0
10.177.128.0/18 via 172.29.2.77 dev tun0
10.178.0.0/16 via 172.29.2.77 dev tun0
10.179.0.0/16 via 172.29.2.77 dev tun0
10.180.0.0/16 via 172.29.2.77 dev tun0
10.181.0.0/16 via 172.29.2.77 dev tun0
10.183.0.0/16 via 172.29.2.77 dev tun0
46.165.208.65 via 192.168.10.1 dev eth0
128.0.0.0/1 via 10.4.102.81 dev tun1
172.29.0.0/22 via 172.29.2.77 dev tun0
172.29.2.77 dev tun0 proto kernel scope link src 172.29.2.78
172.31.0.0/22 via 172.29.2.77 dev tun0
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.76 metric 1
答案1
您应该为远程 VPN 服务器(tun0 的)添加一条路由:
ip add route $ip_of_the_vpn_server via 192.168.10.1 dev eth0
或者更一般地说:
ip add route $(ip route get $ip_of_the_vpn_server | head -n1)
在启动 VPN 之前。
这将确保发送到此 VPN 服务器的所有数据包都将通过您的非 VPN 默认路由发送。