在广泛寻找全面的答案并尝试了多种无效的解决方案后,我转向社区寻求帮助。
我使用 VPN 连接访问某些网络资源(主要是测试平台),它们都在 10.0.0.0 网络范围内。但是,当我连接到 VPN 时,我的所有流量都会通过 VPN 路由,而不仅仅是发送到这些 IP 地址的请求。我的目标是通过我的互联网而不是 VPN 互联网路由 Youtube、Google Play 等流量。主要是因为通过 VPN 的速度非常差。
我尝试检查网络管理器设置中的选项,以便仅将 VPN 用于网络上的资源,但这不起作用。
我也尝试过调整我的路由表,但是没有成功。
我将非常感激您在这方面提供的任何帮助。我使用的是 Ubuntu 16.04 和 Gnome。以下是一些网络统计数据:
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp4s0
10.150.1.254 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp4s0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp4s0
195.230.180.187 192.168.0.1 255.255.255.255 UGH 0 0 0 enp4s0
答案1
我设法解决了它。
首先,我将默认网关路由的度量增加到 1,以便所有流量都通过该路由。
sudo ifmetric enp4s0 1
之后,我为 10.xxx 子网添加了一条新路由
sudo ip route add 10.0.0.0/8 dev ppp0 metric 25
现在我可以访问所有 vpn 网络资源,并使用我的本地互联网连接进行其他所有操作。
我还添加了一个脚本/etc/network/if-up.d/每次我连接到 vpn 时都会自动执行此操作。
#!/bin/sh
if [ "$IFACE" = "ppp0" ]; then
ifmetric enp4s0 1
ip route add 10.0.0.0/8 dev ppp0 metric 25
fi
其中 ppp0 是我的 vpn 连接的接口名称。最后的路由表如下所示:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 1 0 0 enp4s0
0.0.0.0 0.0.0.0 0.0.0.0 U 50 0 0 ppp0
10.0.0.0 0.0.0.0 255.0.0.0 U 25 0 0 ppp0
10.150.1.254 0.0.0.0 255.255.255.255 UH 50 0 0 ppp0
169.254.0.0 0.0.0.0 255.255.0.0 U 1 0 0 enp4s0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 enp4s0
195.230.180.187 192.168.0.1 255.255.255.255 UGH 1 0 0 enp4s0