VPN环境下浮动许可被回收,是远程办公场景中最常遇到的许可证问题之一。原因不复杂,但解决起来需要从几个方向同时入手。
FlexNet的浮动许可证在签出之后,会与客户端当前的网络会话绑定。当用户切换网络——比如从办公室WiFi切换到VPN、在不同WiFi之间切换、或者VPN连接过程中IP发生变化——客户端的网络属性就变了。
FlexNet服务器感知到这种变化后,会认为原来的会话已经失效,然后做两件事:一是回收原来的许可证,二是让客户端重新签出一个新的许可证。
结果就是:用户明明只开了一个软件,却占用了两个许可证。旧的那个变成了“僵尸会话”,在服务器上挂着,直到超时才会被释放。根据FlexNet的默认配置,这个超时时间大约是2小时。如果多个VPN用户都遇到这种情况,许可证池很快就会耗尽。
如果问题已经发生了,先救急。
1. 手动释放僵尸会话
在服务器上用lmstat找到被占用的僵尸会话,然后用lmremove强制释放:
bash
lmutil lmstat -a -c /path/to/license.lic
lmutil lmremove -h feature_name 用户名 主机名 handle值如果使用的是lmadmin管理界面,需要注意:lmadmin默认禁用了lmremove功能,需要加-allowLicenseReclaim参数启动才能使用。
2. 重启许可证服务器
如果僵尸会话太多,逐个释放太慢,可以直接重启lmgrd。但重启会中断所有在线用户的服务,需要提前通知。

救急之后,做下面几件事来根治。
1. 缩短超时回收时间(最推荐)
默认的2小时超时太长了。通过options文件把闲置超时时间缩短到15分钟或更短。
在options文件(通常是.opt文件)中添加:
text
TIMEOUTALL 900900是秒数,即15分钟。TIMEOUT的最小值是900秒,设置更短的时间不会生效。设置之后执行lmreread让配置生效。
2. 调整客户端超时参数
在客户端设置FLEXLM_TIMEOUT环境变量,给VPN连接更多的响应时间。
这个变量只在Windows上生效,但Linux下可以通过其他方式调整超时参数。
3. 固定IP和优化网络
如果条件允许,让VPN客户端分配固定IP,或者要求用户在使用许可证期间不要切换网络。
跨地域部署时,专线或SD-WAN比普通互联网VPN稳定得多,可以显著减少连接中断。在路由器上配置QoS策略,优先保障27000-27009端口的流量。
4. 使用许可证借用(Borrow)功能
某些软件支持许可证借用功能——用户可以把许可证“借”到本地,在一段时间内离线使用。这样完全绕开了VPN连接不稳定的问题。
缺点是借用的许可证在这段时间内不能被其他人使用,需要根据团队的许可证余量来权衡。
VPN环境下许可证被回收,根本原因是网络切换触发了FlexNet的会话重建机制,导致旧的许可证变成僵尸占用。
解决的优先级:
VPN导致的许可证回收问题,根子在FlexNet的会话机制上,解法在超时配置和网络优化上。