O que é uma origem e solução para o erro “port 9000: Connection refused”?

1

Eu estou stuggeling com erro port 9000: Connection refused .

Eu trabalho em Ubuntu 14.04 e enfrentei o problema ao tentar executar Hadoop em um modo não distribuído, como um único processo Java (compare Hadoop 2.4.1 documentation ). Eu tentei seguir as sugestões do Wiki do Hadoop sobre este erro ( hadoop / ConnectionRefused ) mas eu não consegui (eu sou um novatoUbuntu user e acha difícil até 100% entender as sugestões dadas). Eu postei uma questão de stackoverflow da qual eu concluo que tenho algum problema geral com port 9000 Connection .

Saída

telnet :

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

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
Configuração do

Netcat :

Eu tentei usar o seguinte comando para forçar a abertura da porta 9000:

nc -k -l 9000

mas não funcionou bem (ainda não consegui realizar a operação de standlone mencionada e vinculada acima).

A julgar pelos meus resultados de pesquisa do google, vejo que o problema é bastante comum e representa uma grande batalha, especialmente para aqueles que não são bons em "problemas relacionados ao trabalho administrativo". Como eu pertenço a estes, peço por respostas para as seguintes perguntas:

  • Q1 : Qual é a origem de tal problema em geral? (Algumas para um leigo palavras introdutórias / referências sobre questões básicas ligadas a portas / conexões etc. seriam muito muito boas vindas).

  • Q2 : como lidar com esse problema?

Atualizar.

sudo netstat -nlp | grep :9000

não retorna nada.

    
por Marta Karas 27.04.2015 / 11:20

3 respostas

0

Eventualmente, consegui fazer meu serviço ouvir a porta 9000 adicionando ao arquivo /etc/ssh/sshd_config a seguinte linha:

Port 9000

Eu segui este serverguide / openssh-server (ele também contém alguns comentários importantes sobre como fazer uma cópia do arquivo original, reiniciando o aplicativo do servidor sshd, etc.)

Depois disso, posso ver:

Saída

telnet :

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

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
Saída

netstat :

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 
    
por Marta Karas 01.05.2015 / 18:30
1

TL; DR primeiro, mais detalhes a seguir:

"Conexão recusada" é o erro que você recebe quando tenta se conectar a um serviço em um computador ou servidor (ou localmente em seu próprio computador) quando o serviço não está escutando na porta TCP especificada (porta ou serviço não iniciado) ou quando um firewall rejeita explicitamente uma conexão em vez de ignorar a solicitação (comportamento não muito comum).

E agora um pouco mais detalhadamente:

Isso só pode acontecer com o TCP (os serviços UDP são sem sessão) e esse erro é realmente muito comum para administradores de sistemas.

Quando um aplicativo cliente se conecta a um serviço TCP, ele envia um primeiro pacote com o conjunto de sinalizadores SYN. Se simplificarmos, há duas respostas possíveis para isso:

  • O servidor realmente escuta a porta TCP requerida e responde com um pacote SYN-ACK para confirmar o pacote SYN, após o qual os clientes entregam um pacote ACK para "confirmar" ao servidor que o SYN-ACK foi recebido. Esse é o momento em que você estabeleceu uma sessão TCP e quando pode começar a "conversar" com o servidor.
  • O servidor recebe seu pacote SYN, mas não está escutando na porta solicitada. A conexão é rejeitada com um pacote que possui o sinalizador RST (reset) definido. Isso é 99% do tempo quando você recebe a infame "conexão recusada".

Como corrijo isso?

Bem, há algumas coisas que você pode verificar: você está consultando a porta certa no lado do cliente? Seu serviço foi iniciado? Está escutando na porta certa?

Essas três perguntas geralmente ajudarão você a resolver seu problema.

Comando genérico rápido a ser inserido no servidor (a máquina que executa o serviço)

Verificando se o serviço está escutando na porta esperada

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

Algumas pessoas em sistemas mais antigos também podem usar isso

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

Se você não vir nada aqui que se pareça com seu número de porta, seu serviço não foi iniciado ou não está escutando no número de porta especificado.

Verificando se o serviço está sendo executado

service <service name> status
    
por Marc-Olivier Barre 30.04.2015 / 20:32
1

Tente desativar o iptables:

sudo service iptables stop && sudo service ip6tables stop

Em seguida, reinicie o hadoop. Se isso ajudou você precisa fazer a configuração adequada para o seu firewall.

    
por UNIm95 03.05.2015 / 23:38