Netcat ne démarre pas en mode d'écoute

13

J'utilise le système CentOS 6.7 (Final), et lorsque j'essaie de fonctionner ncen mode écoute, il affiche ce qui suit:

# nc -l 1234
nc: Protocol not available

Le port n'est pas lié. J'ai également essayé d'autres numéros de port. Ce bogue semble avoir déjà été signalé: https://access.redhat.com/solutions/1753753 . Malheureusement, ce n'est pas très détaillé.

Informations sur l'emballage:

Name        : nc
Arch        : x86_64
Version     : 1.84
Release     : 24.el6

Y a-t-il autre chose que je dois essayer?

Ilya I
la source
Quelle version de nc utilisez-vous?
Jenny D du
@JennyD J'ai mis à jour le message, veuillez vérifier
Ilya I
1
Malheureusement, le seul correctif est une rétrogradation, comme décrit ci-dessous. Je vote également pour déplacer cette question vers Unix et Linux car il ne s'agit pas strictement de l'administration des systèmes. C'est un bon site avec des experts qui me laissent en admiration, alors ne pensez pas que le vote serré est dû au fait que votre question est mauvaise ou quoi que ce soit.
Jenny D

Réponses:

17

Je suis tombé sur le même problème. Vous pouvez le résoudre de cette façon:

# Removes the old package
yum erase nc

# Manually downloads the working package from the Official Repository
wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm

# Installs the package
rpm -iUv nc-1.84-22.el6.x86_64.rpm

Veuillez noter que le package est pour x86_64(64 bits). Si vous avez besoin i386(32 bits), le bon est:

wget http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm
Eddie C.
la source
L'utilisation de rpm avec les drapeaux -i et -U simultanément semble étrange (mais fonctionne). L'invocation plus standard est -ivh ou -Uvh.
dmourati
1
travailler comme un charme!
Shawn Guo
Ce chemin ne fonctionne plus
BradLaney
@BradLaney pourquoi pas?
Eddie C.
@EddieC. L'URL était 404ing pour moi lorsque j'ai fait le commentaire. Cela semble fonctionner maintenant. Ça ne fait rien.
BradLaney
9

Cette version particulière de netcat a un bogue. Jusqu'à ce qu'il y ait un correctif, la seule chose que vous pouvez faire est de rétrograder vers une version précédente - sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64devrait faire l'affaire.

Jenny D
la source
1
N'a pas yumd'argument qui peut rétrograder vers une version spécifique d'un package sans désinstaller d'abord?
kasperd
Super, mais je n'ai pas pu rétrograder. Yum dit qu'aucun paquet n'est disponible ( installavec la version spécifique et la downgradecommande). A également essayé de rechercher ce fichier rpm et n'a pas encore trouvé.
Ilya I
4

Répondre à la question:

  1. OUI, un downgrade est nécessaire pour que nc puisse écouter. et comme pour les autres commentaires:

a) -p n'est pas censé être utilisé en mode d'écoute. à partir de la page de manuel nc:

-l Utilisé pour spécifier que nc doit écouter une connexion entrante plutôt que d'initier une connexion à un hôte distant. C'est une erreur d'utiliser cette option conjointement avec les options -p, -s ou -z.

b) le downgrade peut être fait en une seule étape, la commande yum downgrade fonctionne avec l'url du package:

$ rpm -q nc
nc-1.84-24.el6.x86_64
$ nc -l 12345 #Although the syntax is correct, the command fails
nc: Protocol not available
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ sudo yum downgrade http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm  #shortcut to downgrade
...
Setting up Downgrade Process
nc-1.84-22.el6.x86_64.rpm                                                              |  57 kB     00:00
Examining /var/tmp/yum-root-Iq4yc7/nc-1.84-22.el6.x86_64.rpm: nc-1.84-22.el6.x86_64
Resolving Dependencies
--> Running transaction check
---> Package nc.x86_64 0:1.84-22.el6 will be a downgrade
---> Package nc.x86_64 0:1.84-24.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package          Arch                 Version                     Repository                            Size
==============================================================================================================
Downgrading:
 nc               x86_64               1.84-22.el6                 /nc-1.84-22.el6.x86_64               109 k

Transaction Summary
==============================================================================================================
Downgrade     1 Package(s)

Total size: 109 k
Is this ok [y/N]: y
...
Removed:
  nc.x86_64 0:1.84-24.el6

Installed:
  nc.x86_64 0:1.84-22.el6

Complete!
$ nc -l -p 12345 #attempt to run with incorrect syntax
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
$ nc -l 12345 # try to listen again
^C
$#nc successully opens a socket on 12345. had to stop it with ctrl+C
RSH
la source
0
# nc -l -p 1234

Vous pouvez écouter sur ce port en utilisant explicitement -pflag:

-p source_port
         Specifies the source port nc should use, subject to privilege restrictions and availability.

Le problème consistait à nctraiter le 1234 comme port de destination (bien qu'il soit exécuté en mode d'écoute) et à essayer d'écouter sur le port 0 (ce qui produisait ce message étrange). Le passage explicite le contourne -p.

Ange
la source
J'ai essayé ceci sur centos 6 et cela n'a pas fonctionné en utilisant la version nc-1.84-24 Le correctif était de rétrograder vers la version nc-1.84-22 selon la réponse acceptée.
Criggie
cette version ne permet pas d'utiliser -p avec -l.
andrej
-3

installez nmap:

yum install nmap

essayer:

ncat -l 1234

Ronald Gutierrez
la source
Veuillez lire la question et les réponses déjà fournies pour savoir pourquoi votre réponse n'est pas suffisante dans ce cas particulier.
Sven