Prečo sa to deje
ping používa ICMP, zatiaľ čo SSH a HTTPS používajú TCP porty. Ide o odlišnú prevádzku a firewall môže jednu zahadzovať a druhú prepúšťať. Mnohé siete a bezpečnostné skupiny v cloude predvolene blokujú ICMP echo. Chýbajúca odpoveď preto neznamená, že server nefunguje, a odpoveď nedokazuje, že fungujú jeho služby.
Testujte službu, nie ping
Skontrolujte porty a protokoly, ktoré skutočne potrebujete. Ak tieto testy uspejú, server je pre dané služby dostupný a neúspešný ping iba ukazuje na filter niekde na trase.
nc -vz -w 5 server.example 22
nc -vz -w 5 server.example 443
curl -sSI https://server.example/Sledujte trasu pomocou TCP
Klasický traceroute môže pri filtrovaní ICMP alebo UDP zobrazovať iba hviezdičky. S TCP na otvorený port sa často dostanete ďalej. Vyžaduje to root a traceroute možno bude potrebné najprv nainštalovať, pretože minimálne systémy ho neobsahujú.
sudo traceroute -T -p 443 server.exampleHľadajte filter na svojom serveri
Ak server spravujete, skontrolujte jeho firewall a nastavenie jadra, ktoré ignoruje požiadavky echo. Pamätajte, že blokovanie môže byť aj mimo servera, v bezpečnostnej skupine alebo smerovači, a poskytovateľ môže vo svojej sieti filtrovať ICMP bez toho, aby ste videli príslušné pravidlo.
sysctl net.ipv4.icmp_echo_ignore_all
sudo nft list ruleset | grep -i icmp
sudo ufw status verboseKedy blokované ICMP spôsobuje poruchy
Blokovanie echo je väčšinou neškodné, blokovanie celého ICMP však nie. Zisťovanie MTU trasy závisí od správ o príliš veľkých paketoch. Bez nich malé prenosy fungujú a veľké sa zaseknú, napríklad keď prihlásenie cez SSH uspeje, ale následne sa zasekne pri veľkom výstupe. IPv6 závisí od ICMPv6 ešte viac. Druhý príkaz v Linuxe testuje trasu pre MTU 1500 bajtov.
ip route get 192.0.2.10
ping -M do -s 1472 -c 3 192.0.2.10Porovnanie v CH-J Server Manager
Server Diagnostics spúšťa ping prostredníctvom systémového nástroja bez root spolu so samostatnými testami TCP, identifikácie SSH, HTTP a TLS, takže neúspešný ping možno posúdiť v kontexte. Neúspešný ping tu znamená, že neprišla žiadna odpoveď. Nehovorí, kde sa paket zahodil, a ani traceroute na to nemusí dať odpoveď.