Calibre 连接被拒怎么办:Connection refused 排错速查
更新时间:2026-10-23。FAQ 速查页,属于 EDA 工具排错系列,总入口见 开源 EDA 报错排错中心。本篇处理的是 Calibre 的「TCP 层根本连不上」:启动
calibre时 license 握手还没开始就被拒绝、远程跑 DRC 时 CB/MTCM 并行 remote host 被拒、calibre -gui连不上远程主机。它和 Calibre license 获取失败速查 的分工要划清:那篇是连上了但 mgcld 取不到令牌(feature 名不对、席位满、版本不符),本篇是链路层失败,客户端连 SYN 握手都过不去,报Connection refused或FLEXlm cannot connect。链路不通时先别管令牌内容,把网络修好再说。
本文要回答的问题
- 报
Connection refused/FLEXlm cannot connect,第一反应查什么? - license 服务器在哪台机、哪个端口,
MGLS_LICENSE_FILE从哪确认? - CB / MTCM 并行跑 remote host 被拒,和 license refused 是不是一回事?
ping通但端口不通,lmstat也连不上,服务没起还是被防火墙拦?- 在家办公断 VPN 就挂,公司代理会不会把 license 端口的直连劫走?
一、报错原文与典型现象
1. license 服务器 TCP 层被拒(本篇主角):
FLEXlm cannot connect to license server.
The license server manager (lmgrd) has not been started yet,
the wrong port@host or license file is being used, or the
port or hostname in the license file has been changed.
Feature: calibre
Server name: lic.example.com
License path: 1717@lic.example.com
FLEXlm error: -15,570. System Error: 111 "Connection refused"2. 远程 host 并行被拒(CB / MTCM 形态):
// --- CALIBRE :: REMOTE HOST CONNECTION ---
Error: Unable to connect to remote host <host>:<port>
connect() failed: Connection refused (errno 111)
CALIBRE REMOTE run aborted.3. GUI 连不上远程会话:
calibre -gui: could not connect to display host <host>
Connection refused by remote daemon一句话根因:connection refused 说明 TCP 包到达了目标机但没有进程在那个端口监听;超时(errno 110/115)说明包根本到不了(防火墙丢包、路由不通、VPN 没通)。 两者处置路径不同,先看报错里的 errno:111/61 是「到了没人接」,110/115 是「到不了」。
二、报错 → 原因 → 处置速查表
| 报错现象 | 最常见原因 | 一条命令确认 | 处置 |
|---|---|---|---|
| refused,变量指旧服务器 | 服务器迁移后 MGLS_LICENSE_FILE 没改 | echo $MGLS_LICENSE_FILE | 改为 1717@lic.example.com 后重跑 |
| refused,服务器本机 lmstat 也 refused | lmgrd / mgcld 根本没启动 | 服务器上 lmstat -a -c 1717@localhost | 联系管理员起 license 守护进程 |
| 超时,VPN 一断就复现 | 在家办公,license 服务器在内网 | ping lic.example.com 看通不通 | 连上 VPN 再启动,或申请外网网关 |
| ping 通、端口不通 | 安全组/iptables 拦了 1717 口 | nc -vz lic.example.com 1717 | 管理员放行固定口与 mgcld vendor 口 |
| 1717 通、取令牌仍超时 | 只放了固定口,vendor 口被拦 | lmstat -a 找 vendor 口再 nc 测 | license 文件写 DAEMON mgcld port=<固定口>,两口齐放 |
| CB/MTCM 拒绝 remote host | 并行 host 没起 rshd/sshd 或端口没监听 | ssh <host> hostname 或 ss -lnt | grep <port> | 修远程守护,或改 REMOTE HOST 行去掉坏节点 |
| 主机名解析到错误地址 | /etc/hosts 残留旧条目、DNS 不一致 | getent hosts lic.example.com | 清理 hosts 残留,以 DNS 为准 |
| 终端 refused、别人机器正常 | 本机 HTTP 代理把直连劫走 | env | grep -i proxy | license 主机加进 no_proxy,不走代理 |
三、排查决策树
按「变量 → 主机可达 → 端口在听 → 服务在跑」四环收敛,先修链路再谈令牌。
读这张图抓住一条主线:红色是报错现象,四个蓝色判定对应「去哪找、路通不通、口开没开、服务活没活」,橙色是统一修复动作,绿色是复验。任何一环命中就在那层修,修完回到绿色节点复验,不要同时改多处——同时改变量和防火墙,修好了也不知道是哪一步起的作用。
四、逐条排查展开
第一步:确认客户端「去哪找」。 服务器地址写在两个地方:license 文件的 SERVER 行(服务端视角)和客户端环境变量(实际生效的)。Calibre 侧生效的是 MGLS_LICENSE_FILE(优先级高于通用 LM_LICENSE_FILE):
env | grep -iE "MGLS|LM_LICENSE"
# MGLS_LICENSE_FILE=1717@lic.example.com ← 与管理员通知逐字符对
cat /path/to/license.dat | grep -E "SERVER|DAEMON"
# SERVER lic.example.com <hostid> 1717 ← 服务端真实地址与端口
# DAEMON mgcld /path/to/mgcld port=1817 ← vendor 口(钉死后才固定)两个变量都设了改一个等于没改。非交互 shell(LSF 作业、cron)不加载 .bashrc,作业脚本里要 env | grep -i LICENSE 确认。
第二步:测主机可达性与主机名解析。 ping lic.example.com 不通先想 VPN:license 服务器几乎都在公司内网,断 VPN 后表现就是「昨天还能用今天全 refused」。还有一个 Calibre 集群里特有的坑:并行 remote host 的主机名在本机 /etc/hosts 里残留了旧条目,解析到一台退役机器,getent hosts <host> 核对解析结果,以 DNS 为准清理 hosts 残留。
第三步:测端口,别只测固定口。 FlexNet 用两个端口:SERVER 行固定口(Calibre 常见 1717)和 mgcld 的 vendor 口(默认随机):
nc -vz lic.example.com 1717
# 通了再查 vendor 口:
lmstat -a -c 1717@lic.example.com | grep -i "port"
nc -vz lic.example.com <vendor口>固定口 refused 而服务器确认 lmgrd 在跑,就是防火墙/安全组拦了——把报错、源地址、目标端口一起给管理员申请放行。固定口通、vendor 口不通的迷惑现象是 lmstat 偶尔应答、真取令牌超时,根治是让管理员写 DAEMON mgcld ... port=<固定口> 钉死两口齐放。
第四步:到服务器上确认服务在跑。 链路全通仍 refused,只剩一种可能:端口上没有进程在听。请管理员在服务器执行:
lmstat -a -c 1717@localhost
# 健康输出关键两行:
# lic.example.com: license server UP (MASTER) v11.16
# mgcld: UP v11.16本机 lmstat 都 refused,就是 lmgrd 没起(重启后没拉起来、开机脚本失效);lmgrd UP 而 mgcld DOWN,是 vendor daemon 崩了,查 license 日志。
第五步:CB / MTCM 并行 remote host 被拒。 这是 Calibre 独有的另一类 refused:rule file 里 REMOTE HOST 指了台没起远程守护的机器,或并行端口没监听。先 ssh <host> hostname 确认远程可达;集群用 rsh 的旧环境确认 rshd 在跑。坏节点一时修不好,先把 REMOTE HOST 行注释掉让作业跑起来,别让它阻塞整轮 DRC。
还有一种容易误判的形态值得单独说:报错时好时坏、重启终端又能连上几分钟。这多半是 DHCP 换了本机地址后撞上防火墙按源地址放行的旧规则,或 VPN 会话保活失败悄悄掉线——前者找管理员更新放行列表,后者把 VPN 客户端的自动重连打开,不要在 Calibre 侧反复重装。
第六步:排除本机代理劫持与 GUI 场景。 公司配的 HTTP 代理会接管所有 TCP 连接,FlexNet 协议包被代理转发后握手失败,现象是「我的机器 refused、邻座正常」——env | grep -i proxy,把 license 主机加进 no_proxy。calibre -gui 连远程 host 被拒则是另一回事:确认远程会话守护在跑、X11 转发或 VNC 通道没断。
复验标准:lmstat -a 正常应答 + calibre -drc 拿一个小 rule deck 空跑签到通过,两级都绿才算闭环。链路修好后若转为 cannot checkout 类报错,说明本篇的活干完了,接力棒交给 Calibre license 获取失败速查。
五、预防与纪律
- 服务器迁移走清单:license 服务器换机/换端口时,管理员发通知必须含新
SERVER/DAEMON行全文,客户端统一改工程环境脚本里的MGLS_LICENSE_FILE。 - vendor 端口一次钉死:新装或迁移时直接写
DAEMON mgcld ... port=<固定口>,防火墙申请单一次列两个端口,避免「放了一个口还超时」的二次返工。 - hosts 残留定期清:并行集群扩缩容后,同步清理各计算节点
/etc/hosts里的退役条目,解析一律以 DNS 为准。 - 代理白名单前置:license 服务器域名进全组统一的
no_proxy配置,装机脚本里写死。 - lmgrd 开机自启:服务器侧把 lmgrd 加进 systemd 并配存活监控,daemon 挂了先于用户报障发现。
- 先存档再动手:第一次失败的完整报错(含 errno 与端口)截图存档,改一处重跑一次,拒绝「变量、VPN、防火墙一起改」。
这一篇在知识体系里的位置
本篇是 EDA 排错速查簇的一员,总入口见 开源 EDA 报错排错中心。链路修好后的取令牌问题接力给 Calibre license 获取失败速查;连上了但 DRC 跑到一半卡死是另一类故障,见 Calibre 运行卡死/超时排查;命令本身找不到(command not found)则属于 PATH 问题,见 Calibre command not found 速查。同形态的链路排错在 SpyGlass 侧的对照见 SpyGlass 连接被拒速查。
一句话总结
Calibre 连接被拒是 TCP 链路层故障,与令牌无关:errno 111/61 的 refused 是「到了没人接」(lmgrd/mgcld 没起、MGLS_LICENSE_FILE 指旧服务器、端口没监听),errno 110/115 的超时是「到不了」(VPN 断、防火墙丢包);按「echo 变量对 SERVER 行 → ping/getent 看主机与解析 → nc 测固定口与 mgcld vendor 口 → 服务器上 lmstat -a 看双 UP」四环收敛,再单独处理 CB/MTCM remote host、HTTP 代理劫持与 GUI 远程会话三类 Calibre 特有形态,修完以 lmstat 应答加 calibre -drc 空跑签到为复验标准,预防上靠迁移清单、vendor 口钉死、hosts 清理、代理白名单与 lmgrd 开机自启。