我的目标是检查目标端口(MySQL 3306)是否能够连接。
首先,我尝试使用 telnet 但它显示No route to host
$ telnet dest.com 3306
Trying <dest_ip>...
telnet: Unable to connect to remote host: No route to host
但是,它可以与端口 80 连接。
$ telnet dest.com 80
Trying <dest_ip>...
Connected to dest.com.
Escape character is '^]'.
所以,我尝试了正常的traceroute,但目的地不可达。
$ traceroute dest.com
traceroute to dest.com (<dest_ip>), 30 hops max, 60 byte packets
1 172.16.101.1 (172.16.101.1) 0.283 ms 0.553 ms 0.345 ms
2 * * *
3 * * *
...
但是,当我尝试使用 traceroute -T -p 时,似乎可以到达目的地。
$ traceroute -T -p 3306 dest.com
traceroute to dest.com (<dest_ip>), 30 hops max, 60 byte packets
1 172.16.101.1 (172.16.101.1) 0.270 ms 0.374 ms 0.468 ms
2 <public_ip> (<public_ip>) ....
3 <public_ip2> (<pubice_ip2>) ...
4 ...
5 <dest_ip> (dest_ip) 4.144 ms !X 4.217 ms !X 3.996 !X
而且,当我尝试使用其他端口时,路线不同(仅一跳之遥)。
$ traceroute -T -p 80 dest.com
traceroute to dest.com (<dest_ip>), 30 hops max, 60 byte packets
1 172.16.101.1 (172.16.101.1) 0.327 ms 0.438 ms 0.568 ms
2 <dest_ip> (dest_ip) 0.711 ms 0.865 ms 0.974 ms
那么,我想知道如何traceroute -T -p
工作以及每个步骤中结果的原因是什么?