题 导致“连接被拒绝”消息的原因是什么?


这是一个 典型问题 关于 拒绝连接 

我们看到了很多问题

当我尝试连接到系统时,我收到一条消息

拒绝连接

为什么是这样 ?


75
2017-09-28 12:13




我们在Apache Hadoop中得到了很多,它通常是由客户端中的配置错误引起的:与哪个主机通信,DNS或/ etc / host表的设置是什么,或者是否使用了端口之间的不匹配服务和客户认为它应该使用。因此,我们有 一个专门的维基入口 关于这个话题。许多问题可能在其他地方,虽然(希望)在较小的范围内。调试1000节点集群中的连接问题并不好玩。 - Steve Loughran
您的专用维基入口链接指向此问题;) - Iain
接得好。这是官方链接: wiki.apache.org/hadoop/ConnectionRefused。我将从那里添加一个交叉引用到这里,以获得完整的循环。 - Steve Loughran
@SteveLoughran酷文章 - 一条评论 - 回链接说Stack Overflow,我们是服务器故障;) - Iain
完成。 FWIW,该wiki链接被添加到Hadoop堆栈中传递的ConnectionRefused异常,以及解决出错的所需的额外信息(主机,端口)。我们仍然会从看到堆栈跟踪的人那里获得大量的错误报告,而不是按照指向wiki的链接 - Steve Loughran


答案:


注意:此消息是您尝试解决的问题的症状。了解消息的原因最终将导致您解决问题。

“拒绝连接”消息有两个主要原因:

  1. 没有什么东西在监听IP:您尝试连接的端口。
  2. 该端口被防火墙阻止。

没有进程在听。

这是该消息最常见的原因。首先确保您尝试连接到正确的系统。如果您要确定这是否是问题,请在远程系统上运行 netstat的 要么 SS1 例如如果您希望进程正在侦听端口22222

sudo netstat -tnlp | grep :22222

要么

ss -tnlp | grep :22222

对于OSX,合适的命令是

sudo netstat -tnlp tcp | grep '\.80 '

如果什么都没有听,那么上面就不会产生任何输出。如果您看到一些输出然后确认它是您所期望的,那么请参阅下面的防火墙部分。

如果您无法访问远程系统并想在向相关管理员报告之前确认问题,则可以使用tcpdump(wireshark或类似的)。

当尝试连接到没有正在侦听的IP:端口时,从远程系统到初始SYN数据包的响应是具有标志RST,ACK设置的数据包。这将关闭连接并导致连接拒绝消息,例如

$ sudo tcpdump -n host 192.0.2.1和port 22222
  tcpdump:详细输出被抑制,使用-v或-vv进行完整协议解码
  监听enp14s0,链接类型EN10MB(以太网),捕获大小262144字节

  12:31:27.013976 IP 192.0.2.2.34390> 192.0.2.1.22222:标志 [S],seq 1207858804,赢29200,期权[mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7],长度0

  12:31:27.020162 IP 192.0.2.1.22222> 192.0.2.2.34390:标志 [R.],seq 0,ack 1207858805,赢0,长0

请注意,tcpdump使用了  至 代表ACK 旗。

端口被防火墙阻止

如果端口被防火墙阻止,并且防火墙已配置为响应 icmp-port-unreachable 这也会导致连接被拒绝的消息。再次,您可以使用tcpdump(或类似)看到这一点

$ sudo tcpdump -n icmp
  tcpdump:详细输出被抑制,使用-v或-vv进行完整协议解码

  监听enp14s0,链接类型EN10MB(以太网),捕获大小262144字节   13:03:24.149897 IP 192.0.2.1> 192.0.2.2:ICMP 192.0.2.1 tcp端口22222无法访问,长度68

请注意,这也告诉我们阻止防火墙在哪里。


所以现在你知道导致连接被拒绝的消息是什么,你应该采取适当的行动,例如联系防火墙管理员或调查进程无法侦听的原因。

1可能还有其他工具。


87
2017-09-28 12:13



ELI5版本:它意味着连接请求到达另一台计算机,另一台计算机不知道你在说什么。 - immibis
“没有进程正在倾听。”主要原因..! - Samitha Chathuranga
在我的情况下,有些东西在听......但在与我试图连接的节点不同的节点上。哎呀。 - ijoseph
@ijoseph所以什么都没有听。 - Iain
@Iain如果一棵树不落在森林里,森林完全安静,其他树木在听吗? - ijoseph


对我来说,在Debian 6上挤压它就像它一样简单 检查SSH服务

sudo service ssh status

找不到任何东西(带有消息 ssh: unrecognized service只是 安装服务

sudo apt-get install openssh-server

如果您没有获得SFTP连接,这也有效,因为SFTP是SSH的子集(而FTPS是FTP的子集)。


4
2018-05-16 09:39





我的Centos Shorewall防火墙已耗尽磁盘空间。令人困惑的是,有些网站,比如youtube和MS都有效。像cnn.com这样的其他人失败了。清除一些空间并重新启动服务器为我解决了问题。


0
2017-11-03 13:19