Netcat - Wie kann ich einen TCP-Port mit einer IPv6-Adresse überwachen?

13

Ich verwende die neueste Version von netcat ( v1.10-41.1), die anscheinend keine Option für IPv6-Adressen bietet (wie -6in den älteren Versionen von nc).

Wenn ich nc -lvnp 2222empfangende Ports eintippe und mit überprüfe netstat -punta, scheint der Server den Port nur 2222auf IPv4-Adressen zu überwachen:

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

tcp6 ist nicht aktiv wie zum Beispiel mein Apache2 Server:

tcp6       0      0 :::80                   :::*                    LISTEN      -
Bashbin
quelle

Antworten:

17

Es gibt mindestens 3 oder 4 verschiedene Implementierungen von Netcat, wie sie unter Debian zu sehen sind:

  • netcat-traditional 1.10-41 das original welches IPv6 nicht unterstützt: wahrscheinlich was du installiert hast.
  • netcat6, das IPv6 anbieten soll (oldstable, ersetzt).
  • netcat-openbsd 1.130-3. Unterstützt IPv6.
  • ncat 7.70 + dfsg1-3 ist wahrscheinlich etwas neuer, da nicht in Debian stable, bereitgestellt von nmap , IPv6 unterstützt wird.

Ich würde für die OpenBSD gehen. Jede Version kann leicht unterschiedliche Syntax haben, seien Sie also vorsichtig.

Übrigens: socat ist ein viel besseres Tool, das wirklich viel mehr kann als netcat. Du solltest es versuchen!

AB
quelle
2
Genial. Vielen Dank, dass Sie das socatTool vorgeschlagen haben. Es hat anscheinend viel mehr Möglichkeiten und folgendes: socat tcp6-listen:2222Hat den Job gemacht.
Bashbin
2
@bashbin aber etwas ausführlicher in seiner Syntax. Das wäre socat tcp6-listen:2222,reuseaddr -(oder wahrscheinlich auch reuseport), wenn Sie es zweimal hintereinander verwenden möchten, wenn der Server (der Befehl socat) zuerst die Verbindung trennt.
AB
4

Ich glaube, die Funktionalität von ipv4 & ipv6 ist in der Tat ein Ergebnis von Verwirrung, da es mehrere Implementierungen (Forks) oder völlig unterschiedliche Versionen gibt. Wenn Sie suchen, stoßen Sie auf Erwähnungen von nc6. Diese Implementierung scheint in den BSD-basierten Distributionen zu sein.

Ich würde versuchen, nc6auf Ihrer speziellen Distribution zu installieren und diese anstelle der ncIPv6-Unterstützung auszuführen.

Weitere Untersuchung

Ich konnte feststellen, dass dieses Commit vom 11.01.2018 einen IPv6-Patch hinzufügt, der die IPv6-Funktionalität eindeutig wieder in die neuere Version von Netcat einfügt.

HINWEIS: Ich habe auf meinen Systemen nur Zugriff auf nc 7.50 und es unterstützt, wie Sie beschreiben, sowohl -4als auch -6.

Ich vermute, was Sie denken, ist eine neuere Version von Netcat ist in der Tat eine viel ältere Version: http://nc110.sourceforge.net/ .

Wenn Sie eine vollständige Liste der verschiedenen Implementierungen wünschen, finden Sie diese in der Wikipedia-Frage zu Netcat .

Die ursprüngliche Version von Netcat war ein Unix-Programm. Die letzte Version (1.10) wurde im März 1996 veröffentlicht. 1

Auf den meisten Linux-Distributionen scheint GNU Netcat oder die NMAP-Version das zu sein, was die meisten verwenden:

Es gibt verschiedene Implementierungen auf POSIX- Systemen, einschließlich Neuschreiben von Grund auf wie GNU netcat [5] oder OpenBSD netcat, 6 von denen letzteres IPv6 und TLS unterstützt . Die OpenBSD-Version wurde auf FreeBSD Base 7 und Windows / Cygwin portiert . 8 Mac OS X wird mit Netcat ab OS X 10.13 geliefert, oder Benutzer können MacPorts verwenden, um eine Variante zu installieren. [9] Es gibt auch eine Microsoft Windows-Version von Netcat. [10]

Zum Beispiel unter 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
slm
quelle