Linux连接被拒绝怎么解决_端口监听问题排查【指导】

2次阅读

“Connection refused”表示目标服务明确拒绝连接,主因是服务未监听该 端口 或仅绑定 127.0.0.1。需用 ss/netstat/lsof 查监听地址,修改配置将 bind 地址改为 0.0.0.0,重启服务,并检查 防火墙 与云安全组是否放行端口。

Linux 连接被拒绝怎么解决_端口监听问题排查【指导】

“Connection refused”不是网络不通,而是目标地址确实在响应——但明确拒绝了你的连接请求。核心原因通常只有两个:服务根本没在监听该 端口,或监听了却只绑定了本地地址(如 127.0.0.1),不接受远程访问。

确认服务是否真正在监听目标端口

先登录服务器,用以下命令检查端口实际监听状态:

  • ss -tuln | grep : 端口号(推荐,速度快、信息全)
  • netstat -tuln | grep : 端口号(传统方式,部分系统需安装 net-tools)
  • lsof -i : 端口号(可直接看到占用进程名和 PID)

重点看输出中的 Local Address 列。如果显示的是 127.0.0.1: 端口::1: 端口,说明服务只接受本机访问;若显示 0.0.0.0: 端口[::]: 端口,才表示对所有地址开放。

检查服务配置是否绑定到正确地址

很多服务(如 java 应用、nginxhadoop、自定义后台程序)默认监听 127.0.0.1。需手动修改其 配置文件

  • Java 类应用:检查启动参数或 配置文件 hostbindaddress 等字段,把 localhost127.0.0.1 改为 0.0.0.0 或具体内网 IP(如 192.168.8.119
  • Hadoop:修改 core-site.xmlfs.defaultFS 的 host 部分,并确保 /etc/hosts 中该主机名映射到真实 IP
  • Nginx/apache:检查 listen 指令,例如改为 listen 80;(等价于 0.0.0.0:80)而非 listen 127.0.0.1:80;

改完务必重启服务,再用 ss 命令验证监听地址是否已更新。

验证 防火墙 与安全组是否放行

即使服务监听了 0.0.0.0,外部仍可能被拦截:

  • 本地防火墙:运行 firewall-cmd --list-ports(firewalld)或 ufw statusubuntu),确认目标端口已开放
  • 云服务 器必须同步检查安全组:阿里云 腾讯 云、AWS 等控制台中,入方向规则需显式允许该端口 + 源 IP 段(如 0.0.0.0/0
  • 临时测试可关闭防火墙:systemctl stop firewalldcentos)或 ufw disable(Ubuntu),验证后再恢复策略

用 telnet 或 nc 远程验证连通性

从客户端机器执行,不要在服务器本机测:

  • telnet IP 端口:返回 Connected to IP. 表示通;Connection refused 表示服务未监听或绑错地址;Connection timed out 才是防火墙 / 网络拦截
  • nc -zv IP 端口:输出 succeeded! 即通,更简洁可靠

注意:telnet 在部分系统需手动安装(如 yum install telnetapt install telnet);nc(netcat)基本预装。

站长
版权声明:本站原创文章,由 站长 2025-12-22发表,共计1260字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources