web-dev-qa-db-fra.com

Netcat ne parvient pas à démarrer en mode d'écoute

J'utilise le système Centos 6.7 (final) et lorsque j'essaie d'exécuter nc en mode d'écoute, il imprime les éléments suivants:

# nc -l 1234
nc: Protocol not available

Le port n'est pas lié. J'ai aussi essayé d'autres numéros de port. Ce bogue semblait déjà avoir été signalé: https://access.redhat.com/solutions/175375 . 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 quelque chose d'autre que j'ai besoin d'essayer?

13
Ilya I

J'ai couru dans 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 colis est pour x86_64 (64 bits). Si tu as besoin i386 (32 bits), le bon est:

wget http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm
17
Eddie C.

Cette version particulière de NetCat a un bogue. Jusqu'à ce qu'il y ait une solution pour cela, la seule chose que vous puissiez faire est de dégrader à une version précédente - Sudo yum remove nc-1.84-24.el6.x86_64; Sudo yum install nc-1.84-22.el6.x86_64 devrait faire l'affaire.

9
Jenny D

Répondre à la question:

  1. Oui, la dégradation est nécessaire pour que NC puisse écouter. Et comme pour les autres commentaires:

a) -P n'est pas censé être utilisé lorsqu'il est en mode d'écoute. De NC Manpage:

-L Utilisé pour spécifier que NC devrait é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) La rétrograde peut être effectuée en une étape, la commande Yum Dowgrade fonctionne avec l'URL à l'emballage:

$ 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
4
RSH
# nc -l -p 1234

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

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

Le problème était le long des lignes de nc Traitement 1234 en tant que port destination (malgré une exécution en mode d'écoute) et essayer d'écouter le port 0 (qui a produit ce message étrange). Passer explicitement -p fonctionne autour de cela.

0
Ángel