配置路由以便 vpn 仅用于本地资源

配置路由以便 vpn 仅用于本地资源

在广泛寻找全面的答案并尝试了多种无效的解决方案后,我转向社区寻求帮助。

我使用 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

相关内容