Was bedeutet diese Netcat-Ausgabe?

11

Ich möchte eine Telnet-Verbindung zu meiner lokal ausgeführten VM herstellen, auf der ein Dictd-Dienst auf Port 2628 ausgeführt wird, wenn ich meinen Befehl nc -v erteile, obwohl Folgendes angezeigt wird:

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

Warum wird eine Verbindung abgelehnt und später wurde eine Verbindung hergestellt? Was bedeutet das und warum wird meine Verbindung nicht akzeptiert, wenn ich es gerade tue : telnet localhost 2628?

Raul77
quelle

Antworten:

11

Es sind einige Dutzend Versionen von Netcat verfügbar, dies liegt jedoch wahrscheinlich daran, dass:

  1. Sie haben 2 Einträge für localhostin /etc/hosts. Eine für IPv4, eine andere für IPv6.
  2. Der Dämon überwacht nur ein Protokoll (wahrscheinlich IPv4).
  3. Der Client stellt zuerst eine Verbindung über das Protokoll her, das der Dämon nicht abhört, und probiert dann das Protokoll aus, das er ist.

Beispielsweise:

$ 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
quelle
Ok, wenn dies der Fall ist, wie kann ich das beheben?
Raul77
Korrigieren Sie eines der 3 nummerierten Elemente. 1) Entfernen Sie einen der Einträge aus /etc/hosts. 2) Lassen Sie den Daemon beide Protokolle abhören. 3) Erzwingen Sie, dass der Client eine Verbindung mit dem anderen Protokoll herstellt.
Patrick