SpyGlass 连接被拒怎么办:Cannot connect to license server 排错速查
更新时间:2026-10-23。FAQ 速查页,属于 EDA 工具排错系列,总入口见 开源 EDA 报错排错中心。本篇处理的是「TCP 层根本连不上」的启动故障:起
spyglass/sg_shell时 license 握手还没开始就被拒绝,报Cannot connect to license server或系统级connection refused。它和 SpyGlass license 获取失败速查 的分工要划清:那篇是连上了但取不到席位(feature 名不对、席位满、版本不符),错误码以-5/-4/-21为主;本篇是链路层失败,客户端连 SYN 握手都过不去,错误码以-15(cannot connect)与 socket 报错为主。链路不通时先别管 license 内容,把网络修好再说。
本文要回答的问题
- 报
Cannot connect to license server/connection refused,第一反应查什么? - license 服务器到底在哪台机、哪个端口,从哪份文件里确认?
- 在家办公一连 VPN 才能用、断 VPN 就挂,是不是客户端配置问题?
ping通但端口不通,lmstat也连不上,怎么定位是服务没起还是被防火墙拦?- 公司代理会不会把 license 端口的直连也劫走?
一、报错原文与典型现象
1. 启动即死,TCP 层被拒(本篇主角):
SNPSLMD: Cannot connect to license server system.
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: SG_LINT
Server name: lic.example.com
License path: 27000@lic.example.com
FlexNet Licensing error: -15,570.
System Error: 111 "Connection refused"2. 超时型连不上(防火墙静默丢包,不是 refused):
SNPSLMD: Cannot connect to license server system.
FlexNet Licensing error: -15,570. System Error: 115 "Operation now in progress"3. GUI 客户端连不上后端(远程调用形态):
Error: Unable to establish connection to SpyGlass backend at <host>:<port>
connect() failed: Connection refused (errno 111)一句话根因:connection refused 说明 TCP 包到达了目标机但没有进程在那个端口监听;超时说明包根本到不了(防火墙丢包、路由不通、VPN 没通)。 两者处置路径不同,先看报错里 errno:111/61 是「到了没人接」,115/110 是「到不了」。
二、报错 → 原因 → 处置速查表
| 报错现象 | 最常见原因 | 一条命令确认 | 处置 |
|---|---|---|---|
| refused,变量指旧服务器 | 服务器迁移后 SNPSLMD_LICENSE_FILE 没改 | echo $SNPSLMD_LICENSE_FILE | 改为新服务器 27000@lic.example.com 后重跑 |
| refused,服务器本机 lmstat 也 refused | lmgrd / snpslmd 根本没启动 | 服务器上 lmstat -a -c 27000@localhost | 联系管理员起 SCL 守护进程 |
| 超时,VPN 一断就复现 | 在家办公,license 服务器在内网 | ping lic.example.com 看通不通 | 连上 VPN 再启动,或申请外网网关 |
| ping 通、端口不通 | 安全组/iptables 拦了 27000 口 | nc -vz lic.example.com 27000 | 管理员放行固定口与 snpslmd vendor 口 |
| 27000 通、checkout 仍超时 | 只放了固定口,vendor 口被拦 | lmstat -a 找 vendor 口再 nc 测 | license 文件写 VENDOR snpslmd port=<固定口>,两口齐放 |
| 换了新版本后全员 refused | SCL daemon 版本太旧,握手被拒 | lmstat -a 看 daemon 版本行 | 管理员升级 SCL 到客户端要求的下限 |
| 终端 refused、别人机器正常 | 本机代理把直连劫走 | env | grep -i proxy | license 主机加进 no_proxy,不走 HTTP 代理 |
| GUI refused、命令行正常 | GUI 后端端口被占用或未监听 | ss -lnt | grep <port> | 换端口或杀掉残留后端进程 |
三、排查决策树
按「变量 → 主机可达 → 端口在听 → 服务在跑」四环收敛,先修链路再谈 license。
读这张图抓住一条主线:红色是报错现象,四个蓝色判定对应「去哪找、路通不通、口开没开、服务活没活」,橙色是统一修复动作,绿色是复验。任何一环命中就在那层修,修完回到绿色节点复验,不要同时改多处——同时改变量和防火墙,修好了也不知道是哪一步起的作用。
四、逐条排查展开
第一步:确认客户端「去哪找」。 服务器地址写在两个地方:license 文件的 SERVER 行(服务端视角)和客户端环境变量(实际生效的)。服务器迁移后最常见的事故是变量还指旧机器:
env | grep -iE "SNPSLMD|LM_LICENSE"
# SNPSLMD_LICENSE_FILE=27000@lic.example.com ← 与管理员通知逐字符对
cat /path/to/license.dat | grep SERVER
# SERVER lic.example.com <hostid> 27000 ← 服务端真实地址与端口SNPSLMD_LICENSE_FILE 优先于 LM_LICENSE_FILE,两个都设了改一个等于没改。非交互 shell(LSF 作业、cron)不加载 .bashrc,作业里要 env | grep -i LICENSE 确认。
第二步:测主机可达性。 ping lic.example.com 不通,先想 VPN:license 服务器几乎都在公司内网,在家办公断 VPN 后表现就是「昨天还能用今天全 refused」。连上 VPN 再测;VPN 正常但 ping 不通,可能是 ICMP 被拦(不致命,跳过直接测端口)或 DNS 解析到了错的地址——nslookup lic.example.com 核对解析结果。
第三步:测端口,别只测固定口。 FlexNet 用两个端口:SERVER 行固定口(常见 27000)和 snpslmd 的 vendor 口(默认随机):
nc -vz lic.example.com 27000
# 通了再查 vendor 口:
lmstat -a -c 27000@lic.example.com | grep -i "port"
nc -vz lic.example.com <vendor口>固定口 refused 而服务器确认 SCL 在跑,就是防火墙/安全组拦了——把报错截图、源地址、目标端口一起给管理员申请放行。固定口通、vendor 口不通的迷惑现象是 lmstat 偶尔应答、真 checkout 超时,根治是让管理员写 VENDOR snpslmd port=<固定口> 钉死两口齐放。
第四步:到服务器上确认服务在跑。 链路全通仍 refused,只剩一种可能:端口上没有进程在听。请管理员在服务器执行:
lmstat -a -c 27000@localhost
# 健康输出关键两行:
# lic.example.com: license server UP (MASTER) v11.16
# snpslmd: UP v11.16本机 lmstat 都 refused,就是 lmgrd 没起(重启后没拉起来、开机脚本失效);lmgrd UP 而 snpslmd DOWN,是 vendor daemon 崩了,查 SCL 日志。daemon 版本旧于客户端要求时下限握手也会被拒,升级 SpyGlass 大版本前让管理员确认 SCL 版本到位。
第五步:排除本机代理劫持。 公司配的 HTTP 代理(http_proxy/https_proxy)有时会接管所有 TCP 连接,license 端口的 FlexNet 协议包被代理转发后自然握手失败。现象是「我的机器 refused、邻座正常」:
env | grep -i proxy
export no_proxy="lic.example.com,.internal.example.com,${no_proxy}"
unset http_proxy https_proxy # 临时验证用,确认后改 no_proxy第六步:GUI 连后端的场景。 sg_shell 正常但 GUI 报 refused,是 GUI 后端端口问题:后端进程没起来、端口被上一次异常退出的残留进程占着(ss -lnt | grep <port> 看谁在听),或远程 X/SSH 端口转发没配上。杀掉残留后端重启,或让 GUI 换端口重连。
还有一种容易误判的形态值得单独说:报错时好时坏、重启终端又能连上几分钟。这多半是 DHCP 换了本机地址后撞上防火墙按源地址放行的旧规则,或 VPN 会话保活失败悄悄掉线——前者找管理员更新放行列表,后者把 VPN 客户端的自动重连打开,不要在 SpyGlass 侧反复重装。
复验标准:lmstat -a 正常应答 + sg_shell 空跑签到通过,两级都绿才算闭环。链路修好后若转为 Unable to checkout 类报错,说明本篇的活干完了,接力棒交给 SpyGlass license 获取失败速查。
五、预防与纪律
- 服务器迁移走清单:license 服务器换机/换端口时,管理员发通知必须含新
SERVER行全文,客户端统一改工程环境脚本里的SNPSLMD_LICENSE_FILE,不靠口口相传。 - vendor 端口一次钉死:新装或迁移时直接写
VENDOR snpslmd port=<固定口>,防火墙申请单一次列两个端口,避免「放了一个口还超时」的二次返工。 - VPN 与作业解耦:回归服务器常驻内网不依赖个人 VPN;在家办公的交互使用写进团队 FAQ,第一句就是「先确认 VPN」。
- 代理白名单前置: license 服务器域名进全组统一的
no_proxy配置,装机脚本里写死。 - SCL 开机自启:服务器侧把 lmgrd 加进 systemd / 开机脚本并配存活监控,daemon 挂了先于用户报障发现。
- 先存档再动手:第一次失败的完整报错(含 errno 与端口)截图存档,改一处重跑一次,拒绝「变量、VPN、防火墙一起改」。
这一篇在知识体系里的位置
本篇是 EDA 排错速查簇的一员,总入口见 开源 EDA 报错排错中心。链路修好后的取席位问题接力给 SpyGlass license 获取失败速查,PrimeTime 侧同款签到问题对照 PrimeTime license 获取失败速查;连上了但跑 goal 卡死是另一类故障,见 SpyGlass 运行卡死/超时排查。
一句话总结
SpyGlass 连接被拒是 TCP 链路层故障,与席位无关:errno 111/61 的 refused 是「到了没人接」(SCL 没起、变量指旧服务器、端口没监听),errno 115/110 的超时是「到不了」(VPN 断、防火墙丢包);按「echo 变量对 SERVER 行 → ping 主机看 VPN → nc 测固定口与 vendor 口 → 服务器上 lmstat -a 看 lmgrd/snpslmd 双 UP」四环收敛,再排除 HTTP 代理劫持与 GUI 后端端口残留,修完以 lmstat 应答加 sg_shell 空跑签到为复验标准,预防上靠迁移清单、vendor 口钉死、代理白名单与 SCL 开机自启。