Netcat无法以侦听模式启动


13

我正在使用CentOS 6.7(最终版)系统,当我尝试以nc侦听模式运行时,它会打印以下内容:

# nc -l 1234
nc: Protocol not available

端口未绑定。我也尝试了其他端口号。似乎已经报告了该错误:https : //access.redhat.com/solutions/1753753。不幸的是,它不是很详细。

包装信息:

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

我还有其他需要尝试的东西吗?


您使用的是哪个版本的nc?
珍妮·D

@JennyD我更新了帖子,请查看
Ilya I

1
不幸的是,唯一的解决方法是降级,如下所述。我也投票将这个问题移至Unix&Linux,因为它不完全与系统管理有关。这是一个很好的站点,有一些专家让我感到敬畏,所以请不要以为亲密的投票是因为您的问题不好或什么。
珍妮D

Answers:


17

我遇到了同样的问题。您可以这样解决:

# 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

请注意,该软件包适用于x86_64(64位)。如果需要i386(32位),则正确的是:

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

同时将rpm与-i和-U标志一起使用看起来很奇怪(但可以)。更标准的调用是-ivh或-Uvh。
dmourati '16

1
像魅力一样工作!
肖恩·郭

此路径不再有效
BradLaney

@BradLaney为什么不呢?
Eddie C.

@EddieC。当我发表评论时,URL对我来说是404。它现在似乎正在工作。没关系。
BradLaney

9

此特定版本的netcat有一个错误。在没有解决方案之前,您唯一可以做的就是降级到以前的版本- sudo yum remove nc-1.84-24.el6.x86_64; sudo yum install nc-1.84-22.el6.x86_64应该可以解决问题。


1
没有没有yum可以先降级到特定版本软件包的参数吗?
卡巴斯德(Kasperd),2015年

很好,但是我无法降级。Yum说没有可用的软件包(install带有特定版本和downgrade命令的软件包)。还尝试搜索该rpm文件,但尚未找到。
Ilya I

4

回答问题:

  1. 是的,需要降级,以便nc可以收听。至于其他评论:

a)在监听模式下不应该使用-p。来自nc手册页:

-l用于指定nc应该侦听传入的连接,而不是启动与远程主机的连接。将此选项与-p,-s或-z选项一起使用是错误的。

b)降级可以一步完成,yum downgrade命令可与包的URL一起使用:

$ 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

您可以通过显式使用-pflag 来监听该端口:

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

问题在于nc将1234当作目标端口(尽管在侦听模式下运行),并试图侦听端口0(产生了奇怪的消息)。-p围绕它的显式传递工作。


我在centos 6上尝试了此操作,但使用nc-1.84-24版本无法正常工作。解决方法是按照公认的答案降级到nc-1.84-22版本。
Criggie

该版本不允许将-p与-l一起使用。
andrej

-3

安装nmap:

百胜安装nmap

尝试:

ncat -l 1234


请阅读问题和已经提供的答案,以了解为什么在特定情况下您的答案不足。
斯文
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.