“Connection refused”表明目标主机IP可达但8080端口无监听进程,需同步验证服务监听状态(用ss -tlnp查是否0.0.0.0:8080)和防火墙策略(iptables/firewalld/云安全组),并确认服务实际运行、绑定地址正确且端口未被占用。

当你在Linux上执行telnet 192.168.1.100 8080或curl http://192.168.1.100:8080时收到“Connection refused”,说明客户端已抵达目标主机IP,但该主机的8080端口没有进程在监听——这不是网络不通,而是服务侧缺失或策略侧拦截,必须分两路同步验证才能准确定位。
确认目标端口是否真有进程监听
登录目标服务器,运行ss -tlnp | grep ':8080'。若无任何输出,说明根本无人监听;若有输出,注意看Local Address列:若显示127.0.0.1:8080,则仅本机可连,外部请求必拒;若显示*:8080或0.0.0.0:8080,才表示对外暴露。
这一步不能用netstat替代,因为现代系统中netstat已被标记为废弃,且不加-p参数时无法显示进程名,容易误判。
【必须用root权限执行,否则看不到其他用户进程的监听信息】
检查防火墙是否放行该端口
方法一:查iptables规则
运行sudo iptables -L INPUT -n | grep 8080,若出现REJECT或DROP行为,即为拦截源;若完全无匹配,则iptables未干预此端口。
方法二:查firewalld状态
先确认服务是否启用:sudo firewall-cmd --state;再查端口是否开放:sudo firewall-cmd --list-ports | grep 8080。若未列出,运行sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload补上。
注意:云服务器(如阿里云、腾讯云)还须检查控制台中的安全组规则,防火墙命令全通也不代表外网能访问。
交叉验证服务实际运行状态
第一步:确认服务单元是否激活systemctl is-active nginx(以nginx为例),返回active才表示服务正在运行;若为inactive或failed,直接跳至第三步重启。
第二步:确认服务配置绑定地址是否合理
查看Nginx配置:grep "listen" /etc/nginx/sites-enabled/default。若只写listen 127.0.0.1:8080,必须改为listen 0.0.0.0:8080或删掉IP段仅留listen 8080,否则无法响应外部请求。
第三步:强制重启并观察日志sudo systemctl restart nginx && sudo journalctl -u nginx -n 20 --no-pager。若日志末尾出现bind() to 0.0.0.0:8080 failed (98: Address already in use),说明端口被占,需用lsof -i :8080杀掉旧进程。











