linuxazuretraceroute

Is it possible to send traceroutes from Linux Azure VM?


I have created a Linux Azure VM. And I want to send traceroutes from it to my home ip address. However traceroute times out on every hop. I have configured the VM to have public static IP address. And to have inbound and outbound rules for all ports.

Does anybody know what else needs to be configured there in order to successfully send a traceroute?

An interesting fact is that traceroutes succeed from Windows Server Azure VM, but not from Linux Ubuntu 16.04.

The VM has a static IP attached in both cases: Linux and Windows.

One more detail: On Windows Azure VM first 5 hops do not reply, but other ones do. On Linux Azure VM every hop doesn't reply.


Solution

  • Because tracert and traceroute work in different ways.
    In windows, tracert is based on ICMP, we can use tracert to test connection from Azure VM to the outside.
    But in Linux, traceroute is based on UDP by default. we can add a parameter to make traceroute work on ICMP, but in my test, even if traceroute working in ICMP, it is different from 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
    

    As a workaround, we can use other tools to test the connection, for example, tracepath