Linux 云服务器端口无法访问?5 个步骤快速排查
Linux 云服务器端口无法访问?5 个步骤快速排查
前言
在 Linux 云服务器上部署网站或应用后,有时会遇到服务明明已经启动,但通过公网 IP 和端口却无法访问的问题。
这种情况不一定是程序故障,还可能与监听地址、系统防火墙、云服务器安全组或 Docker 端口映射有关。
本文以 Ubuntu、Debian 等常见 Linux 系统为例,整理一套简单的排查流程。
一、检查端口监听状态
假设应用使用的是 8080 端口,首先执行:
sudo ss -lntp | grep ':8080'
ss 可以查看 TCP 端口的监听情况。
需要重点关注监听地址:
127.0.0.1:8080:仅监听本机 IPv4 回环地址,不能直接通过服务器公网 IP 访问。0.0.0.0:8080:监听所有本机 IPv4 地址。- 没有结果:可能是服务未启动、使用了其他端口,或者没有监听 TCP。
如果没有监听,需要先检查应用程序本身,而不是急着修改防火墙。
二、测试服务器本地访问
对于 HTTP 服务,可以执行:
curl --noproxy '*' -v --connect-timeout 3 http://127.0.0.1:8080/
如果可以获得 HTTP 响应,说明本地连接基本正常。
即使返回 HTTP 404,也不一定表示网络故障,因为 404 可能只是请求路径不存在。
如果提示 Connection refused,通常表示目标地址和端口没有接受连接,需要检查监听状态。
如果是 SSH、数据库等非 HTTP 服务,则应使用对应协议的客户端测试。
三、检查系统防火墙
对于使用 UFW 的 Ubuntu 系统,可以执行:
sudo ufw status verbose
如果显示 Status: active,需要检查是否存在允许 8080/TCP 的规则。
如果 UFW 未启用,并不代表服务器一定没有防火墙规则,因为系统还可能使用 nftables、iptables 等机制。
可以进一步查看:
sudo nft list ruleset
不要直接关闭整个防火墙来解决端口问题,应该根据实际需求添加必要的放通规则。
四、检查云服务器安全组
如果本地访问正常,但公网无法连接,就需要检查云平台的网络访问控制。
以华为云弹性云服务器 ECS 为例,可以进入对应实例绑定的安全组,检查入方向规则。
重点确认:
- 协议是否选择 TCP。
- 目标端口是否包含 8080。
- 来源 IP 范围是否包含实际访问者的 IP。
- 是否存在其他网络 ACL 或网络配置限制。
对于管理端口,建议只允许可信来源 IP,不要为了测试而长期向所有公网地址开放。
同时需要确认服务器具有正确的公网访问路径,例如已绑定弹性公网 IP。
五、检查 Docker 端口映射
如果应用运行在 Docker 容器中,还需要检查容器端口是否发布到宿主机。
执行:
docker ps
查看 PORTS 列。
例如:
0.0.0.0:8080->80/tcp
表示宿主机的 8080 端口被映射到容器内部的 80 端口。
如果只看到:
80/tcp
则不能仅凭这一信息认定宿主机的 8080 端口已经发布。
此外,如果映射地址为 127.0.0.1:8080,一般只能从宿主机本地访问该发布端口。
六、从客户端验证连接
完成上述检查后,可以从另一台 Windows 电脑使用 PowerShell 测试:
Test-NetConnection -ComputerName 服务器公网IP -Port 8080
实际执行时,将 服务器公网IP 替换成真实地址。
重点查看:
TcpTestSucceeded : True
如果结果为 True,说明这次 TCP 连接成功,但不代表上层 HTTP 应用一定正常。
如果为 False,则需要结合前面的监听、系统防火墙和云平台网络配置继续定位。
总结
排查 Linux 云服务器端口无法访问的问题,建议按照以下顺序进行:
- 使用
ss检查服务是否监听端口。 - 使用
curl测试本地 HTTP 服务。 - 检查系统防火墙规则。
- 检查云服务器安全组及公网网络配置。
- 如果使用 Docker,检查端口映射。
排查时尽量按照由内到外的顺序进行,先确认程序本身正常,再检查网络访问控制。
这样通常比反复重启服务或直接关闭防火墙更容易定位问题,也更加安全。
- 点赞
- 收藏
- 关注作者
评论(0)