答案1
笔记:此消息是您正在尝试解决的问题的症状。了解消息的原因最终将帮助您解决问题。
“连接被拒绝”消息主要有两个原因:
- 您尝试连接的 IP:端口上没有任何内容正在监听。
- 该端口被防火墙阻止。
没有进程正在监听。
这是迄今为止最常见的导致该消息的原因。首先确保您尝试连接到正确的系统。然后,要确定这是否是问题所在,请在远程系统上运行网络状态或者党卫军1例如,如果你期望一个进程监听端口 22222
sudo netstat -tnlp | grep :22222
或者
ss -tnlp | grep :22222
对于 OSX,合适的命令是
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:标志[摘要],序列 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.],序号 0,确认 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可能还有其他工具可用。
答案2
答案3
什么原因导致出现‘连接被拒绝’消息?
- 错误指定了 IP 地址或端口号。
- 服务器应用程序是没有运行监听该端口。
- 服务器应用程序正在运行,但是不在听在指定的端口上。
- 本地/远程防火墙阻止连接。
- 服务器超载或资源枯竭。