澄清netcat的结果

我一直在试图debugging我们的服务器上的一个问题,我感到困惑,从netcat这个响应。 任何人都可以解释为什么林检查时看到一个端口是否正在工作,得到这两个矛盾的消息? 它是通过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 

发生这种情况是因为守护进程只在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并find您的守护进程。