Co oznacza to wyjście Netcat?

11

Chcę telnet na moją lokalnie działającą maszynę wirtualną, która ma usługę dictd działającą na porcie 2628, kiedy wydaje polecenie nc -v, chociaż otrzymuję następujące informacje:

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

Dlaczego połączenie zostało odrzucone, a następnie połączenie zostało nawiązane później? Co to oznacza i dlaczego nie zaakceptuje mojego połączenia, gdy tylko to zrobię telnet localhost 2628:?

Raul77
źródło

Odpowiedzi:

11

Dostępnych jest kilkadziesiąt wersji netcat, ale jest to prawdopodobne, ponieważ:

  1. Masz 2 wpisy dla localhostw /etc/hosts. Jeden dla IPv4, drugi dla IPv6.
  2. Demon nasłuchuje tylko na jednym protokole (prawdopodobnie IPv4).
  3. Klient najpierw łączy się przez protokół, którego demon nie nasłuchuje, a następnie próbuje tego, którym jest.

Na przykład:

$ 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
źródło
Ok, jeśli tak się dzieje, jak to naprawić?
Raul77
Napraw dowolny z 3 ponumerowanych przedmiotów. 1) usuń jeden z wpisów /etc/hosts. 2) każ demonowi nasłuchiwać na obu protokołach. 3) zmusić klienta do połączenia przy użyciu innego protokołu.
Patrick