在Windows Server上部署FlexNet时,防火墙配置是决定客户端能否成功连接的关键环节。由于FlexNet默认使用动态端口,防火墙若不放开限制,会直接阻断通信。这篇文章会讲清楚它用到了哪些端口,以及如何在Windows防火墙上正确配置。
先弄清楚FlexNet的端口机制,防火墙配置才有依据。
FlexNet许可证服务器运行着两个核心进程:
| 进程 | 作用 | 端口特点 |
|---|---|---|
| lmgrd.exe | 主许可证管理进程,负责监听客户端请求 | 使用固定端口,默认27000 |
| vendor daemon(如adskflex、ansyslmd等) | 厂商特定的守护进程,负责实际的许可签出/签入 | 默认使用动态随机端口,每次启动都可能变化 |
关键问题出在vendor daemon上。它的端口是动态的,每次启动都可能变。如果防火墙只开了27000,vendor daemon每次随机换端口,防火墙就得跟着改,不现实。
解决方案:把vendor daemon的端口也固定下来。
默认情况下,lmgrd使用的端口范围是27000到27009。但你可以在license文件中手动指定两个固定端口,一个给lmgrd,一个给vendor daemon。
license文件修改示例:
text
SERVER hostname MAC地址 27001
VENDOR vendor_name PORT=27002这样改完之后,FlexNet只用27001和27002两个TCP端口,防火墙只需要开放这两个端口即可。
注意:不同软件厂商的vendor daemon名称不同,比如Autodesk的是adskflex,ANSYS的是ansyslmd,ARM的是armlmd。修改时把vendor_name换成实际的名称。
下面以Windows Server 2022/2019的“高级安全Windows Defender防火墙”为例,逐步操作。
用记事本打开license文件(通常是.lic或.dat格式),找到SERVER行和VENDOR行,按上面的格式修改。
修改前:
text
SERVER my-server 001122334455
VENDOR adskflex修改后(假设选用27001和27002):
text
SERVER my-server 001122334455 27001
VENDOR adskflex PORT=27002保存文件。
注意:选用的端口必须未被其他程序占用。可以用netstat -ano | findstr :27001检查。

修改license文件和防火墙后,必须重启FlexNet服务才能生效:
也可以用netstat -ano | findstr :27001和netstat -ano | findstr :27002确认两个端口都在监听状态。
最常见的原因是客户端连的是动态端口。检查方法:
注意:修改license文件后,务必先Stop Server再Start Server,只点Reread不会生效。
每套FlexNet用不同的端口组合即可。例如:
防火墙把所有用到的端口都开放。
跨网段情况下,除了防火墙端口,还要确保:
云服务器除了操作系统防火墙,还有安全组规则。两个地方都要配:
| 检查项 | 状态 |
|---|---|
| license文件中SERVER行已添加固定端口 | ☐ |
license文件中VENDOR行已添加PORT= | ☐ |
| 两个端口未被其他进程占用 | ☐ |
| Windows防火墙入站规则已添加两个TCP端口 | ☐ |
| 云平台安全组已放行两个TCP端口(如有) | ☐ |
| FlexNet服务已重启 | ☐ |
lmstat在服务器本地能正常查询 | ☐ |
lmstat在客户端能正常查询 | ☐ |
如果以上全部完成,客户端仍然连不上,检查debug.log中的具体报错信息——日志里通常会直接告诉你问题在哪。