一台服务器上跑着多个服务,27000被占了,或者公司安全策略要求不能用默认端口,需要改成其他端口。
改端口其实就一步:改license文件里的SERVER行。
但改完端口后,有三件事要跟着调整,缺一件客户端都连不上。下面把完整的操作步骤和连带影响说清楚。
找到license文件中的SERVER行,它的标准格式是三个参数:
text
SERVER 主机名 HOSTID 端口号默认情况下,如果不指定端口号,FlexNet会在27000到27009之间选一个,通常是27000。
要改成其他端口,直接在第三参数位置写上你想要用的端口号:
text
# 原行(默认端口)
SERVER license-server 001122334455
# 修改后(指定端口27001)
SERVER license-server 001122334455 27001
# 或者使用其他端口,比如30000
SERVER license-server 001122334455 30000选端口时注意几点:

修改完后保存license文件。
改完SERVER行的端口,只是解决了lmgrd的监听端口问题。但vendor daemon仍然使用动态端口,每次启动随机分配。这会导致防火墙配置更复杂——你不仅要开放SERVER端口,还得开放vendor daemon的随机端口。
所以趁这个机会,建议在VENDOR行里也固定vendor daemon的端口:
text
VENDOR snpslmd /opt/synopsys/snpslmd PORT=27002这样所有通信端口都固定了。防火墙只需要开放两个端口:SERVER端口和VENDOR端口。
改完端口后,服务器端的防火墙必须放行新端口。
Linux防火墙(firewalld):
text
sudo firewall-cmd --add-port=27001/tcp --permanent
sudo firewall-cmd --add-port=27002/tcp --permanent
sudo firewall-cmd --reloadLinux防火墙(iptables):
text
iptables -A INPUT -p tcp --dport 27001 -j ACCEPT
iptables -A INPUT -p tcp --dport 27002 -j ACCEPT
service iptables saveWindows防火墙:
云服务器(AWS/阿里云/腾讯云):
除了操作系统防火墙,还需要在安全组(Security Group)的入站规则中放行新端口。这点经常被忽略——系统防火墙改了,但安全组没改,客户端还是连不上。

服务器端口改了,客户端必须指向新端口,否则找不到服务器。
环境变量方式:
text
LM_LICENSE_FILE=27001@license-server或者
text
SNPSLMD_LICENSE_FILE=27001@license-server(具体变量名取决于软件厂商)
配置文件方式:
某些软件在安装目录下有一个license配置文件,里面写死了服务器地址和端口。需要找到这个文件,把端口号从27000改成27001。
修改客户端配置后,最好测试一下连接:
text
lmutil lmstat -c 27001@license-server -a如果能看到feature列表和用户使用情况,说明客户端能正常连接新端口。
完成上面所有步骤后,重启lmgrd服务:
text
lmdown -c /path/to/license.lic
lmgrd -c /path/to/license.lic -l /var/log/flexnet/debug.log然后用lmstat确认服务在新端口上正常运行:
text
lmutil lmstat -c 27001@license-server -a查看debug.log,确认lmgrd监听的端口是修改后的端口。日志里会有一条类似这样的记录:
text
(lmgrd) Listening on port 27001如果看到端口号已经更新,说明修改成功了。
修改SERVER行端口后,不要只改license文件就完事了。
有些服务器上的lmgrd是通过systemd服务管理的,service文件里可能用-c参数指定了license文件路径。如果端口写在了license文件里,重启服务时会自动读取新端口,不需要额外操作。
但有些systemd service文件里用-c参数同时指定了端口(比如-c 27000@localhost这种写法),这种情况下,端口是在命令行里指定的,不是从license文件里读取的。需要同步修改service文件里的命令行参数,否则systemctl restart后服务仍然用旧端口启动。
检查方法:
text
sudo systemctl cat flexnet如果ExecStart行里有-c 27000@localhost这类写法,把27000改成新端口。
修改FlexNet默认端口,核心操作就一行——改SERVER行的第三个参数。但真正让改动能正常运行,需要做三件事:
如果使用了systemd服务管理,还要检查service文件中是否直接指定了端口。改完后用lmstat验证,确保服务在新端口上正常监听。服务器防火墙和云平台安全组也要同步开放新端口,否则客户端请求根本到不了lmgrd进程。