“端口 9000:连接被拒绝”错误的来源和解决方案是什么?

“端口 9000:连接被拒绝”错误的来源和解决方案是什么?

我正在努力克服port 9000: Connection refused错误。

我在尝试以非分布式模式(作为单个 Java 进程)Ubuntu 14.04运行时遇到了问题(比较HadoopHadoop 2.4.1 文档)。我尝试按照 Hadoop Wiki 的建议解决此错误(hadoop/连接被拒绝)但我没有成功(我是初学者Ubuntu,甚至很难 100% 理解给出的建议)。我发布了一个 stackoverflow 问题由此我得出结论,我对此存在一些普遍的问题port 9000 Connection

远程登录输出:

martakarass@marta-komputer:~$ telnet localhost 9000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

nmap输出:

martakarass@marta-komputer:~$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-27 11:09 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
631/tcp open  ipp
902/tcp open  iss-realsecure

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

网猫配置:

我尝试使用以下命令强制打开 9000 端口:

nc -k -l 9000

但效果不太好(我仍然无法执行上面提到和链接的独立操作)。

从我的谷歌研究结果来看,我发现这个问题相当普遍,并且给那些不擅长“管理工作相关问题”的人带来了巨大的困扰。由于我属于这些人,因此我恳请回答以下问题:

  • 问题 1:一般来说,这种问题的根源是什么?(一些对于门外汉来说关于与端口/连接等相关的基本问题的介绍性文字/参考将非常受欢迎)。

  • 第二季度:该如何处理这个问题?

更新。

sudo netstat -nlp | grep :9000

不返回任何内容。

答案1

首先是 TL;DR,更多详细信息如下:

“连接被拒绝”是当您尝试连接到计算机或服务器上的服务(或您自己的本地计算机)时收到的错误,当所述服务未在指定的 TCP 端口上侦听(错误端口或服务未启动),或者当防火墙明确拒绝连接而不是忽略请求(不太常见的行为)时。

现在再详细讲一下:

它只能发生在 TCP 上(UDP 服务是无会话的),并且这种错误对于系统管理员来说确实非常常见。

当客户端应用程序连接到 TCP 服务时,它将发送设置了 SYN 标志的第一个数据包。如果我们简化一下,则有两个可能的答案:

  • 服务器实际上会侦听所需的 TCP 端口,并使用 SYN-ACK 数据包进行回复以确认 SYN 数据包,之后客户端会发送 ACK 数据包以向服务器“确认”已收到 SYN-ACK。此时您已建立 TCP 会话,并且可以开始与服务器“对话”。
  • 服务器接收到您的 SYN 数据包,但未监听所请求的端口。连接被拒绝,数据包设置了 RST(重置)标志。99% 的情况下,您都会收到臭名昭著的“连接被拒绝”信息。

我该如何解决 ?

嗯,您可以检查以下几点:您是否在客户端查询正确的端口?您的服务是否已启动?它是否在正确的端口上监听?

这三个问题通常会帮助您解决问题。

服务器(运行该服务的机器)

检查服务是否正在侦听预期端口

ss -nat | grep <enter port number here> | grep LISTEN

使用旧系统的某些人可能也会使用这个

netstat -an | grep <enter port number here> | grep LISTEN

如果在这里您没有看到任何类似于您的端口号的内容,则表示您的服务未启动或未监听您指定的端口号。

检查服务是否正在运行

service <service name> status

答案2

尝试禁用 iptables:

sudo service iptables stop && sudo service ip6tables stop

然后重新启动 Hadoop。如果这有帮助,您需要对防火墙进行适当的配置。

答案3

最终,我制作我的服务监听端口 9000在文件中添加/etc/ssh/sshd_config以下行:

Port 9000

我关注了服务器指南/openssh-服务器(它还包含有关复制原始文件、重新启动 sshd 服务器应用程序等的一些重要说明。)

此后我可以看到:

远程登录输出:

martakarass@marta-komputer:~$ telnet localhost 9000
Trying 127.0.0.1...
Connected to localhost.

nmap输出:

martakarass@marta-komputer:~$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-01 18:28 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00023s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
631/tcp  open  ipp
902/tcp  open  iss-realsecure
9000/tcp open  cslistener

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

网络状态输出:

martakarass@marta-komputer:~$ sudo netstat -nlp | grep :9000
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      16397/sshd      
tcp6       0      0 :::9000                 :::*                    LISTEN      16397/sshd 

相关内容