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

bas*_*bin 19 linux netcat

我正在使用最新版本的 netcat ( v1.10-41.1),它似乎没有 IPv6 地址的选项(就像-6旧版本的nc)。

如果我输入nc -lvnp 2222并检查监听端口netstat -punta,服务器似乎只监听2222IPv4 地址的端口:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  
Run Code Online (Sandbox Code Playgroud)

tcp6 不活跃,例如,我的 apache2 服务器:

tcp6       0      0 :::80                   :::*                    LISTEN      -
Run Code Online (Sandbox Code Playgroud)

A.B*_*A.B 23

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

  • netcat-traditional 1.10-41 不支持 IPv6 的原始版本:可能是您安装的。
  • netcat6旨在提供 IPv6(旧稳定,已被取代)。
  • netcat-openbsd 1.130-3 。是否支持 IPv6。
  • ncat 7.70+dfsg1-3 可能有点新,因为不是在 Debian 稳定版中,由nmap提供,确实支持 IPv6。

我会选择 openbsd 之一。每个版本的语法可能略有不同,所以要小心。

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

  • 惊人的。感谢您推荐 `socat` 工具。它显然有更多选择,以下内容:`socat tcp6-listen:2222` 完成了这项工作。 (2认同)
  • @bashbin 但它的语法有点冗长。如果您想在服务器(socat 命令)首先断开连接时连续使用它两次,那将是 `socat tcp6-listen:2222,reuseaddr -`(或者可能是 `reuseport`)。 (2认同)