Mac 上什么程序会打开 .vpn 文件?先确认导出方
.vpn 文件是厂商导出的配置,并非通用的 Mac 描述文件。选择客户端或重命名文件之前,先弄清导出方和网关协议。
以 .vpn 结尾的文件名并不代表某种通用格式。这个扩展名通常标记厂商导出的站点配置,而读取它的解析器属于该厂商的生态,而不是 macOS。把扩展名当作客户端选择器是第一个错误;真正需要确认的是导出方。答案在文件头里,不在扩展名里。
安装任何东西之前,先回答两个问题:这个文件由哪个应用生成,另一端是哪一种网关服务?答案决定解析器和协议,通常可以从提供文件的人那里得到。
扩展名不记录任何格式信息
文件扩展名只是一种命名惯例。macOS 不会把 .vpn 映射到某个通用 VPN 导入器,也没有标准规定所有带这个后缀的文件都包含相同字段。同一个后缀可以出现在厂商导出、文本包,或帮助台手工改名后的文件上。
OpenVPN 配置文件是另一种可识别的格式,通常以 .ovpn 结尾,包含 client、remote 和 dev tun 之类的指令。Mac 原生 VPN 配置描述文件由运营方以设置文件形式提供,带有特定负载类型,而不是任何客户端都能打开的任意文档。
Shrew Soft 的历史 Access Manager 文档说明了该产品如何导出和导入自己的站点定义。这类文件需要匹配的解析器和属于该产品的网关协议。与其逐个试解析器,不如问提供方这个文件由哪个应用写入。文档是格式背景,并不等于建议在当前 Mac 上安装旧客户端。
在受保护的副本上读取文件头字段
如果文件是文本,就在已经保存它的机器上查看副本。file 命令会指出容器类型,前几行通常会显示 XML plist、JSON 或 OpenVPN 风格的指令。不要把文件上传到公开转换器,也不要贴到论坛上求识别。
file site-config.vpn
head -20 site-config.vpn
文件头还可能包含服务器名、认证域或证书块。截屏文件头并不比文件本身更安全。这些内容即使看起来只是普通设置,也属于敏感信息;内嵌私钥的描述文件等同于私钥本身。检查应当留在本地并在授权范围内进行。
如果文件是二进制或加密的,就不要根据扩展名猜测。向导出方询问格式名称和支持的客户端;十六进制转储不会把未知容器变成受支持的导入。
把导出方与解析器、协议对应起来
导出方和解析器必须一致。厂商导出可能编码了只有其自家客户端才理解的站点设置、认证选项和网关行为。通用 OpenVPN 客户端能读取 OpenVPN 配置,但没有理由理解另一款产品的站点文档。
网关协议是另一半。即使文件被成功解析,它描述的仍是一个期待特定隧道协议和认证流程的服务。读取字段只能说明导出方的意图,不能说明当前网关还接受什么。
选择客户端之前,先写下三个值:导出方、网关协议和支持的 Mac 应用。只要有一项未知,导入就是猜测,而猜测正是带有私密内容的文件落入无关应用的途径。
导入成功不等于连接成功
能显示字段的导入器只证明它解析得了这些字段。建立会话还需要正确的协议、正确的凭据,以及旧配置执行过的证书或注册步骤。手工重建的连接可能漏掉原客户端强制执行的身份证验或设备策略。
在停用旧流程的情况下,用新客户端访问私有资源。连接建立了却到不了内部服务不算成功迁移;那是解析器的成功,背后是策略或路由的缺口。
在新路径验证通过之前,保留原始文件及其来源。如果客户端拒绝该格式,这个拒绝是关于导出方的有用证据,而不是不断删字段直到能连上的理由。
与其转换,不如索取受支持的描述文件
把 .vpn 改名成 .ovpn 并不能转换协议。把服务器地址复制成无关的形式、删除不认识的认证选项或去掉证书块,得到的文件也许能导入,却仍然无法通过认证。
可靠的路径是向服务所有者索取一份新的描述文件,格式要符合受支持 Mac 客户端的文档。同时问清客户端要求,因为网关可能已经迁移到旧导出从未支持的协议。
如果服务所有者无法提供当前描述文件,迁移就卡在他们那里,而不是卡在 Mac 应用的选择上。记录导出方、被拒绝的格式和准确报错,让请求带着证据而不是一个文件名。