如何排查能 ping 通 但是端口访问不通的问题

问题

有时候我们会遇到这样的问题,ping 一个 IP 地址是 ok 的,但是 Telnet 端口就不通,而在其他环境测试是 ok的,那么怎么判断是哪里出了问题呢?

这个时候我们可以使用 traceroute 来测试,但是默认 traceroute 是发送 ICMP 包的。因此我们要指定其使用 tcp 协议并指定要检测的端口,具体如下

traceroute -n -T -p [port] ip

-n 直接使用 IP 地址
-T 使用 tcp 协议
-p 指定端口
ip 需要检测的目标 IP

比如说我们测试,下面这个图就说明这个目标 IP 的 80 端口是可达的。

但是下图到第 9 跳124.160.189.226 就不通了。说明从这一跳后面 80端口就被干掉了。而这一跳是联通的,因此需要反馈联通运营商确认下。

结果

果然是被杭州联通拉黑了,导致无法访问,但是其他网络,比如电信是没问题的。