云服务器端口不通怎么排查?安全组、系统防火墙、服务监听三步定位法
【摘要】 刚开始用华为云 ECS 部署网站或接口时,最常见的问题就是“服务明明起来了,外网就是访问不了”。这类问题十有八九出在三个地方:安全组、系统防火墙、服务监听地址。下面按从外到内的顺序,整理一套排查方法。 第一步:检查安全组入方向规则安全组相当于云服务器外面的一道虚拟防火墙,默认只放通少量端口(比如远程登录用的 22 或 3389)。排查要点:在控制台进入“弹性云服务器 → 目标实例 → 安全组...
刚开始用华为云 ECS 部署网站或接口时,最常见的问题就是“服务明明起来了,外网就是访问不了”。这类问题十有八九出在三个地方:安全组、系统防火墙、服务监听地址。下面按从外到内的顺序,整理一套排查方法。
第一步:检查安全组入方向规则
安全组相当于云服务器外面的一道虚拟防火墙,默认只放通少量端口(比如远程登录用的 22 或 3389)。
排查要点:
- 在控制台进入“弹性云服务器 → 目标实例 → 安全组”,确认实例绑定的是哪个安全组。
- 查看“入方向规则”,确认有一条放通目标端口的规则,例如:协议 TCP,端口 8080,源地址 0.0.0.0/0(测试用,生产环境建议收窄到指定 IP 段)。
- 注意一台实例可以绑定多个安全组,规则按优先级生效,别只看了其中一个。
常见坑:改的是另一个安全组的规则,或者端口写成了范围却漏掉了目标端口。
第二步:检查操作系统防火墙
安全组放通之后,流量还要经过系统自己的防火墙。
- CentOS / EulerOS 常用 firewalld:
- 查看状态:
systemctl status firewalld - 放通端口:
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload
- 查看状态:
- Ubuntu 常用 ufw:
- 查看状态:
ufw status - 放通端口:
ufw allow 8080/tcp
- 查看状态:
- 如果用的是 iptables,可以用
iptables -L -n查看是否有 DROP 规则。
常见坑:临时放通(没加 permanent)重启后又失效了。
第三步:检查服务监听地址
最后一步,也是最容易被忽略的一步:服务到底监听在哪个地址上。
执行 ss -lntp | grep 8080,看输出里的地址:
127.0.0.1:8080表示只监听本机回环地址,外网一定访问不到,需要把服务配置改成0.0.0.0:8080。0.0.0.0:8080或*:8080表示监听所有网卡,这才是对外提供服务需要的状态。
很多框架(例如 Flask、部分 Node.js 开发服务器)默认只监听 127.0.0.1,部署时要显式指定 host。
快速自查顺序
- 在服务器本机执行
curl 127.0.0.1:8080,确认服务本身正常; - 在服务器上执行
curl 内网IP:8080,确认监听地址正确; - 从外部执行
curl 公网IP:8080或telnet 公网IP 8080,确认安全组和系统防火墙已放通。
哪一步失败,问题就在哪一层。按这个顺序走一遍,一般几分钟就能定位端口不通的原因。
小结
端口不通不要急着重装或换镜像,按“安全组 → 系统防火墙 → 服务监听”三层逐个排查,基本都能解决。生产环境放通端口时,记得把源地址限制在必要范围内,兼顾可用性和安全性。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)