我创建了一个Linux Azure VM。我想将traceroutes从它发送到我的家庭IP地址。然而,traceroute在每一跳都超时。 我已将VM配置为具有公共静态IP地址。 并为所有端口提供入站和出站规则。
是否有人知道还需要配置哪些才能成功发送traceroute?
一个有趣的事实是,traceroutes从Windows Server Azure VM成功,但不是从Linux Ubuntu 16.04成功。
VM在两种情况下都附加了静态IP:Linux和Windows。
还有一个细节:在Windows Azure VM上,前5个跃点不会回复,但其他的则不会。在Linux Azure VM上,每一跳都不回复。
答案 0 :(得分:2)
Jason Ye - MSFT的信息是正确的,但他的答案实际上并没有回答你的问题。
自Azure以来,Traceroue无法在Azure上运行,默认情况下为blocks all ICMP traffic。由于traceroute通过从每个跃点接收ICMP数据包(ICMP生存时间到期)来识别跃点,因此您看不到任何跃点。
这就是为什么ping无法从Internet到Azure中的计算机工作的原因。
要解决此问题,您可以give your VM an instance IP address。
答案 1 :(得分:0)
因为tracert
和traceroute
以不同的方式工作
在Windows中,tracert
基于 ICMP ,我们可以使用tracert测试从Azure VM到外部的连接。
但在Linux中,traceroute
默认情况下基于 UDP 。我们可以添加一个参数来使traceroute在ICMP上工作,但在我的测试中,即使traceroute在ICMP中工作,它与tracert 不同。
root@ubuntu:~# traceroute -I 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 google-public-dns-a.google.com (8.8.8.8) 1.599 ms 1.593 ms 1.783 ms
作为解决方法,我们可以使用其他工具来测试连接,例如tracepath