Netcat-如何使用IPv6地址在TCP端口上侦听?


13

我正在使用netcat(v1.10-41.1)的最新版本,该版本似乎没有用于IPv6地址的选项(与-6的旧版本中的一样nc)。

如果输入nc -lvnp 2222并使用来检查监听端口netstat -punta,则服务器似乎2222仅在监听IPv4地址的端口上:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  

tcp6无效,例如我的apache2服务器:

tcp6       0      0 :::80                   :::*                    LISTEN      -

Answers:


17

在Debian上可以看到,至少有3或4种不同的netcat实现:

我去买openbsd。每个版本的语法可能都略有不同,因此请注意。

顺便说一句:socat是一个比netcat更好的工具,能够做更多的事情。你应该试试看!


2
太棒了 感谢您推荐该socat工具。显然,它还有更多选择,以下是:socat tcp6-listen:2222做这项工作。
bashbin '18

2
@bashbin,但语法更详细。如果要在服务器(socat命令)首先断开连接时连续两次使用它,则可能是socat tcp6-listen:2222,reuseaddr -(或者可能是reuseport)。
AB

4

我相信ipv4和ipv6的功能实际上是由于存在多个实现(分支)或完全不同的版本而造成的混乱。如果您进行搜索,则会偶然发现的信息nc6。这种实现似乎在基于BSD的发行版中。

我会尝试nc6在您的特定发行版上安装并运行它,而不是nc为ipv6提供支持。

进一步的研究

我能够找到日期为2018年1月11日的提交,添加了IPv6补丁,该补丁显然是将IPv6功能重新添加到您所称的较新版本的netcat中。

注意:我只能在系统上访问nc 7.50,并且正如您所描述的,它同时支持-4-6

我怀疑您认为netcat的更新版本实际上是一个较旧的版本:http : //nc110.sourceforge.net/

如果您需要各种实现的详尽列表,可以在Wikipedia有关Netcat的问题中找到

netcat的原始版本是Unix程序。最新版本(1.10)于1996年3月发布。1

在大多数Linux发行版中,大多数使用GNU netcat或NMAP版本:

POSIX系统上有多种实现,包括从头开始重写,例如GNU netcat [5]OpenBSD netcat,其中6支持IPv6和TLS。OpenBSD版本已被移植到FreeBSD base 7和Windows / Cygwin。8 Mac OS X自OSX 10.13起安装了netcat,或者用户可以使用MacPorts安装变体。[9] 还有可用的Microsoft Windows版本的netcat。[10]

例如,在CentOS 7.x上:

$ nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

$ rpm -qf /bin/nc
nmap-ncat-6.40-13.el7.x86_64
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.