许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  客户端与License Server之间网络通信的端口需求(TCP/UDP)

客户端与License Server之间网络通信的端口需求(TCP/UDP)

阅读数 6
点赞 0
article_banner

FlexNet的端口配置,说简单也简单,说复杂也复杂。简单在于它只用TCP,不用UDP;复杂在于如果你不手动指定,vendor daemon的端口是随机的。

这篇文章把端口需求和配置方法一次性说清楚。

一、需要几个端口?两个TCP端口

FlexNet许可证服务器和客户端之间的通信,只需要两个TCP端口。不需要UDP。

这两个端口分别对应两个进程:

第一个端口:lmgrd(许可证管理守护进程)

lmgrd是FlexNet的“前台”。客户端软件启动时,先找到lmgrd,问它:“我要用一个许可证,找谁办?”

lmgrd的端口默认是27000。如果你不指定,lmgrd会在27000到27009之间选一个可用的。27000是默认值,也是绝大多数license文件里用的那个。

第二个端口:vendor daemon(供应商守护进程)

lmgrd收到客户端的请求后,会把请求转给vendor daemon——这才是真正干活的那个进程。它负责检查许可证池里有没有空闲的、该用户有没有权限、该feature是否可用,然后决定签出还是拒绝。

vendor daemon的端口是动态分配的。每次vendor daemon启动时,操作系统会从临时端口范围(通常是32768到61000)里随机挑一个给它用。每次重启,端口可能都不一样。

这就是防火墙配置的麻烦所在——lmgrd的端口27000是固定的,但vendor daemon的端口每次都在变。你没法在防火墙里写死一个随机端口。

二、工作流程:客户端怎么找到vendor daemon

理解端口需求之前,先搞清楚通信流程:

  1. 客户端根据环境变量(比如LM_LICENSE_FILE=27000@server)找到lmgrd,连接27000端口
  2. lmgrd收到请求后,把vendor daemon的实际IP和端口号告诉客户端
  3. 客户端断开与lmgrd的连接,直接连接到vendor daemon的端口,完成许可证签出

所以整个通信过程涉及两个TCP连接:客户端→lmgrd,客户端→vendor daemon。两个连接都需要通畅。

三、防火墙配置的核心问题

如果你的客户端和服务器在同一个网段,没有防火墙阻隔,动态端口不是问题。vendor daemon每次启动换端口,客户端都能从lmgrd那里拿到最新地址。

但一旦有防火墙,问题就来了。

防火墙的规则是基于固定端口的。你没法写一条规则说“允许连接到任意临时端口”。vendor daemon的端口每次重启都在变,防火墙规则跟不上。

客户端怎么找到vendor daemon

唯一的解决办法:把vendor daemon的端口固定下来

固定方法是在license文件的VENDOR行后面加上PORT=参数:

text

VENDOR snpslmd /opt/synopsys/snpslmd PORT=27002

这样vendor daemon每次启动都用27002,不会再随机变化。

同样的,lmgrd的端口也可以在SERVER行固定:

text

SERVER license-server 001122334455 27001

如果SERVER行不写端口号,默认用27000。如果写了,就用指定的。

四、防火墙到底要开哪些端口

最基本的情况:

如果你的lmgrd用默认27000,vendor daemon固定到了27002,那么防火墙需要开放:


端口用途协议
27000lmgrd监听端口TCP
27002vendor daemon端口TCP

如果用了多套FlexNet:

同一台服务器上跑多个厂商的license服务,每套用不同的端口组合:

  • 厂商A:SERVER端口27000,VENDOR端口27002
  • 厂商B:SERVER端口27003,VENDOR端口27004

防火墙把所有用到的端口都开放。

客户端侧防火墙:

客户端机器通常不需要开放入站端口,因为连接是由客户端主动发起的。但客户端防火墙的出站规则需要允许访问服务器的27000和27002端口。如果客户端防火墙限制了出站连接,同样会出问题。

五、常见误区:UDP和27000-27009范围

误区一:FlexNet用UDP

不用。FlexNet的通信协议是TCP/IP,应用层是FlexNet自己的私有协议。不需要在防火墙里开放任何UDP端口。

误区二:必须开放27000到27009整个范围

不需要。lmgrd默认在27000到27009之间选一个端口,但只需要开放实际使用的那一个,不用把整个范围都打开。

如果你在SERVER行明确指定了27001,那只需要开放27001。27000到27009里的其他端口跟你的服务没关系。

误区三:vendor daemon端口固定了就万事大吉

固定vendor daemon端口只是解决了防火墙的问题。但如果你用的是Windows服务(通过LMTOOLS安装的),还要确保服务以“本地系统账户”运行,否则vendor daemon可能因为权限不足无法绑定到指定端口。

vendor daemon端口固定了

六、实际操作示例

假设你要把lmgrd端口改成27001,vendor daemon端口固定到27002。

第一步:修改license文件

text

SERVER license-server 001122334455 27001
VENDOR snpslmd /opt/synopsys/snpslmd PORT=27002

第二步:重启lmgrd服务

text

lmdown -c /path/to/license.lic
lmgrd -c /path/to/license.lic -l /var/log/flexnet/debug.log

第三步:配置防火墙

  • Linux(firewalld):firewall-cmd --add-port=27001/tcp --add-port=27002/tcp --permanent
  • Windows:入站规则→新建规则→TCP端口27001和27002
  • 云服务器:安全组入站规则放行27001和27002

第四步:更新客户端配置

客户端环境变量改成新端口:

text

LM_LICENSE_FILE=27001@license-server

七、验证方法

配置完成后,用lmstat验证:

text

lmutil lmstat -c 27001@license-server -a

如果能正常返回feature列表和使用情况,说明端口配置正确。

如果返回连接失败,按这个顺序排查:

  1. 服务器上netstat -anp | grep 27001确认lmgrd在监听
  2. netstat -anp | grep 27002确认vendor daemon在监听
  3. 从客户端telnet 服务器IP 27001测试端口连通性
  4. 检查服务器防火墙和云平台安全组

FlexNet的端口需求其实很明确:两个TCP端口,一个给lmgrd,一个给vendor daemon。

  • lmgrd的端口可以在SERVER行指定,默认27000
  • vendor daemon的端口默认动态,有防火墙时必须用PORT=固定
  • 不需要UDP
  • 不需要开放整个27000-27009范围,只开放实际使用的端口就行

大多数端口相关的连接问题,根源都是vendor daemon的端口没有固定,或者防火墙只开了lmgrd的端口没开vendor daemon的。把两个端口都固定下来,防火墙两边都配置好,问题就解决了。


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空