流传的说法是 AnyConnect 弄丢了你的第二个网关,或者客户端太老,装不下两个配置文件。两件事都不是。真正发生的是:客户端把见过的每个配置文件都存成文件,文件名取自服务器下发时的名字,而你的两个网关用了同一个文件名。磁盘上该文件名只有一个位置,所以第二次下载会占据第一次的位置。

两个文件夹,只有一个是你的

不断变化的那份副本位于你自己的用户配置下,通常是 %LOCALAPPDATA%\Cisco\Cisco AnyConnect Secure Mobility Client\preferences.xml。该文件记录你最后一次连接以及所用的配置文件。因为它在你自己的文件夹里,客户端每次连接都会重写它,无需请求提权。

下拉列表里看到的则是另一回事。机器收到过的每个配置文件都会复制到 %PROGRAMDATA%\Cisco\Cisco AnyConnect Secure Mobility Client\Profile,客户端只是列出该目录下的文件。往那个目录写入需要管理员权限,这解释了一个常被误读的现象:以普通用户身份手动添加配置文件看似成功,随后条目却消失了。

所以,每用户的那份文件是指针,全机共享的目录才是库。条目消失说明库变了,而不是指针变了。

客户端按文件名匹配,而不是按网关

在这个客户端里,配置文件的身份就是文件名。两台都下发 company.xml 的设备,在本地配置库看来就是同一个配置文件被发布了两次。第二次下载覆盖第一次,而窗口里的条目仍指向一个现在描述另一个站点的文件。

故障之所以显得古怪,原因就在这里。列表里的名字读起来仍是你期望的地点,认证仍然对着实际配置的网关成功,也没有任何报错。改变的是你所信任的那个标签背后的内容。

看 HostAddress,而不是标签

用文本编辑器打开文件,查看服务器列表。配置文件里有 HostName 元素,那是显示标签;还有 HostAddress 元素,那才是客户端真正联系的网关。标签是可以随意编辑的自由文本,地址才决定你最终落在哪里。

在下结论说客户端坏了之前,先把这两项与你原本要连的网关比对一下。

按顺序保留两个网关

取得每个站点被接受的配置文件,可以从站点获取,也可以从已经能连接的机器上取。把每个文件改成彼此不同的名字,例如 site-a.xml 和 site-b.xml。以管理员身份把两个都放进全机配置文件目录,并保留你收到的原始文件。然后重启客户端,确认两个条目都出现在下拉列表中。

分别连接之后,再次打开 preferences.xml,查看它现在把哪个配置文件名记为上次使用。如果名字与你点击的条目一致,本地映射就是正常的。如果不一致,说明仍有东西在把文件推到你重命名过的副本上。

重命名解决不了什么

新文件名只改一个本地标签,仅此而已。网关地址、认证方式、服务器出示的证书以及配置文件内部的任何组选择都保持原样。错误配置文件的改名副本仍然是错误配置文件,它会在一个可信的名字下把你连到错误的站点。

它也挡不住针对原文件名下发的管理推送。

下一次推送会把它推翻

如果你的组织按文件名分发配置文件,一次更新就会替换掉所有同名文件。把改名副本当作本地便利,并在每次客户端更新后重做连接测试,检查地址而不是标签。

要长期稳定,请申请受支持的多网关方案,而不是手工维护文件。程序目录里的改动是升级最先删除的东西,而每用户的首选项文件本来就会被重写。

为每个网关保留一行:文件名、HostAddress,以及它所在的文件夹。这条记录回答下一次连错站点的问题,比重装更快。

相关文章