Netcat - 如何使用 IPv6 地址监听 TCP 端口?

Netcat - 如何使用 IPv6 地址监听 TCP 端口?

我正在使用最新版本的 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

在 Debian 上至少有 3 或 4 种不同的 netcat 实现:

  • Netcat-传统1.10-41 不支持 IPv6 的原始版本:可能是您安装的版本。
  • 网猫6它是为了提供 IPv6(旧稳定,已被取代)而设计的。
  • netcat-openbsd1.130-3。支持IPv6。
  • 国家猫7.70+dfsg1-3 可能有点新,因为不在 Debian 稳定版中,由地图,确实支持IPv6。

我会选择 openbsd 。每个版本的语法可能略有不同,因此请小心。

顺便一提:索卡特是一个比 netcat 更好的工具,能够真正做更多的事情。你应该试试看!

答案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

相关内容