翻墙侠 - 自由上网的好帮手

connection refused 怎么办?按端口、监听和代理逐层排查连接失败

更新于 2026-10-26 · fanqiangxia.top

简答:connection refused 表示目标地址上的 TCP 端口主动拒绝连接,优先核对域名、IP、端口和代理,再检查服务是否监听、防火墙及容器映射。排查后可判断是本机代理、远程服务还是网络策略导致。

定义:connection refused 是 TCP 连接阶段收到拒绝结果,通常表示目标主机可达但指定端口没有可接受连接,或中间设备主动返回拒绝。

先试这一步:确认到底是哪个地址和端口被拒绝

connection refused 不等于“网站一定宕机”。先从完整报错中记录四项:目标域名或 IP、端口号、协议,以及错误出现的位置。浏览器常见的是 HTTP/HTTPS 端口;SSH 通常是 22;API 和数据库则可能使用自定义端口。若错误来自代理客户端,还要区分“本机代理端口被拒绝”和“代理连接的远程地址被拒绝”。

常见错误与优先排查方向
提示通常说明先检查什么
connection refusedTCP 连接被主动拒绝端口号、服务监听、代理端口、防火墙策略
timeout在等待连接响应路由、安全组、网络 ACL、丢包和地址是否正确
connection reset连接建立后被一方重置服务日志、协议兼容性、反向代理和中间设备
DNS 解析失败域名没有解析到可用地址DNS、hosts、AAAA/A 记录和本地解析设置

在 Windows 的 PowerShell 中,可用官方文档中的 Test-NetConnection 直接测试指定 TCP 端口:

Test-NetConnection 目标域名 -Port 端口号 -InformationLevel Detailed

重点看 TcpTestSucceeded。它只能说明从当前设备到该目标端口的 TCP 测试结果,不能证明网页业务、账号认证或 API 路径一定正常。

普通用户没有服务器权限:先排除本机代理和网络环境

如果你只是访问网页、调用接口或使用客户端,没有服务器管理权限,不要直接修改远程防火墙。按以下顺序操作:

  1. 检查地址和协议。确认是否把 HTTPS、SSH、数据库等协议写到了错误端口;不要只复制报错中的域名而忽略端口号。
  2. 暂时关闭本机代理或切换直连测试。如果关闭代理后恢复,问题更可能位于本机代理端口、代理协议、规则或远程代理入口,而不是目标网站本身。关闭系统代理和在客户端中选择直连不是同一件事,应分别记录测试结果。
  3. 核对客户端本地监听端口。代理客户端必须先在本机监听一个端口,浏览器或其他应用才能连接它。如果浏览器设置的端口号与客户端实际端口不同,就可能出现本机 127.0.0.1:端口号 被拒绝。
  4. 换一个网络或设备复测。若只有当前网络失败,优先检查网络策略、DNS、IPv4/IPv6 或出口限制;若所有设备都失败,联系网站管理员、接口提供方或网络服务商。

用 curl 测试 HTTP 服务时,使用 GET 请求并带上常见 User-Agent,避免命令行默认 User-Agent 与浏览器差异造成误判。curl 官方错误码文档将无法连接主机或代理归入连接失败类,具体可参考 libcurl 错误码说明。

curl -v -A "Mozilla/5.0" --connect-timeout 8 http://目标域名:端口号/

如果 curl 能建立 TCP 连接但返回 401、403、404 或 5xx,这已经不是 connection refused,而是进入了 HTTP 应用层,应转向检查路径、认证、反向代理或应用日志。

有服务器权限:检查服务、监听地址和日志

服务器端最常见的原因是服务没有启动、启动后崩溃、监听了错误端口,或只绑定在本机回环地址。先查服务状态,再查监听结果,不要一开始就关闭防火墙。

Linux:确认服务状态与端口监听

如果服务由 systemd 管理,可执行:

sudo systemctl status 服务名 --no-pager

systemd 官方说明中,systemctl status 会显示运行状态及最近的日志摘要;继续查看该服务的详细日志:

sudo journalctl -u 服务名 --since "30 minutes ago" --no-pager

systemctl 官方说明和 journalctl 官方说明分别说明了服务状态和 systemd 日志查询方式。

再用 ss 查看 TCP 监听:

sudo ss -lntp

关注三点:端口号是否正确、进程是否存在、监听地址是 127.0.0.1、具体网卡地址还是 0.0.0.0。只监听 127.0.0.1 时,本机可能访问正常,但远程设备无法访问;ss 手册说明该命令可用于查看套接字和监听状态。

Windows:确认本机是否有进程监听

在 PowerShell 中执行:

Get-NetTCPConnection -State Listen | Sort-Object LocalPort

也可以使用:

netstat -ano | findstr LISTENING

如果目标端口没有监听,先回到应用配置和服务日志;如果有监听但远程仍被拒绝,再检查 Windows 防火墙、云安全组或上游网络策略。

监听正常仍连接失败:核对防火墙、云端规则和容器端口

端口监听只是服务器内部条件,外部连接还可能被系统防火墙、云安全组、网络 ACL、反向代理或容器网络拦截。排查时应只放行确实需要的来源和端口,不要把管理端口无条件开放到 0.0.0.0/0。

  • 云主机:核对安全组入方向规则、协议类型和端口号,确认规则作用于实际网卡。
  • 系统防火墙:查看是否存在拒绝该端口的规则,优先新增精确规则,不要直接停用整个防火墙。
  • 反向代理:检查 Nginx 或其他代理的上游地址和端口。Nginx 的 proxy_pass 文档说明,上游可以使用域名、IP 地址和端口;写错端口或上游只监听本机其他地址,就可能出现代理到上游失败。
  • 容器:确认宿主机端口是否发布到容器端口。Docker 官方文档说明,-p 8080:80 表示宿主机 8080 转发到容器 80,两个端口不是同一个概念;可执行 docker ps 查看实际映射。

例如,先在服务器本机测试应用端口:

curl -v -A "Mozilla/5.0" --connect-timeout 8 http://127.0.0.1:端口号/

再从另一台设备测试同一端口。如果本机成功、远程失败,重点检查监听地址、防火墙、安全组和容器发布;如果本机也失败,重点检查服务进程、应用配置和日志。

为什么 ping 能通,网页或 SSH 仍然 connection refused?

ping 使用 ICMP,网页、SSH 和 API 使用 TCP,协议和端口不同。因此 ping 能通只说明 ICMP 层面可能有响应,不能证明目标 TCP 端口正在监听。相反,某些主机会禁用 ICMP,但 TCP 服务仍然可用。

判断连接是否真正建立,应使用带端口的测试:Windows 使用 Test-NetConnection 目标域名 -Port 端口号;Linux 或 macOS 可使用:

nc -vz 目标域名 端口号

如果 TCP 测试成功但浏览器仍报错,问题通常已经进入 TLS、HTTP、认证、路径、代理规则或应用协议层,不应继续重复检查 ping。

最后核对:按结果决定下一步联系谁

  • 只有一台设备失败:检查本机代理、DNS、IPv4/IPv6、浏览器设置和安全软件。
  • 同一网络多台设备失败:检查路由器、网络出口、DNS、ACL 或网络服务商策略。
  • 所有外部设备都失败,但服务器本机正常:检查监听地址、防火墙、安全组、反向代理和容器端口映射。
  • 服务器本机也失败:检查服务状态、应用配置、端口冲突和日志。
  • TCP 已连通但业务失败:检查 TLS、HTTP 状态码、认证、请求路径和应用日志。

向管理员反馈时,提供准确的目标域名或 IP、端口号、协议、发生时间、测试命令及结果即可;不要发送 Cookie、密码、访问令牌或完整认证头。本文为翻墙侠的第三方使用指南,文中关于边界云加速的服务信息以其官方网站为准。

常见问题

connection refused 是不是服务器宕机?

不一定。它通常表示目标地址可到达,但指定 TCP 端口没有接受连接,可能是服务未启动、端口写错、只监听 127.0.0.1,或防火墙和安全组主动拒绝。

浏览器显示 connection refused,普通用户没有服务器权限怎么办?

先确认域名、协议和端口,暂时关闭本机代理或切换直连,再换网络复测。如果其他设备也失败,应把完整报错、目标地址、端口和发生时间提供给网站管理员或服务提供方。

为什么 127.0.0.1 connection refused 特别常见?

127.0.0.1 表示当前设备本机。出现该提示通常意味着本机没有程序监听对应端口,或者应用实际监听的是另一个端口;如果使用代理客户端,还要核对浏览器端口与客户端本地端口是否一致。

端口监听正常,为什么外网还是连接失败?

还需要检查监听地址是否只绑定在 127.0.0.1、系统防火墙、云安全组、网络 ACL、反向代理上游和容器端口发布。服务器本机成功而远程失败时,应优先查这些入口层。

可以直接关闭防火墙测试吗?

不建议。应先查看拒绝规则并只放行必要端口和来源;管理端口尤其不要无条件开放到 0.0.0.0/0。测试结束后也要恢复临时规则。

相关阅读

参考资料

  1. Microsoft Learn:Test-NetConnection
  2. curl:libcurl 错误码(curl.se)
  3. freedesktop.org:systemctl(freedesktop.org)
  4. freedesktop.org:journalctl(freedesktop.org)
  5. Linux man-pages:ss(man7.org)
  6. NGINX:proxy_pass 与反向代理模块(nginx.org)
  7. Docker Docs:端口发布与映射