设置无法导入 CLI 能接受的 .ovpn 文件
能在终端里连接成功的配置文件,到了桌面导入时仍可能失败。请检查插件、被丢弃的指令,以及实际保存下来的内容。
同一个文件在 shell 里能连接,在桌面面板里却拒绝导入。这就排除了服务器、凭据和配置文件语法,因为命令行客户端早已解析过这三者。剩下的只有桌面本身的处理路径:它需要的软件包、它能理解的指令子集,以及它写入磁盘的对象。这三者失败的方式各不相同,而报错信息很少指向正确的那一个。
对话框在解析任何内容之前需要满足的三件事
导入以你的用户权限运行,因此位于仅 root 可访问目录下的文件在内容起作用之前就被拒绝。面板也只列出已安装 NetworkManager 插件的 VPN 类型;没有 OpenVPN 插件时,该选项是不存在,而不是坏掉。最后,网络设备必须处于托管状态:被标记为未托管的接口可以接受一个永远不会激活的已保存连接。修改配置文件之前,请把这三项都查一遍。
两条命令就能解决第一轮排查:插件用 dpkg -l network-manager-openvpn-gnome,设备状态用 nmcli device status。
导入器悄悄丢掉的东西
桌面端的转换只针对一组固定的属性。这组之外的命令行会被静默丢弃,因此隧道可能带着预期配置中缺失的部分建立起来。用 up、down 和 script-security 声明的脚本通常会消失,管理接口选项和额外的远程块也一样。用 vpn_gateway 关键字写的路由是例外:导入器在那里要求字面上的 IPv4 网关,于是直接报错中止,而不是丢弃该行。
被丢弃的路由有可辨认的特征。连接激活了,接口拿到了地址,某个特定子网却不可达,因为那条路由从未进入配置文件。
要读已保存的连接,而不是源文件
导入的权威结果是密钥文件,而不是你选择的 .ovpn。sudo cat /etc/NetworkManager/system-connections/office.nmconnection 显示面板实际保存了什么。如果那里有路由但实时表里没有,说明导入成功,问题在激活。如果文件里没有,就是导入器把它丢了,再怎么重连也恢复不了。
还有两条替代路径可以绕开转换层。nmcli connection import type openvpn file ./office.ovpn 写入同一个对象,并报告面板隐藏的错误。
旧版编辑器用 nm-connection-editor 启动,会显示面板没有的路由字段。对于依赖脚本或不受支持指令的配置文件,保留命令行客户端并改用服务来监管,同时禁用桌面连接,让隧道只归一个组件所有。
当导入成功但激活失败时
高级选项卡会保留导入时或上次选择的传输方式。监听 UDP 的服务器在选了 TCP 时会很快失败,而报错信息很少说明这一点。必须在没有已登录用户的情况下启动的连接,需要把密钥对所有用户保存,这和只为本会话保存是两回事。
对话框里没有有用信息时,journalctl -u NetworkManager -b 会显示激活失败的原因。shell 客户端从不经过那条路径,所以它一直能用,而桌面那份不行。
最后做一次核对:把插件版本与发行版版本对比一下。版本不匹配的插件可以正常安装,却仍然拒绝激活一个 nmcli 能顺利导入的配置文件。