欢迎光临
我们一直在努力

云服务器端口不通怎么办?Connection refused 与 timed out 排查教程

在使用云服务器搭建网站、Docker 项目、数据库或者其他网络服务时,经常会遇到这样的问题:

Connection refused

或者:

Connection timed out

看起来都是“连接不上服务器”,但实际上两者代表的问题并不完全一样。

如果能够先判断是哪一种错误,再按照正确的顺序排查,通常可以很快找到原因,而不用反复重装程序或者修改服务器配置。

一、Connection refused 是什么意思?

Connection refused 通常可以理解为:

服务器能够访问,但目标端口当前没有正常接受连接。

例如:

curl: (7) Failed to connect to 1.2.3.4 port 8080: Connection refused

常见原因包括:

  • 程序没有启动
  • 程序已经异常退出
  • 服务没有监听目标端口
  • 程序只监听了 127.0.0.1
  • Docker 没有正确映射端口
  • 防火墙主动拒绝了连接

这种情况下,一般优先检查服务器内部的程序和端口监听状态。

二、Connection timed out 是什么意思?

如果提示:

Connection timed out

通常意味着客户端发出了连接请求,但是在规定时间内没有收到有效响应。

这种情况更应该重点排查:

  • 云服务器安全组
  • Linux 系统防火墙
  • 网络路由
  • 上游网络策略
  • IP 是否能够正常访问
  • 端口是否被中间网络设备过滤

简单来说:

Connection refused
更偏向:服务器到了,但服务没有正常接收连接

Connection timed out
更偏向:请求可能根本没有成功到达目标服务

不过这只是排查方向,并不能仅凭一条错误信息百分之百确定具体原因。

三、第一步:确认程序有没有启动

如果知道对应服务名称,可以先查看运行状态。

例如 Nginx:

systemctl status nginx

Docker:

systemctl status docker

SSH:

systemctl status ssh

部分系统中 SSH 服务名称可能是:

systemctl status sshd

如果看到:

inactive
failed
dead

说明程序本身可能没有正常运行。

可以进一步查看日志:

journalctl -u nginx -n 100

nginx 换成自己的服务名称即可。

四、检查服务器到底监听了哪些端口

这是排查端口问题非常重要的一步。

执行:

ss -lntup

例如我们需要检查 8080

ss -lntup | grep 8080

如果没有任何输出,通常说明目前没有程序监听这个端口。

如果看到:

127.0.0.1:8080

说明程序只监听本机。

外部电脑访问:

服务器IP:8080

通常无法直接连接。

如果需要允许外部访问,一般应该根据程序配置监听:

0.0.0.0:8080

或者指定服务器网卡地址。

修改监听地址时,需要根据实际程序的配置文件进行调整,并不是所有软件的修改方式都一样。

五、服务器本机先测试一次

假设服务端口是:

8080

可以直接在服务器里测试:

curl -v http://127.0.0.1:8080

也可以测试:

curl -v http://服务器公网IP:8080

如果:

127.0.0.1:8080

能够正常访问,但是:

公网IP:8080

访问失败,那么问题通常应该继续从监听地址、防火墙和安全组方向检查。

如果连:

127.0.0.1:8080

都打不开,那么优先处理程序本身。

六、检查云服务器安全组

很多端口不通并不是 Linux 本身的问题,而是云平台的安全组没有放行。

例如你的程序运行在:

8080

但是安全组只允许:

22
80
443

那么公网访问 8080 就可能失败。

需要在云服务器控制台检查对应实例的入站规则。

例如:

TCP
端口:8080
来源:根据实际需求填写

不建议为了图方便直接开放:

1-65535

尤其是数据库、Redis、管理后台等服务,更不建议直接暴露到公网。

对于莱卡云服务器,同样可以根据实际部署的项目开放需要使用的端口,没有使用的端口建议保持关闭。

七、检查 Linux 防火墙

即使云平台安全组已经放行,Linux 系统自身仍然可能存在防火墙规则。

Ubuntu / Debian

可以检查:

ufw status

如果 UFW 已经开启,需要确认目标端口是否允许。

例如:

ufw allow 8080/tcp

然后:

ufw status

确认规则。

CentOS / AlmaLinux / Rocky Linux

可以查看 firewalld:

firewall-cmd --list-all

查看当前开放端口:

firewall-cmd --list-ports

需要开放 8080 时可以根据实际情况配置:

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

如果服务器使用的是 iptables,也可以检查:

iptables -L -n -v

在修改防火墙之前一定要确认 SSH 管理端口。

尤其是远程服务器,不要误删 SSH 放行规则,否则有可能导致自己无法重新连接服务器。

八、Docker 项目还要检查端口映射

Docker 用户非常容易遇到:

容器里面程序正常,但是公网打不开。

首先执行:

docker ps

重点看:

PORTS

例如:

0.0.0.0:8080->80/tcp

代表:

服务器8080端口
↓
映射
↓
容器80端口

公网访问就应该使用:

http://服务器IP:8080

如果只看到:

80/tcp

却没有类似:

0.0.0.0:8080->80/tcp

通常代表该端口没有发布到宿主机公网接口。

Docker Compose 中常见配置例如:

ports:
  - "8080:80"

修改之后需要重新创建或者启动对应容器。

同时还应该确认容器内部的软件本身是否正常运行。

可以查看:

docker logs 容器名称

九、从另一台设备测试目标端口

服务器内部正常之后,还需要从外部测试。

Linux 或 macOS 可以使用:

nc -vz 服务器IP 8080

例如:

Connection refused

说明至少已经能够与目标地址建立一定程度的通信,但目标端口没有正常接受连接。

如果长时间等待之后:

timed out

则继续重点检查安全组、防火墙以及网络路径。

也可以使用:

curl -v http://服务器IP:8080

对于 HTTP 服务来说,curl -v 往往能够提供更多连接过程信息。

十、Ping 得通,不代表端口一定能通

这是一个比较常见的误区。

执行:

ping 服务器IP

如果服务器能 Ping 通,只能说明 ICMP 通信在当前网络条件下可以正常完成。

但是:

TCP 22
TCP 80
TCP 443
TCP 8080

属于另外的网络通信。

所以:

Ping正常

并不能证明:

网站端口一定正常
SSH一定正常
Docker端口一定正常

反过来也一样。

部分服务器会限制 ICMP,因此 Ping 不通,也不能直接判断服务器已经离线。

十一、仍然超时时再检查路由

如果已经确认:

  • 服务正在运行
  • 端口正常监听
  • 安全组已经放行
  • Linux 防火墙没有拦截
  • Docker 映射正常

但从部分地区访问仍然超时,就可以进一步检查网络路径。

例如:

mtr -rwzc 20 目标IP

或者:

traceroute 目标IP

这里需要注意,中间某一跳显示丢包,并不一定代表该节点真的存在故障。

一些路由设备会降低或者限制 ICMP 响应优先级。

应该重点观察:

最终目标是否存在持续丢包、延迟是否明显异常,以及问题是否能够稳定复现。

十二、最快的排查顺序

遇到服务器端口不通时,可以直接按照下面这个顺序检查:

1. 程序是否启动
↓
2. ss 检查端口是否监听
↓
3. 检查是否只监听 127.0.0.1
↓
4. 本机 curl 测试
↓
5. 检查云服务器安全组
↓
6. 检查 UFW / firewalld / iptables
↓
7. Docker 用户检查端口映射
↓
8. 从外部使用 nc / curl 测试
↓
9. 最后再检查网络路由

按照这个顺序排查,可以避免一开始就去修改大量系统配置。

十三、常见现象快速判断

现象优先检查
Connection refused服务状态、端口监听
Connection timed out安全组、防火墙、网络
127.0.0.1 能访问,公网不能访问监听地址、安全组、防火墙
Docker 容器正常但公网打不开Docker ports 映射
服务器能 Ping,端口打不开TCP端口、安全组、防火墙
部分网络能访问,部分网络不能访问网络路由、运营商路径
重启服务后恢复程序异常、资源不足、服务崩溃

总结

云服务器端口不通时,不建议一开始就重装系统或者重新部署程序。

大多数问题都可以归结为几个方向:

程序
端口监听
安全组
系统防火墙
Docker映射
网络路径

其中 Connection refusedConnection timed out 可以帮助我们快速确定大致的排查方向。

如果使用莱卡云服务器部署网站、Docker 应用或者其他网络服务,在开放业务端口时,也建议遵循“按需开放”的原则,只开放实际需要使用的 TCP 或 UDP 端口。

既能减少后期排查难度,也可以避免因为开放过多不必要端口增加服务器的安全风险。

赞(0)
未经允许不得转载:莱卡云 » 云服务器端口不通怎么办?Connection refused 与 timed out 排查教程