Netcat - Come ascoltare su una porta TCP utilizzando l'indirizzo IPv6?


13

Sto usando la versione più recente di netcat ( v1.10-41.1) che non sembra avere un'opzione per gli indirizzi IPv6 (come lo -6era nelle versioni precedenti di nc).

Se scrivo nc -lvnp 2222e controllo le porte di ascolto con netstat -punta, il server sembra essere in ascolto sulla porta solo 2222per gli indirizzi IPv4:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  

tcp6 non è attivo come, ad esempio, il mio server apache2:

tcp6       0      0 :::80                   :::*                    LISTEN      -

Risposte:


17

Ci sono almeno 3 o 4 diverse implementazioni di netcat viste su Debian:

  • netcat-tradizionale 1.10-41 l'originale che non supporta IPv6: probabilmente quello che hai installato.
  • netcat6 creato per offrire IPv6 (oldstable, sostituito).
  • netcat-openbsd 1.130-3. Supporta IPv6.
  • ncat 7.70 + dfsg1-3 probabilmente un po 'più recente poiché non in Debian stable, fornito da nmap , supporta IPv6.

Vorrei scegliere quello openbsd. Ogni versione può avere una sintassi leggermente diversa, quindi fai attenzione.

A proposito: socat è uno strumento molto migliore in grado di fare molto di più di netcat. Dovresti provarlo!


2
Eccezionale. Grazie per aver suggerito lo socatstrumento. Apparentemente ha molte più opzioni e quanto segue: ha socat tcp6-listen:2222fatto il lavoro.
bashbin,

2
@bashbin ma un po 'più dettagliato nella sua sintassi. sarebbe socat tcp6-listen:2222,reuseaddr -(o probabilmente reuseportinvece) se si desidera utilizzarlo due volte di seguito quando il server (il comando socat) si disconnette per primo.
AB

4

Credo che la funzionalità di ipv4 e ipv6 sia in realtà il risultato di confusione in quanto ci sono implementazioni multiple (forcelle) o versioni completamente diverse. Se cerchi, ti imbatterai in menzioni di nc6. Questa implementazione sembra essere nelle distro basate su BSD.

Proverei a installare nc6sulla tua particolare distribuzione e ad eseguirla invece che ncper il supporto ipv6.

Ulteriore ricerca

Sono stato in grado di trovare questo commit datato 11-01-2018 - aggiungere la patch IPv6 che chiaramente aggiunge la funzionalità IPv6 a quella che stai chiamando la versione più recente di netcat.

NOTA: ho accesso solo a nc 7.50 sui miei sistemi e, come descrivi, supporta sia -4e -6.

Ho il sospetto che quella che pensi sia una versione più recente di netcat è in realtà una versione molto più vecchia: http://nc110.sourceforge.net/ .

Se desideri un elenco completo delle varie implementazioni, questo è disponibile nella domanda di Wikipedia su Netcat .

La versione originale di netcat era un programma Unix. L'ultima versione (1.10) è stata rilasciata nel marzo 1996. 1

Sulla maggior parte delle distro Linux o GNU netcat o la versione NMAP sembrano essere ciò che la maggior parte sta usando:

Esistono diverse implementazioni sui sistemi POSIX , tra cui riscrive da zero come GNU netcat [5] o OpenBSD netcat, 6 di cui l'ultimo supporta IPv6 e TLS . La versione di OpenBSD è stata trasferita su FreeBSD base 7 e Windows / Cygwin. 8 Mac OS X viene fornito con netcat installato a partire da OSX 10.13 oppure gli utenti possono utilizzare MacPorts per installare una variante. [9] È disponibile anche una versione di netcat per Microsoft Windows. [10]

Ad esempio, su CentOS 7.x:

$ nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

$ rpm -qf /bin/nc
nmap-ncat-6.40-13.el7.x86_64
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.