这是有关拒绝连接的规范问题


当我尝试连接时,我们看到了很多有关效果的问题到系统我得到一条消息

连接被拒绝

为什么会这样?


评论

我们在Apache Hadoop中得到了很多,这通常是由客户端中的配置错误引起的:要与之对话的主机,它们的DNS或/ etc / host表被设置为什么,或者由一个主机使用的端口之间不匹配。客户认为应该使用的服务。因此,我们对此主题有一个专用的Wiki条目。许多问题可能会出现在其他地方,尽管规模较小(希望如此)。在1000个节点的群集中调试连接问题并不有趣。

您专用的Wiki入口链接指向此问题;)

接得好。这是官方链接:wiki.apache.org/hadoop/ConnectionRefused。我将在此处为整个循环添加一个交叉引用。

@SteveLoughran很酷的文章-评论-后面的链接说堆栈溢出,我们是服务器故障;)

完成。 FWIW,该Wiki链接被添加到Hadoop堆栈中传递的ConnectionRefused异常中,以及确定出问题所在所需的额外信息(主机,端口)。我们仍然从看到堆栈跟踪但不遵循Wiki链接的人那里收到很多错误报告。

#1 楼


注意:此消息是您要解决的问题的症状。了解消息的原因最终将带您解决问题。


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


您正在尝试连接的IP:端口上没有监听。
该端口已被防火墙阻止。

没有进程正在监听。

这是到目前为止,最常见的消息原因。首先,请确保您尝试连接到正确的系统。如果然后要确定是否是问题所在,请在远程系统上运行netstat或ss1例如。如果您希望某个进程在端口22222上侦听

sudo netstat -tnlp | grep :22222




ss -tnlp | grep :22222

合适的命令是

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


如果没有监听,则上面的命令不会产生输出。如果看到一些输出,请确认它是您期望的,然后请参阅下面的防火墙部分。

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

当尝试连接到没有监听任何内容的IP:port时,从远程系统到初始SYN数据包的响应是带有标志RST,ACK的数据包。这将关闭连接并导致“拒绝连接”消息,例如


$ sudo tcpdump -n主机192.0.2.1和端口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,win 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,win 0,长度0


请注意,tcpdump使用。代表ACK标志。

端口被防火墙阻止

如果端口被防火墙阻止,并且防火墙已配置为以icmp-port-unreachable响应,这也会导致连接被拒绝的消息。再次使用tcpdump(或类似的命令)可以看到这一点。 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其他工具也可能可用。

评论


ELI5版本:这意味着连接请求已到达另一台计算机,而另一台计算机不知道您在说什么。

–user253751
2015年9月29日,下午1:56

“没有过程在倾听。”主要原因..!

–萨米莎(Samitha Chathuranga)
17年12月11日在13:11

以我为例,某人正在监听……但是在我尝试连接的那个节点上的另一个节点上。哎呀。

– ijoseph
18年9月7日在21:05

@ijoseph因此,当时没有人在听。

–user9517
18-09-30在12:21

好的,因此ufw绝对允许在端口80上进行连接,而nginx则在端口80上监听definity。那么为什么在nginx错误日志中看到连接被拒绝?

– Mark Micallef
20年7月2日,11:10

#2 楼

对我而言,在Debian 6上进行压缩就像检查SSH服务一样简单: />
sudo service ssh status


如果您没有建立SFTP连接,这也适用,因为SFTP是SSH的子集(而FTPS是FTP的子集)。