Netcat no se inicia en modo de escucha

13

Estoy usando el sistema CentOS 6.7 (Final), y cuando intento ejecutar ncen modo de escucha, imprime lo siguiente:

# nc -l 1234
nc: Protocol not available

El puerto no está vinculado. También probé otros números de puerto. Parece que este error ya se ha informado: https://access.redhat.com/solutions/1753753 . Lamentablemente no es muy detallado.

Información del paquete:

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

¿Hay algo más que deba probar?

Ilya I
fuente
¿Qué versión de nc estás usando?
Jenny D
@JennyD Actualicé la publicación, echa un vistazo
Ilya I
1
Lamentablemente, la única solución es una degradación, como se describe a continuación. También estoy votando para mover esta pregunta a Unix y Linux, ya que no se trata estrictamente de la administración de sistemas. Es un buen sitio con algunos expertos que me dejan asombrado, así que por favor no piensen que el voto cercano se debe a que su pregunta es mala o algo así.
Jenny D

Respuestas:

17

Me encontré con el mismo problema. Puedes resolverlo de esta manera:

# 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

Tenga en cuenta que el paquete es para x86_64(64 bits). Si necesita i386(32 bits), el correcto es:

wget http://vault.centos.org/6.6/os/i386/Packages/nc-1.84-22.el6.i686.rpm
Eddie C.
fuente
Usar rpm con los indicadores -i y -U simultáneamente parece extraño (pero funciona). La invocación más estándar es -ivh o -Uvh.
dmourati
1
¡trabajar como un encanto!
Shawn Guo
Este camino ya no funciona
BradLaney
@BradLaney, ¿por qué no?
Eddie C.
@EddieC. La URL me estaba haciendo 404 cuando hice el comentario. Parece estar funcionando ahora. No importa.
BradLaney
9

Esta versión particular de netcat tiene un error. Hasta que haya una solución, lo único que puede hacer es bajar a una versión anterior, sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64debería hacer el truco.

Jenny D
fuente
1
¿No yumtiene un argumento que pueda degradar a una versión específica de un paquete sin desinstalarlo primero?
kasperd
Genial, pero no pude degradar. Yum dice que no hay paquete disponible (tanto installcon la versión específica como con el downgradecomando). También intenté buscar ese archivo rpm y aún no lo he encontrado.
Ilya I
4

Respondiendo la pregunta:

  1. SÍ, se necesita una degradación para que nc pueda escuchar. y en cuanto a los otros comentarios:

a) -p no se debe usar cuando está en modo de escucha. de la página de manual de nc:

-l Se usa para especificar que nc debería escuchar una conexión entrante en lugar de iniciar una conexión a un host remoto. Es un error utilizar esta opción junto con las opciones -p, -s o -z.

b) la degradación se puede hacer en un solo paso, el comando yum downgrade funciona con la url del paquete:

$ 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
fuente
0
# nc -l -p 1234

Puede escuchar en ese puerto utilizando explícitamente -pflag:

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

El problema consistía en nctratar 1234 como el puerto de destino (a pesar de ejecutarse en modo de escucha) y tratar de escuchar en el puerto 0 (que produjo ese mensaje extraño). Pasar explícitamente las -pobras a su alrededor.

Ángel
fuente
Probé esto en centos 6 y no funcionó con la versión nc-1.84-24. La solución fue degradar a la versión nc-1.84-22 según la respuesta aceptada.
Criggie
esa versión no permite usar -p con -l.
andrej
-3

instalar nmap:

yum install nmap

tratar:

ncat -l 1234

Ronald Gutiérrez
fuente
Lea la pregunta y las respuestas ya suministradas para saber por qué su respuesta no es suficiente en ese caso particular.
Sven