配置路由,使 vpn 仅用于本地资源

nix*_*pix 3 network-manager vpn networking routing

在广泛搜索全面的答案并尝试了多种无效的解决方案后,我转向社区。

我使用 VPN 连接来访问某些网络资源(主要是测试平台),它们都在 10.0.0.0 网络范围内。但是,当我连接到 VPN 时,我的所有流量都通过 VPN 路由,而不仅仅是对这些 IP 地址的请求。我的目标是通过我的互联网而不是 VPN 互联网路由 Youtube、Google Play 等流量。主要是因为通过 VPN 的速度非常糟糕。

我曾尝试检查网络管理器设置中的选项以仅将 VPN 用于网络上的资源,但这不起作用。

我也试过玩我的路由表,但没有成功。

我将不胜感激在这方面的任何帮助。我在 Gnome 上使用 Ubuntu 16.04。以下是一些网络统计数据:

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
Run Code Online (Sandbox Code Playgroud)

nix*_*pix 5

我设法解决了它。

首先,我将默认网关路由的指标增加到 1,以便我的所有流量都通过它。

sudo ifmetric enp4s0 1
Run Code Online (Sandbox Code Playgroud)

之后我为 10.xxx 子网添加了一条新路由

sudo ip route add 10.0.0.0/8 dev ppp0 metric 25
Run Code Online (Sandbox Code Playgroud)

这现在允许我访问所有 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
Run Code Online (Sandbox Code Playgroud)

其中 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
Run Code Online (Sandbox Code Playgroud)