2017-03-16 105 views
1

我已經創建了一個Linux Azure虛擬機。我想從它發送跟蹤路由到我的家庭IP地址。然而,traceroute每跳都會超時。 我已經配置虛擬機有公共靜態IP地址。 並有所有端口的入站和出站規則。是否可以從Linux Azure VM發送跟蹤路由?

有誰知道需要以成功發送路由跟蹤配置有還有什麼?

一個有趣的事實是,路由跟蹤從Windows Server Azure的VM成功,但不能從Linux操作系統Ubuntu 16.04。

虛擬機在兩種情況下都有一個靜態IP:Linux和Windows。

一個更多的細節:在Windows Azure虛擬機上,首先5跳不回覆,但其他人做。在Linux Azure VM上,每一跳都不回答。

回答

1

因爲tracert並以不同的方式traceroute工作。
在Windows中,tracert基於ICMP,我們可以使用tracert命令測試從Azure的虛擬機與外部的連接。
但在Linux中,traceroute是基於UDP 通過默認。我們可以添加一個參數來使ICMP上的traceroute工作,但在我的測試中,即使traceroute在ICMP中工作,tracert中的不同也是如此。

[email protected]:~# 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

+0

謝謝傑森。 Tracepath確實給出了一些結果。是的,前幾個跳都沒有回覆,但這與Windows Azure虛擬機的行爲一致。 –

+0

我想知道如果你有一些解釋,爲什麼通常traceroute不起作用(所有啤酒花不答覆)。 –

+0

@MaksymBondarenko看起來,其中一個路由器阻塞了'type 11(TTL-expired)',所以我們無法找到路由器的中間,但可以看到數據包到達了最終目的地。 –

1

Jason Ye - MSFT的信息是正確的,但他的回答並沒有真正回答你的問題。

Traceroue不會在Azure上,因爲Azure的工作,在默認情況下blocks all ICMP traffic。由於traceroute通過從每一跳接收到一個ICMP數據包(ICMP生存時間到期)來標識跳數,因此您看不到任何跳數。

這與Ping無法從Internet上運行到Azure內的計算機的原因相同。

要變通的話,你可以give your VM an instance IP address

+0

謝謝麥芽!我忘記了注意到靜態IP實際上已被分配給Azure Linux和Windows VM。沒有靜態IP,即使在Windows上,traceroute也不起作用。 目前還不是很清楚爲什麼traceroute命令在從Linux發送每一跳時超時。 我最終使用CAIDA的Scamper:https://www.caida.org/tools/measurement/scamper/。 Scamper運作良好。 –