Apa yang dimaksud dengan output netcat ini?

11

Saya ingin telnet ke VM saya yang menjalankan secara lokal yang memiliki layanan dictd berjalan pada port 2628, ketika saya mengeluarkan perintah nc -v saya meskipun saya mendapatkan yang berikut:

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

Mengapa ada koneksi yang ditolak dan kemudian koneksi berhasil di kemudian hari? Apa artinya ini dan mengapa itu tidak akan menerima koneksi saya ketika saya hanya melakukan telnet localhost 2628:?

Raul77
sumber

Jawaban:

11

Ada beberapa lusin versi netcat yang tersedia, tetapi ini kemungkinan karena:

  1. Anda memiliki 2 entri untuk localhostmasuk /etc/hosts. Satu untuk IPv4, satu lagi untuk IPv6.
  2. Daemon hanya mendengarkan pada satu protokol (kemungkinan IPv4).
  3. Klien pertama-tama terhubung melalui protokol yang tidak didengarkan daemon, dan kemudian mencoba yang itu.

Sebagai contoh:

$ 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
sumber
Ok, jika ini yang terjadi, bagaimana cara memperbaikinya?
Raul77
Perbaiki salah satu dari 3 item bernomor. 1) hapus salah satu entri dari /etc/hosts. 2) membuat daemon mendengarkan kedua protokol. 3) memaksa klien untuk terhubung menggunakan protokol lain.
Patrick