NetworkManager 无法导入你的 OpenVPN 配置文件?请读这篇
导入能力报错是本机问题。检查插件与编辑器,用 nmcli 导入以获得真实信息,并把内联证书留在原处。
在另一款 OpenVPN 客户端里连接正常的配置文件,可能被 NetworkManager 拒绝导入,而对话框把责任推给插件的导入能力。这句话说的是你的机器,不是文件或服务器。导入是管理器 VPN 插件在本机执行的操作,失败的那一刻还没有任何东西被发往任何地方。先把它当作打包问题,再当作解析问题。
把这句话当作本机层面的陈述来读
这句话描述的是插件的功能集合。要么缺少提供 OpenVPN 支持的插件,要么提供导入动作的组件比你喂给它的格式更旧。两种情况都只与你面前的这台机器有关。
注意它没有说什么。它没说证书错了、密码过期了、服务器宕机了,所以重启或更换凭据都修不好。请把它读成关于已安装软件的陈述。
这个区分能省下全文最多的时间,因为故障完全在桌面上时,人的本能却是往外看网关。
第 1 步:确认插件和编辑器
有两个包很重要,而它们职责不同。一个提供拥有该连接的管理器 VPN 插件,另一个提供桌面端的编辑与导入前端。只装运行时或只装编辑器,你只能得到一半功能。
nmcli --version
nmcli connection show
rpm -q NetworkManager-openvpn NetworkManager-openvpn-gnome 2>/dev/null
dpkg -l | grep -i network-manager-openvpn
用你的发行版真正拥有的打包命令;上面两行是备选,不是顺序。同时确认你确实在 NetworkManager 流程里,因为另一个自带导入器的 OpenVPN 客户端不会理会这些建议中的任何一条。
安装插件通常会重启或重载 NetworkManager,现有连接会短暂中断。请有意为之,别在支持通话进行到一半时动手。
第 2 步:用 nmcli 导入,拿到真实信息
图形对话框往往把好几种失败压成一句话。命令行导入器更具体,而这是同一个操作:
nmcli connection import type openvpn file /path/to/client.ovpn
nmcli connection show --active
仔细读返回内容。抱怨缺少插件是打包问题。抱怨某条指令是解析器问题。抱怨被引用的文件是路径问题,这三者除了导入这个词之外没有任何共同点。
记住:这里的成功只是生成一个已保存的配置文件。它不会连接,也不能证明该配置文件保留了原文件的全部功能。
第 3 步:内联证书留在原处
更早的建议让你在导入前剥掉每一个内联证书和密钥块。那条建议已经过时。现在的导入器能处理内联对象,删掉它们会移除连接所需的身份,同时产出一个能导入、随后认证失败的配置文件。
如果确实因为某个具体原因需要拆出材料,请保留原文件,并记录哪一块去了哪里。被三个人改过三次的配置文件,不是日后还能据以推理的配置。
同样的谨慎也适用于厂商指令。某个客户端专用的选项可能不在某个插件版本的功能集合内,却并不是非法的 OpenVPN 语法;为了关掉对话框而删掉它,可能会悄悄改变行为。
第 4 步:检查配置文件现在意味着什么
导入成功后,在启用任何东西之前,先检查端点、认证安排、文件引用以及密钥的存放位置。这四项正是导入与意图最常分道扬镳的地方。
然后检查你真正在意的行为:路由、DNS,以及原配置文件的功能是否还在。这三处正是成功的导入仍可能让提出需求的人失望的地方。导入成功和连接行为正确是两个不同的结果,对用户来说只有后者才算数。
如果导入后的配置文件行为与原客户端不同,请比较两份配置,而不是凭记忆重建,因为差别通常只有一行。
第 5 步:让同一个管理器拥有这条隧道
一旦配置文件住进 NetworkManager, 就让由它拥有这个连接。把另起一个 OpenVPN 进程当作绕行办法,会造出第二条管理路径,它有自己的解析器行为、自己的凭据和自己的生命周期。
两条隧道都以为自己拥有默认路由,产出的症状看起来像服务商坏了,而解决办法是去掉其中一条,而不是去调任何一条。