Doug McK asked:
I’ve been trying to debug an issue on our servers and Im confused by this response from netcat. Can anyone explain why Im getting these 2 contradictory messages when checking to see if a port is working? Is it failing to connect via TCP and then succeeding with some other method (*)?
[email protected]:/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 results
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
My answer:
This is happening because your daemon is only listening on IPv4.
IPv6 is the default protocol, so if a given hostname has both IPv4 and IPv6 addresses, the IPv6 address is always tried first.
In your case, localhost
has the IPv4 address 127.0.0.1
and the IPv6 address ::1
. But your daemon is only listening on 127.0.0.1
.
So, when nc
tries to connect to localhost
it first connects to ::1
, finds nothing is listening, and returns Connection refused
. It then tries to connect to 127.0.0.1
and finds your daemon.
View the full question and any other answers on Server Fault.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.