澄清 netcat 结果

澄清 netcat 结果

我一直在尝试调试我们服务器上的一个问题,但 netcat 的这个响应让我感到困惑。有人能解释一下为什么我在检查端口是否正常工作时收到这 2 条相互矛盾的消息吗?是不是通过 TCP 连接失败,然后通过其他方法成功了 (*)?

ubuntu@1-2-3-4:/var/log$ nc -vz localhost 7777
nc: connect to localhost port 7777 (tcp) failed: Connection refused
Connection to localhost 7777 port [tcp/*] succeeded!

IP4/6 结果

nc -vz4 localhost 7777
Connection to localhost 7777 port [tcp/*] succeeded!
nc -vz6 localhost 7777
nc: connect to localhost port 7777 (tcp) failed: Connection refused

答案1

发生这种情况是因为您的守护进程仅在 IPv4 上监听。

IPv6 是默认协议,因此如果给定的主机名同时具有 IPv4 和 IPv6 地址,则始终首先尝试 IPv6 地址。

在您的例子中,localhost有 IPv4 地址127.0.0.1和 IPv6 地址::1。但您的守护进程只监听127.0.0.1

因此,当nc尝试连接到时,localhost它首先连接到::1,发现没有任何人在监听,然后返回Connection refused。然后它尝试连接127.0.0.1并找到您的守护进程。

相关内容