为什么 VPN 编辑器无法保存新配置文件
保存按钮变灰是本地校验问题,而不是登录被拒绝。请检查连接方法、引用的文件以及代理会提供哪些机密信息。
每个字段看起来都填好了,保存按钮却一直是灰色,而网关连一个数据包都还没收到。没有任何内容被拒绝,因为根本没有任何内容被发送。这个控件反映的是本地编辑器对眼前配置文件所能校验的内容。这个问题比账号能否正常工作要窄得多,而且在没有网络的情况下也有答案。
按钮反映的是本地校验
一个被禁用的控件可能有好几种本地原因,从外面看却完全一样。可能是缺少必需的引用,可能是引用的文件对运行编辑器的用户不可读,也可能是处理所选方法的插件根本没有安装。配置文件本身的权限问题,同样会让按钮变成灰色,就像字段没填一样。
先读校验提示,再动手修改,因为提示里已经点明了编辑器不认可的那个字段。靠猜表单,比读编辑器已经写好的那一句话要慢。
让字段与所选方法匹配
需要哪些输入,取决于连接方法,而不是对话框的布局。证书身份需要客户端证书,还需要能够访问与之匹配的私钥,而且仍然需要一种校验服务器的方式。基于账号的方法需求不同,同样需要校验服务器。有些部署同时要求两者,所以看起来多余的表单往往是正确的。
请使用运营方支持的配置文件和注册说明,不要凭感觉拼凑字段。把客户端证书填进 CA 字段、把公开证书当作私钥、或者把账号密码敲进私钥口令框,这些都很常见,结果都是同一种沉默的拒绝保存。
请把每个引用当作它本该是的对象来检查。后缀正确的文件名,并不能证明它可读、归属正确,或者属于这个身份。只有 root 能读的私钥在桌面会话里加载不了,编辑器会把这种情况报告为校验失败,而不是权限错误。
仅仅为了让按钮可点击而更换方法,会改变这个配置文件的意义。乱输密码再切回来,可能留下谁都不想要的已保存值。它还会掩盖真正缺失的那项要求,而这个问题会在一小时后以连接失败的形式回来。
把已保存的机密与代理提供的机密分开
有些信息属于已保存的配置文件,另一份凭据可以在激活时以交互方式提供。NetworkManager 的连接 API 把连接校验、机密校验和机密发现当作彼此独立的操作,它自己的文档也提醒说,提示并不总能确定一条连接所需的全部内容。
这一区别解释了密码框为什么是空的。它可能是对的,因为会有机密代理提供这个值;也可能是错的,因为这条连接根本没有可用的代理。附加在机密上的标志决定它归系统所有、归代理所有,还是根本不会被保存。
请选择与生命周期相匹配的标志。登录之后才解锁的桌面钥匙环,对在登录之前启动的服务来说并不可用,所以一个在交互环境下正常的配置文件,可能在开机时失败,而配置文件本身没有任何改动。这种失败看起来像配置文件坏了,实际上是调度上的不匹配。
保存成功也不能证明预期的代理会响应下一次询问。请保持账号和私钥的所有权,而不要把每一个机密都复制进系统可读的文件里,只为了让对话框安静下来。
后续阶段要分开来看
配置文件保存之后,先检查它的标识符、终结点、插件和方法,不要索要机密值。运营方提供的导入可能有帮助,但导入本身是一个独立的解析器,有它自己支持的功能,所以导入被拒绝与保存被拒绝不是同一种失败。
只有到这时,才通过预期的管理器和它所期望的账号去激活。服务器身份错误、账号被拒绝、缺少路由,以及应用权限被拒绝,都属于后续阶段;把它们当作编辑器的问题上报,会把排查引向错误的地方。
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show "Corp VPN" | grep -E "vpn\.|802-1x"
如果按文档提供的输入操作后,保存仍然处于禁用状态,请记录编辑器版本、插件版本、所选方法以及确切的本地错误。一份点名说明编辑器无法表示的合法配置文件的报告是有用的;而一串只是让按钮短暂可点击的随机凭据,则没有用。