**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受回答。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
5年前关闭。
Improve this question的
我已经创建了一个Linux Azure VM。我想从它发送traceroute到我的家庭IP地址。然而,traceroute在每一跳上都会超时。我已经将VM配置为具有公共静态IP地址。并为所有端口设置入站和出站规则。
有人知道为了成功发送traceroute还需要配置什么吗?
一个有趣的事实是,tracerouts在Windows Server Azure VM中成功,但在Linux Ubuntu 16.04中却没有成功。
在这两种情况下,VM都连接了静态IP:Linux和Windows。
还有一个细节:在Windows Azure VM上,前5个跃点不响应,但其他跃点会响应。在Linux Azure VM上,每个跃点都不响应。
2条答案
按热度按时间0aydgbwb1#
Jason Ye - MSFT的信息是正确的,但他的回答实际上并没有回答你的问题。
Traceroute无法在Azure上运行,因为Azure默认情况下为blocks all ICMP traffic。由于traceroute通过从每个跃点接收一个HTTP数据包(HTTP类型11 -生存时间过期)来识别跃点,因此您看不到任何跃点。
这也是为什么ping无法从Internet连接到Azure中的计算机的原因。
目前无法在Azure上允许类型11的服务器。这意味着您无法查看Azure VM的每个跃点。
但是,您可以将Azure门户中的入站端口规则修改为“允许路由”。这确实允许路由类型3(“目标不可达”)以及路由类型0和8(ping消息,更具体地说是echo请求和echo回复)。启用此选项将允许您ping主机并查看traceroutes上的最后一跳。
j2qf4p5b2#
因为
tracert
和traceroute
的工作方式不同。在Windows中,
tracert
基于线程,我们可以使用tracert来测试从Azure VM到外部的连接。但是在Linux中,
traceroute
默认是基于UDP的,我们可以添加一个参数让traceroute在Linux上工作,但是在我的测试中,即使traceroute在Linux上工作,它和tracert也是不同的。字符串
作为一种变通方法,我们可以使用其他工具来测试连接,例如,
tracepath