Netcat non si avvia in modalità di ascolto


13

Sto usando il sistema CentOS 6.7 (Final) e quando provo a funzionare ncin modalità di ascolto, stampa quanto segue:

# nc -l 1234
nc: Protocol not available

La porta non è vincolata. Ho provato anche altri numeri di porta. Sembra che questo errore sia già stato segnalato: https://access.redhat.com/solutions/1753753 . Purtroppo non è molto dettagliato.

Informazioni sul pacchetto:

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

C'è qualcos'altro che devo provare?


Quale versione di nc stai usando?
Jenny D,

@JennyD Ho aggiornato il post, per favore controlla
Ilya I

1
Purtroppo l'unica soluzione è un downgrade, come descritto di seguito. Sto anche votando per spostare questa domanda su Unix e Linux poiché non riguarda strettamente l'amministrazione dei sistemi. È un buon sito con alcuni esperti che mi lasciano a bocca aperta, quindi per favore non pensare che il voto vicino sia perché la tua domanda è sbagliata o altro.
Jenny D,

Risposte:


17

Ho riscontrato lo stesso problema. Puoi risolverlo in questo modo:

# 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

Si noti che il pacchetto è per x86_64(64 bit). Se è necessario i386(32 bit), quello corretto è:

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

L'uso simultaneo di rpm con i flag -i e -U sembra strano (ma funziona). L'invocazione più standard è -ivh o -Uvh.
dmourati,

1
lavorare come un fascino!
Shawn Guo,

Questo percorso non funziona più
BradLaney,

@BradLaney perché no?
Eddie C.,

@EddieC. L'URL è stato 404 per me quando ho fatto il commento. Sembra funzionare ora. Non importa.
BradLaney,

9

Questa particolare versione di netcat ha un bug. Fino a quando non c'è una soluzione, l'unica cosa che puoi fare è eseguire il downgrade a una versione precedente - sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64dovrebbe fare il trucco.


1
Non yumavere un argomento che può effettuare il downgrade a una versione specifica di un pacchetto senza prima disinstallazione?
Kasperd,

Fantastico, ma non sono stato in grado di effettuare il downgrade. Yum dice che nessun pacchetto è disponibile (sia installcon la versione specifica che con il downgradecomando). Ho anche provato a cercare quel file rpm e non lo ha ancora trovato.
Ilya I,

4

Rispondere alla domanda:

  1. SÌ, è necessario il downgrade in modo che nc possa ascoltare. e per quanto riguarda gli altri commenti:

a) -p non dovrebbe essere usato in modalità di ascolto. dalla pagina man di nc:

-l Usato per specificare che nc dovrebbe essere in attesa di una connessione in arrivo piuttosto che avviare una connessione a un host remoto. È un errore usare questa opzione insieme alle opzioni -p, -s o -z.

b) il downgrade può essere eseguito in un solo passaggio, il comando yum downgrade funziona con l'URL del pacchetto:

$ 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

0
# nc -l -p 1234

Puoi ascoltare su quella porta usando esplicitamente -pflag:

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

Il problema era sulla falsariga di nctrattare la 1234 come porta di destinazione (nonostante fosse in esecuzione in modalità di ascolto) e di provare ad ascoltare sulla porta 0 (che produceva quello strano messaggio). Il passaggio esplicito -pfunziona attorno ad esso.


Ho provato questo su Centos 6 e non ha funzionato usando la versione nc-1.84-24. La correzione era il downgrade alla versione nc-1.84-22 secondo la risposta accettata.
Criggie,

quella versione non consente l'uso di -p con -l.
andrej,

-3

installa nmap:

yum installa nmap

provare:

ncat -l 1234


Leggi la domanda e le risposte già fornite per sapere perché la tua risposta non è sufficiente in quel caso particolare.
Sven
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.