注册

Linux报 “connection refused by peer” 异常的原因以及解决办法

connection refused by peer(连接被对端拒绝)通常是在客户端连接服务端时出现的错误。这个错误一般有以下可能的原因:

  1. 服务端程序没有启动或没有在正确的端口上监听连接。比如,运行在 8080 端口的 web 服务器没有被正确地启动或停止了。

  2. 防火墙或安全策略拦截了连接请求。如果有一个防火墙或其他安全策略在服务端和客户端之间,可能会拦截来自客户端的连接请求。这种情况下,可以考虑更改防火墙或安全策略的配置或查看是否需要添加服务端程序到白名单中。

以下是一些解决 connection refused by peer 错误的方案:

  1. 确认服务端程序是否启动且在正确的端口上监听连接。可以尝试重启服务端程序或更改其端口号以消除问题。具体可以使用 netstat 命令查看服务端进程是否监听了正确的端口:
netstat -tunlp | grep <端口号>

这里 -t 是指只列出 TCP 连接, -u 是指只列出 UDP 连接,-n 是指不解析 IP 地址和端口号,-l 是指只列出在监听状态的连接的地址和端口号,-p 是指显示进程名。

  1. 检查防火墙和安全策略是否允许连接。如果服务端程序在运行时被防火墙或其他安全策略拦截了,需要查找这些安全策略并将服务端程序加入到白名单中。以下是一些示例命令:

  2. 查看 iptables 防火墙规则:

iptables -L -n
  • 添加 iptables 规则允许所有对端连接到服务端:
iptables -A INPUT -p tcp --dport <端口号> -j ACCEPT
  • 查看 SELinux 安全策略:
sestatus
  • 允许 SELinux 允许服务端程序通过:
setsebool -P httpd_can_network_connect 1

以上是一些可能导致 connection refused by peer 错误的原因以及解决方案。如果以上方法验证后依然无法解决问题,可以通过其他方式定位问题并解决。