Watch at Ease看见世界,读懂生活。

故障排查 · 实用指南

curl 错误 7“连接失败”?改防火墙前先证明目标、路径与监听器

错误 7 只说明连接步骤失败,不等于防火墙必然阻断。先固定实际连接跳点、运行环境与套接字结果。

原创边界图:区分失败环境、首跳、网络路径与监听器。
原创示意图:改网络控制前先定位真正失败的连接跳点。 Watch at Ease

curl 错误 7 表示 libcurl 无法连接主机或代理;它不能单独证明防火墙阻断,也不能说明 curl 连接的是目标、代理、哪种地址族或正确监听端口。

固定原始请求和详细连接行,在失败环境中复现,区分拒绝、超时与无路由,再只修改已证实的责任边界。

固定实际连接跳点

重试前复制完整参数、URL、工作目录、运行身份、错误和 curl -v 连接行,记录协议、主机、端口、解析地址及是否选择代理。

第一次对照不要缩写或重输命令;URL、代理变量或默认端口变化都会变成另一条连接。

在失败运行环境内复现

从原容器、服务账号、任务执行器或应用主机运行同一受限测试。宿主交互 Shell 成功只能作为对照,不能证明服务命名空间和路由正常。

记录代理环境、curl 配置、地址族与网络命名空间。Docker 案例显示不同运行条件会让同一主机名指向不同回环或桥接地址。

区分拒绝、超时与无路由

保留具体连接结果:ECONNREFUSED 表示所选端点拒绝,ETIMEDOUT 表示未及时建立连接,ENETUNREACH 表示运行环境没有到该网络的路由。

在同一环境测试目标和一个已知正常端点。不要用单一端口推断全局防火墙,也不要把超时当作没有监听器的证明。

核对目标与监听器

在你控制的基础设施上核实服务状态、端口以及绑定的接口与地址族,并把公布端点与实际监听器对照。

若主机名返回多个地址,保留 curl 尝试顺序。IPv4 成功不会抹去 IPv6 监听失败,它只定位了地址族分支。

单独处理代理首跳

若 curl 选择代理,第一条 TCP 连接是代理主机和端口。先在同一环境验证该跳点,代理连接成功后再讨论目标可达性。

不要为诊断删除全局代理。记录适用的代理/no_proxy变量、配置文件与源 IP 策略,只做一项可逆变更。

用原请求完成退出测试

以相同 URL、代理选择和运行环境重复原命令,记录实际对端、协议响应、连接耗时与最终退出码。

责任仍不清楚、变更会扩大暴露面或端点属于其他团队时应停止,并交接地址、端口、环境、结果和时间。

原创决策图:区分连接拒绝、超时与无路由。
原创示意图:先分类连接结果,再选择修复责任方。 Watch at Ease