NetworkManager VPN 快捷键:分别连接与断开
为一个已保存的 NetworkManager VPN 提供两个快捷键,而不是一个切换键。绑定 UUID,保持认证提示可见,并检查就绪状态。
两个快捷键消除了单个 VPN 切换键必须应对的猜测:一个始终连接,另一个始终断开。两个快捷键消除了歧义:一个始终请求连接,另一个始终请求断开。两者都通过 UUID 指向同一个已保存的配置文件。
按下面的顺序进行设置。在绑定之前,先在终端中测试每条命令,因为快捷键不是发现你看不见的提示的好地方。
找 UUID,而不是配置文件名称
在普通桌面会话中列出已保存的连接,并复制目标 VPN 的 UUID。名称是给人看的;两个已保存的配置文件可能共用一个名称,而删除后重新导入的配置文件会获得新的标识符。
nmcli connection show
nmcli connection show "Office VPN" | grep -i uuid
把 UUID 留在快捷键定义中,而不是显示名称。如果之后配置文件被替换,要同时更新两个快捷键,因为过期的标识符会产生失败的连接操作,而断开仍然指向旧对象。这就是两个操作使用同一个值的原因。把 UUID 视为配置文件的身份。
确认该配置文件是 NetworkManager VPN,而不是带有自己服务的厂商守护进程。厂商客户端需要自己受支持的控制接口;nmcli 不会管理不属于它的隧道。如果名称含糊,就检查连接类型。属于其他守护进程的隧道不会出现在同一个列表中。
先在终端中测试两条命令
以交互方式请求连接,完成已批准的登录,并访问你真正需要的私有资源。然后用对应的命令断开,并确认 VPN 断开时不会把底层的 Wi-Fi 或以太网链路一起带走。
nmcli --ask connection up uuid 11111111-2222-4333-8444-555555555555
nmcli connection down uuid 11111111-2222-4333-8444-555555555555
把它们作为两个独立的操作运行。它们改变连接状态;不会删除配置文件,也不会编辑其设置。保留第一次运行的终端输出,以便了解正常提示序列的样子。那份记录让快捷键的行为可预测。
不要通过你唯一的远程管理路径来测试断开。如果 VPN 承载着你的会话,成功断开也会结束你的访问,恢复需要一条不依赖隧道的路径。请保留本地控制台或第二条链路。
把两个有名称的快捷键绑定到同一个 UUID
在桌面的键盘设置中,创建两个名称清晰的操作,例如连接办公室 VPN 和断开办公室 VPN。分配不同的按键组合,并把检查过的 UUID 粘贴到两条命令中。
按意图而不是状态来命名。名为切换的快捷键让下一次按下不可预测;连接和断开准确说明将会请求什么。这让快捷键列表自我说明。按错位置仍然会做一些可预测的事。
如果桌面使用 desktop-entry 启动器,请记住, 启动器不会自动分配终端。需要交互输入的命令会一直等待,而没有人能回答。
把认证提示放在你能看见的地方
如果没有 --ask,nmcli 会向正在运行的密码代理请求缺少的凭据。当桌面已经处理此 VPN 的认证且代理能显示自己的提示时,这就是正确的路径。在认定它能用之前,先从快捷键测试简单的连接命令。
如果 VPN 需要终端交互,请把快捷键配置为打开桌面的终端应用并在那里运行交互命令。启动参数因终端应用而异,请使用已安装应用的文档化形式。
对于桌面条目, Terminal=true 请求终端窗口,而 Terminal=false 不请求。这两种设置都不是在命令行中输入密码、授予无密码 sudo 或绕过组织认证策略的理由。
按键之后检查就绪状态
按键意味着你请求了激活。它不能证明认证已完成、路由已安装或私有 DNS 正在应答。检查连接状态,然后检查实际的私有资源。
通过所属客户端读取状态,而不是比对翻译后的句子。人类可读的文本随语言变化,一台机器可能有多个 VPN,所以字符串匹配可能报告错误的配置文件或错过过渡状态。
如果其他自动化重新连接 VPN,请让它与断开快捷键协调。两个所有者互相抵消,会产生一个似乎忽略按键的连接,而真正的问题是策略冲突。
把 UUID、两条命令和就绪检查记录在笔记中。当下一次替换配置文件或升级桌面时,如果标识符和预期的提示路径已经写下来,诊断会容易得多。