¿Qué significa esta salida de netcat?

11

Quiero hacer telnet en mi VM que se ejecuta localmente y que tiene un servicio dictd que se ejecuta en el puerto 2628, cuando emito mi comando nc -v aunque obtengo lo siguiente:

$ 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 qué hay una conexión rechazada y luego una conexión tuvo éxito más adelante? ¿Qué significa esto y por qué no acepta mi conexión cuando solo hago telnet localhost 2628:?

Raul77
fuente

Respuestas:

11

Hay algunas docenas de versiones de netcat disponibles, pero esto es probable porque:

  1. Tienes 2 entradas para localhosten /etc/hosts. Uno para IPv4, otro para IPv6.
  2. El demonio solo está escuchando en un protocolo (probablemente IPv4).
  3. El cliente se conecta primero a través del protocolo que el demonio no está escuchando, y luego prueba el que es.

Por ejemplo:

$ 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
Patricio
fuente
Ok, si esto es lo que está sucediendo, ¿cómo lo soluciono?
Raul77
Repara cualquiera de los 3 elementos numerados. 1) eliminar una de las entradas de /etc/hosts. 2) haz que el demonio escuche en ambos protocolos. 3) obligar al cliente a conectarse utilizando el otro protocolo.
Patrick