web-dev-qa-db-fra.com

Netcat - Comment écouter sur un port TCP en utilisant une adresse IPv6?

J'utilise la dernière version de netcat (v1.10-41.1) qui ne semble pas avoir d'option pour les adresses IPv6 (comme le -6 était dans les anciennes versions de nc).

Si je tape nc -lvnp 2222 et vérifiez les ports d'écoute avec netstat -punta, le serveur semble écouter sur le port 2222 pour les adresses IPv4 uniquement:

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

tcp6 n'est pas actif comme, par exemple, mon serveur Apache2:

tcp6       0      0 :::80                   :::*                    LISTEN      -
13
bashbin

Il y a au moins 3 ou 4 implémentations différentes de netcat comme vu sur Debian:

  • netcat-traditional 1.10-41 l'original qui ne prend pas en charge IPv6: probablement ce que vous avez installé.
  • netcat6 qui a été conçu pour offrir IPv6 (oldstable, remplacé).
  • netcat-openbsd 1.130-3. Prend en charge IPv6.
  • ncat 7.70 + dfsg1-3 probablement un peu plus récent car non stable dans Debian, fourni par nmap , prend en charge IPv6.

J'irais pour l'openbsd. Chaque version peut avoir une syntaxe subtilement différente, alors faites attention.

Soit dit en passant: socat est un bien meilleur outil capable de faire vraiment bien plus que netcat. Tu devrais l'essayer!

17
A.B

Je crois que la fonctionnalité d'ipv4 et d'ipv6 est en fait le résultat de la confusion autour de l'existence de plusieurs implémentations (fourches) ou de versions complètement différentes. Si vous recherchez, vous tomberez sur des mentions de nc6. Cette implémentation semble être dans les distributions basées sur BSD.

J'essaierais d'installer nc6 sur votre distribution particulière et l'exécuter au lieu de nc pour la prise en charge d'ipv6.

De plus amples recherches

J'ai pu trouver ceci commit daté du 2018-01-11- ajouter le correctif IPv6 qui ajoute clairement la fonctionnalité IPv6 dans ce que vous appelez la version plus récente de netcat.

REMARQUE: Je n'ai accès qu'à nc 7.50 sur mes systèmes et, comme vous le décrivez, prend en charge les deux -4 et -6.

Je soupçonne que ce que vous pensez être une version plus récente de netcat est en fait une version beaucoup plus ancienne: http://nc110.sourceforge.net/ .

Si vous souhaitez une liste exhaustive des différentes implémentations, celle-ci est disponible dans la question Wikipedia sur Netcat .

La version originale de netcat était un programme Unix. La dernière version (1.10) est sortie en mars 1996 . 1

Sur la plupart des distributions Linux, soit GNU netcat ou la version NMAP semble être ce que la plupart utilisent:

Il existe plusieurs implémentations sur les systèmes POSIX , y compris les réécritures à partir de zéro comme GNU netcat- [5] ou OpenBSD netcat, 6 ce dernier prenant en charge IPv6 et TLS . La version d'OpenBSD a été portée sur la base FreeBSD7 et Windows/Cygwin . 8 Mac OS X est livré avec netcat installé à partir d'OSX 10.13 ou les utilisateurs peuvent utiliser MacPorts pour installer une variante. [9] Il existe également une version Microsoft Windows de netcat. [10]

Par exemple, sur 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
4
slm