Que signifie cette sortie netcat?

11

Je veux me connecter à ma machine virtuelle locale qui a un service dictd exécuté sur le port 2628, lorsque j'émets ma commande nc -v bien que j'obtienne ce qui suit:

$ 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!

Pourquoi une connexion est-elle refusée, puis une connexion réussie plus tard? Qu'est - ce que cela signifie et pourquoi pas accepter ma connexion quand je fais juste: telnet localhost 2628?

Raul77
la source

Réponses:

11

Il existe quelques dizaines de versions de netcat disponibles, mais cela est probablement dû au fait que:

  1. Vous avez 2 entrées pour localhostin /etc/hosts. Un pour IPv4, un autre pour IPv6.
  2. Le démon n'écoute que sur un seul protocole (probablement IPv4).
  3. Le client se connecte d'abord via le protocole que le démon n'écoute pas, puis essaie celui qu'il est.

Par exemple:

$ 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
la source
Ok, si c'est ce qui se passe, comment puis-je le réparer?
Raul77
Corrigez l'un des 3 éléments numérotés. 1) supprimez l'une des entrées de /etc/hosts. 2) faire écouter le démon sur les deux protocoles. 3) forcer le client à se connecter en utilisant l'autre protocole.
Patrick