我正在使用 network-manager-openvpn 连接到我的大学 VPN。当我openconnect -u username vpn.host.edu
从命令行运行时,VPN 可以正常工作(尽管它会发出很多ip route
错误消息)。
但是,通过 NetworkManager GUI 启动 VPN 时,生成的路由表很混乱:
$ ip route
default via 192.168.178.1 dev enxXXXXXXXXXXXX
default dev vpn0 proto static scope link metric 50
default via 192.168.178.1 dev enxXXXXXXXXXXXX proto dhcp metric 20100
[...]
第一个条目导致所有流量仍通过本地网关路由。因此,例如,使用 VPN DNS 服务器的名称解析失败,VPN 无法使用。当我使用 删除第一个路由表条目时ip route del default via 192.168.178.1 dev enxXXXXXXXXXXXX
,一切都开始按预期工作。
VPN 连接的所有网络设置都设置为“自动”,那么为什么 VPN 条目不是第一个默认路由?
PS 我知道有解决方法网络管理器未为 OpenVPN 连接设置 IP4.GATEWAY和网络管理器未为 OpenVPN 连接设置 IP4.GATEWAY- 但我想修复这个问题,而不必每次都运行 shell 命令。
答案1
是的,像往常一样,我在发布问题 5 分钟后找到了(或多或少)解决方案 :-/
看起来这个错误与以下错误有关:https://gitlab.gnome.org/GNOME/NetworkManager-openconnect/-/issues/33#note_889793
链接的评论建议使用脚本来/etc/network/if-up.d/
修复路线,我现在正在使用它。
#!/bin/sh
# Hacky workaround bug in NM not setting the default routes.
if [ "$IFACE" = "vpn0" ]; then
#ip route replace default via 0.0.0.0 dev vpn0
ip route del default via 192.168.178.1 dev enxXXXXXXXXXXXX
fi
我仍然希望看到这个问题能够在不使用黑客脚本的情况下得到修复,但显然这是一个已知的错误。