Traceroute works but nc fails - Where is my port being blocked?

Solution 1:

You are using ICMP tracing (by specifying the -I switch), and, according to the traceroute man page, the -p option in this case

specifies the initial icmp sequence value (incremented by each probe too).

So traceroute does not connect to the port you think it does, it simply sends out ICMP probes. To use a TCP port for scanning, you should use the -T switch instead of -I.