![Netcat - 如何使用 IPv6 地址监听 TCP 端口?](https://linux22.com/image/137285/Netcat%20-%20%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20IPv6%20%E5%9C%B0%E5%9D%80%E7%9B%91%E5%90%AC%20TCP%20%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我正在使用最新版本的 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 -
答案1
答案2
我相信 ipv4 和 ipv6 的功能实际上是由于存在多个实现(分叉)或完全不同的版本而造成混淆的结果。如果您进行搜索,您会偶然发现提及nc6
.这个实现似乎是在基于 BSD 的发行版中。
我会尝试nc6
在您的特定发行版上安装并运行它,而不是nc
为了支持 ipv6。
进一步的研究
我找到了这个提交日期为 2018-01-11 - 添加 IPv6 补丁这显然是将 IPv6 功能添加回您所说的较新的网络猫的版本。
笔记:我只能在我的系统上访问 nc 7.50,正如您所描述的,它支持-4
和-6
.
我怀疑你所认为的 netcat 的新版本实际上是一个更旧的版本:http://nc110.sourceforge.net/。
如果您想要各种实现的详尽列表,可以在维基百科关于 Netcat 的问题。
netcat 的原始版本是一个 Unix 程序。最后一个版本 (1.10) 于 1996 年 3 月发布。1
在大多数 Linux 发行版上,大多数人使用的是 GNU netcat 或 NMAP 版本:
有几种实现方式POSIX系统,包括从头开始重写,例如GNU网猫[5]或者开放BSD网猫,6后者支持 IPv6 和传输层安全协议。 OpenBSD版本已经移植到自由BSD根据7和 Windows/Cygwin。8Mac 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