我最近在河南一家知名IDC公司郑州易方科贸(861.cn)托管的一台服务器中发现本地访问正常、服务器本地能通,外网一访问就超时;telnet 端口要么超时、要么拒绝连接,反复重启服务毫无效果。

绝大多数端口不通问题,根本不是程序Bug,而是监听配置、安全组、防火墙、路由转发这四层拦截导致的。

今天给大家一套从内到外、100%落地的端口不通排查流程,新手也能5分钟定位根因。

一、先分清两种端口报错(90%人都分不清)

telnet 连接端口只会出现两种结果,对应完全不同的故障原因,先判断再排查,少走一半弯路:

1. Connection refused(连接被拒绝)

核心原因:端口没监听 / 服务没真正启动

网络链路是通的,没有任何拦截,但是服务器当前端口没有程序在监听,系统直接拒绝连接。基本和安全组、防火墙无关。

2. Connection timed out(连接超时)

核心原因:被拦截、路由不通、端口未放行

请求根本没到达服务,被安全组、云防火墙、系统防火墙、路由策略拦截丢弃,数据包有去无回,最终超时。这是运维最常遇到的场景。

二、第一步:服务器自检(先排除程序本身问题)

外网连不上,优先服务器本地自测,先确认服务本身没问题,再查网络拦截。

1. 查看端口是否正常监听

很多时候服务看似启动成功,实际只监听了本地回环地址,外网无法访问。


# 查看所有监听端口 ss -ntpl # 或 netstat -ntpl

关键判断标准:

  • 127.0.0.1:端口:仅本机可访问,外网/内网全部无法连接(最常见坑)

  • 0.0.0.0:端口:监听所有网卡,全网可正常访问

  • 无对应端口:服务未启动、启动失败、配置错误

解决:修改服务监听配置,将 127.0.0.1 改为 0.0.0.0,重启服务。

2. 服务器本地telnet自测


telnet 127.0.0.1 端口 telnet 本机内网IP 端口

  • 本地不通:服务配置、启动、端口冲突问题

  • 本地通、外网不通:100%是网络拦截(安全组/防火墙/路由)

3. 检查端口是否被占用

端口被其他进程占用,导致当前服务启动异常、监听失败。


lsof -i:端口号

三、第二步:系统防火墙排查(Linux本机拦截)

服务监听正常,依然连不上,优先排查服务器本机防火墙,这是端口拦截重灾区。

1. Firewalld 排查(CentOS7+ 默认)


# 查看防火墙状态 systemctl status firewalld # 查看已放行端口 firewall-cmd --list-ports # 临时放行端口(测试用) firewall-cmd --add-port=端口/tcp --permanent firewall-cmd --reload

快速测试:临时关闭防火墙,再次尝试连接,能通就是防火墙拦截。


systemctl stop firewalld

2. Iptables 排查


# 查看所有规则 iptables -L -n

查看是否存在对应端口的 DROP 拒绝规则,清理错误规则即可恢复。

四、第三步:云服务器核心坑——安全组排查

90%的云服务器端口不通,都是安全组导致的。云服务器拥有双重防护:系统防火墙 + 云端安全组,任意一个未放行,端口都会不通。

阿里云、腾讯云、华为云通用规则:

  • 安全组默认只放行22、ICMP,所有自定义端口默认封禁

  • 安全组规则入方向控制外网访问服务器端口

  • 协议必须选 TCP,端口范围填写准确(如 8080/8080)

  • 授权对象建议填 0.0.0.0/0(全网开放,业务端口通用)

⚠️ 重点避坑:只开防火墙、没开安全组,端口依然绝对不通,云服务器安全组优先级高于系统防火墙。

五、第四步:路由与内网互通排查

本机通、同网段内网不通、公网不通,大概率是路由转发、网段隔离问题。

1. 跨网段访问不通

服务器配置了多网卡、多网段,未配置默认路由,导致跨网段请求无法回包。


# 查看路由表 ip route

确保存在默认路由 default via 网关IP,无默认路由会导致外网请求进来、响应出不去,表现为端口超时。

2. 内网ACL/交换机策略拦截

物理机/机房服务器,需要排查:

  • 机房交换机端口 ACL 访问控制策略

  • 内网防火墙、上网行为管理拦截

  • VLAN 网段隔离,跨VLAN端口默认不通

3. 公网IP映射问题(内网服务器)

内网服务器做端口映射、NAT转发场景:

  • 路由器/防火墙未配置端口映射

  • 映射内网IP或端口填写错误

  • NAT会话过期导致间歇性不通

六、小众但致命的隐性问题

1. 服务器 hosts 绑定异常

本地解析被篡改,导致访问IP异常,看似端口不通。


cat /etc/hosts

2. 端口被云厂商封禁

云平台会默认封禁高危端口:25、135、139、445、3389 等,私自开启也无法外网访问,属于厂商全局拦截。

3. 服务绑定公网IP错误

服务强制绑定某个固定公网IP,服务器IP变更后,端口直接监听失败,外网无法连接。

七、万能排查流程(直接照着走,百试百灵)

步骤1:看报错

  • 拒绝连接:查端口监听、服务启动、监听地址

  • 连接超时:查安全组、防火墙、路由拦截

步骤2:本机ss/netstat检查端口是否监听0.0.0.0

步骤3:服务器本地telnet自测

步骤4:关闭系统防火墙测试连通性

步骤5:云服务器重点核对安全组入站规则

步骤6:检查路由表、NAT映射、网段隔离

八、快速避坑总结

  • 端口 127.0.0.1监听 = 外网永远连不上

  • 云服务器 只关防火墙没用,必须放行安全组

  • Connection refused 是程序问题,timeout 是网络拦截问题

  • 公网端口不通,优先排查安全组,再查防火墙

  • 跨网段不通,优先查路由表和VLAN隔离策略

写在最后

端口不通、telnet连不上,从来不是玄学,而是从程序监听、系统防火墙、云端安全组、路由转发四层的标准化问题。只要按照这套顺序排查,无需盲目重启、瞎改配置,几分钟就能定位问题根源。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐