我正在尝试对两个已对等连接的 Azure VNET 进行故障排除。我们将它们称为 VNET A 和 B。VNET A 中的 VM 在不同端口上运行着多个服务。我正尝试从 VNET B 中的 VM 访问它们。
我观察到以下行为:
nc -vz vm-in-host-a.something.com 11294
Connection to vm-in-hosta.something.com 11294 port [tcp/*] succeeded!
nc -vz vm-in-host-a.something.com 11291
nc: connect to vm-in-host-a.something.com 11291 (tcp) timed out: Operation now in progress
nc: connect to vm-in-host-a.something.com port 11291 (tcp) timed out: Operation now in progress
nc: connect to vm-in-host-a.something.com 11291 (tcp) timed out: Operation now in progress
接下来我尝试以下操作:
usr/sbin/traceroute -I -4 -p 11294 vm-in-host-a.something.com
traceroute to vm-in-host-a.something.com (10.225.16.6), 30 hops max, 60 byte packets
1 * * *
2 10.225.16.6 (10.225.16.6) 150.447 ms 150.485 ms 150.363 ms
最后,以下内容:
/usr/sbin/traceroute -I -4 -p 11291 vm-in-host-a.something.com
traceroute to vm-in-host-a.something.com (10.225.16.6), 30 hops max, 60 byte packets
1 * * *
2 10.225.16.6 (10.225.16.6) 213.935 ms 213.760 ms 213.609 ms
为什么 nc 会失败而 traceroute 会成功?有没有办法检查这个端口到底被阻止了?它是在 VNET A 还是 B 上被阻止,或者到底在哪个点被阻止?
答案1
您正在使用 ICMP 跟踪(通过指定-I
交换机),并且根据traceroute 手册页,-p
本例中的选项
指定初始 icmp 序列值(每次探测也会增加)。
因此traceroute
它不会连接到您认为的端口,而只是发出 ICMP 探测。要使用 TCP 端口进行扫描,您应该使用开关-T
而不是-I
。