Kubuntu network-manager-openvpn 不通过 VPN 服务器路由流量

Kubuntu network-manager-openvpn 不通过 VPN 服务器路由流量

我有一个 OpenVPN 配置文件,它在终端上运行良好:

sudo openvpn --config openvpn.conf

通过终端连接后,我的路由表如下:

[van@d2:Desktop]$ ip route
0.0.0.0/1 via 255.255.255.0 dev tun0 
default via 192.168.0.1 dev wlp3s0 proto static metric 600 
10.9.0.1 via 255.255.255.0 dev tun0 
<vpn_server_ip_addr> via 192.168.0.1 dev wlp3s0 
128.0.0.0/1 via 255.255.255.0 dev tun0 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
192.168.0.0/24 dev wlp3s0 proto kernel scope link src 192.168.0.5 metric 600 
255.255.255.0 dev tun0 proto kernel scope link src 10.9.0.4

我想尝试从网络管理器中让一切正常工作,因此我安装了network-manager-openvpnVPN 连接,然后从工作配置文件中导入了该连接。但是,当我使用网络管理器连接时,流量不会通过 OpenVPN 服务器路由。路由表(使用网络管理器条目连接后)如下:

[van@d2:Desktop]$ ip route
default via 192.168.0.1 dev wlp3s0 proto static metric 600 
10.9.0.0/24 dev tun0 proto kernel scope link src 10.9.0.4 metric 50 
<vpn_server_ip_addr> via 192.168.0.1 dev wlp3s0 proto static metric 600 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
192.168.0.0/24 dev wlp3s0 proto kernel scope link src 192.168.0.5 metric 600 
192.168.0.1 dev wlp3s0 proto static scope link metric 600

我尝试添加 0.0.0.0 条目(来自工作路由表),但被拒绝:

[van@d2:Desktop]$ sudo ip route add 0.0.0.0/1 via 255.255.255.0 dev tun0 
RTNETLINK answers: Network is unreachable

我也尝试过删除:

10.9.0.0/24 dev tun0 proto kernel scope link src 10.9.0.4 metric 50

并将其替换为:

10.9.0.1 via 255.255.255.0 dev tun0 

但这也失败并出现类似的错误消息(删除有效)。

我的问题是:如何通过网络管理器连接到 OpenVPN 服务器并强制所有流量通过 VPN 隧道路由?

答案1

我发现了一个“解决方案”(在这里我非常随意地使用这个术语)基于这篇文章:网络管理器未为 OpenVPN 连接设置 IP4.GATEWAY- 尽管我确信这是network-manager-openvpn模块的一个错误。

出现该问题的原因是没有为OpenVPN隧道设置网关:

[van@d2:~]$ nmcli device show tun0
GENERAL.DEVICE:                         tun0
GENERAL.TYPE:                           tun
GENERAL.HWADDR:                         (unknown)
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     tun0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/15
IP4.ADDRESS[1]:                         10.9.0.4/24
IP4.ADDRESS[2]:                         192.168.0.7/32
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         fe80::cd28:e3cf:f9e6:1417/64
IP6.GATEWAY                             --

可以使用以下方法获取默认网关:

[van@d2:~]$ ip route
default via 192.168.0.1 dev wlp3s0 proto static metric 600 
...

现在使用nmcli con show获取 OpenVPN 隧道的 UUID(在我的情况下是 tun0):

[van@d2:~]$ nmcli con show
NAME                UUID                      TYPE             DEVICE 
VAN-200-5GHz        <SOME-UUID>-9c79da9597a1  802-11-wireless  wlp3s0 
van                 <SOME-UUID>-484ee303d901  vpn              wlp3s0 
tun0                <SOME-UUID>-2a1a14674e78  tun              tun0   
Wired connection 1  <SOME-UUID>-d3935bcf886b  802-3-ethernet   --     

获得 UUID 后,使用以下命令设置网关:

nmcli con mod <SOME-UUID>-b717eca7a5a0 ipv4.gateway 192.168.0.1

现在检查以确保您使用的是 VPN 服务器的 IP 地址:

dig @resolver1.opendns.com myip.opendns.com +short
<YOUR-VPN-SERVER-IP>

使用此方法的副作用之一是,每次添加 tun0 网关时,您都会得到“僵尸”连接(并且这些连接在重启后仍会存在):

[van@d2:~]$ nmcli con show
NAME                UUID                      TYPE             DEVICE 
VAN-200-5GHz        <SOME-UUID>-9c79da9597a1  802-11-wireless  wlp3s0 
Wired connection 1  <SOME-UUID>-d3935bcf886b  802-3-ethernet   --     
van                 <SOME-UUID>-484ee303d901  vpn              --     
tun0                <SOME-UUID>-c4381868f3f3  tun              --     
tun0                <SOME-UUID>-157870b81351  tun              --     
tun0                <SOME-UUID>-a1bc29fb7bef  tun              --

您可以使用以下方法删除它们:

[van@d2:~]$ nmcli con del tun0
Connection 'tun0' (<SOME-UUID>-157870b81351) successfully deleted.
Connection 'tun0' (<SOME-UUID>-c4381868f3f3) successfully deleted.
Connection 'tun0' (<SOME-UUID>-a1bc29fb7bef) successfully deleted.

考虑到使用网络管理器连接到 OpenVPN 解决这些问题有多么复杂,您最好只通过终端进行连接(假设您有一个有效的 OpenVPN 配置文件)。

我不确定如何报告这种性质的错误,所以如果有人知道,请告知。

答案2

这里用更简单的方法解决:

sudo nmcli connection modify vpnu-us-mia ipv4.route-metric 0 solves the issue

默认以太网的度量为 1,因此设置为较低的值

还忽略了密码限制:

sudo nmcli connection modify vpnu-us-mia +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0 ipv4.route-metric 0

相关内容