Pokud jste se někdy snažili ověřit dostupnost virtuálního stroje, webové stránky nebo třeba cloudové služby v Azure, nejspíš jste zjistili, že příkaz Ping pro tento účel nejde použít. Cílový koncový bod na něj zkrátka nereaguje.
C:\PsTools>ping pingtest.cloudapp.net
Pinging pingtest.cloudapp.net [191.235.123.38] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 191.235.123.38:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Explicitní povolení protokolu ICMP ve firewallu daného stroje nepomůže, neboť Microsoft Azure blokuje ICMP už na load-balanceru. Tato blokace je oboustranná, takže neprojde ani ping zevnitř stroje někam do internetu (pro zajímavost: výjimkou je například Bing.com).
Řešením je ICMP obejít a použít ping na konkrétní port. Umí to utilita PsPing, která je součástí známého balíku Sysinternals a používá se takto:
C:\PsTools>psping pingtest.cloudapp.net:60261
PsPing v2.01 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
TCP connect to 191.235.123.38:60363:
5 iterations (warmup 1) connecting test:
Connecting to 191.235.123.38:60261 (warmup): 2.61ms
Connecting to 191.235.123.38:60261: 2.47ms
Connecting to 191.235.123.38:60261: 2.65ms
Connecting to 191.235.123.38:60261: 4.27ms
Connecting to 191.235.123.38:60261: 3.24ms
TCP connect statistics for 191.235.123.38:60261:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 2.47ms, Maximum = 4.27ms, Average = 3.16ms
Otevřené porty zjistíte například na management portále v konfiguraci virtuálního stroje, v případě Web Sites to budou 80 a 443.
Jen pro úplnost – omezení ICMP neplatí absolutně. Stroje zapojené do virtuální sítě na sebe vidí a mohou se pingovat dle libosti, stejně tak připojení přes VPN nebo ExpressRoute neblokuje protokol ICMP.