我正在使用最新版本的 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 -
在 Debian 上至少有 3 或 4 种不同的 netcat 实现:
我会选择openbsd。每个版本都可以有细微的不同语法,所以要小心。
顺便说一句:socat是一个比 netcat 做得更好的工具。你应该试试看!
我相信 ipv4 和 ipv6 的功能实际上是混淆了多个实现(分叉)或完全不同的版本的结果。如果您搜索,您会偶然发现
nc6
. 这个实现似乎在基于 BSD 的发行版中。我会尝试
nc6
在您的特定发行版上安装并运行它而不是nc
支持 ipv6。进一步的研究
我能够找到这个日期为 2018 年 1 月 11 日的提交——添加 IPv6 补丁,它显然将 IPv6 功能添加回你所谓的新版本的 netcat。
注意:我只能在我的系统上访问 nc 7.50,正如您所描述的,它同时支持
-4
和-6
.我怀疑你认为的 netcat 的新版本实际上是一个更旧的版本: http: //nc110.sourceforge.net/。
如果您想要各种实现的详尽列表,请参阅有关 Netcat 的维基百科问题。
在大多数 Linux 发行版上,GNU netcat 或 NMAP 版本似乎是大多数人使用的:
例如,在 CentOS 7.x 上: