O que significa essa saída netcat?

11

Desejo telnet para minha VM em execução local, que possui um serviço dictd em execução na porta 2628, quando emito meu comando nc -v, apesar de obter o seguinte:

$ nc -v localhost 2628
nc: connectx to localhost port 2628 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 63929
    dst 127.0.0.1 port 2628
    rank info not available
    TCP aux info available

Connection to localhost port 2628 [tcp/dict] succeeded!

Por que há uma conexão recusada e, em seguida, uma conexão bem-sucedida mais tarde? O que isso significa e por que não aceita minha conexão quando eu apenas faço telnet localhost 2628:?

Raul77
fonte

Respostas:

11

Existem algumas dezenas de versões disponíveis do netcat, mas isso é provável porque:

  1. Você tem 2 entradas para localhostin /etc/hosts. Um para IPv4, outro para IPv6.
  2. O daemon está escutando apenas em um protocolo (provavelmente IPv4).
  3. O cliente está primeiro se conectando através do protocolo em que o daemon não está ouvindo e depois tentando o que é.

Por exemplo:

$ grep localhost /etc/hosts
127.0.0.1 localhost
::1 localhost

$ nc -4 -l -p 9000 -s 127.0.0.1     
nc: listening on 127.0.0.1 9000 ...


$ nc localhost 9000
nc: cannot connect to localhost (::1) 9000 [9000]: Connection refused
nc: localhost (127.0.0.1) 9000 [9000] open
nc: using stream socket
Patrick
fonte
Ok, se é isso que está acontecendo, como faço para corrigir isso?
precisa saber é o seguinte
Corrija qualquer um dos 3 itens numerados. 1) remova uma das entradas de /etc/hosts. 2) faça o daemon ouvir nos dois protocolos. 3) force o cliente a se conectar usando o outro protocolo.
Patrick Patrick