CH-J Server Managerspráva serverov nad SSH
Menu
Všetky návody a články →

ping zlyháva, ale SSH a HTTPS fungujú: prečo a je to problém?

Prečo môže server ignorovať ping a pritom fungovať normálne, ako priamo otestovať služby a kedy blokované ICMP spôsobuje skutočné poruchy.

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.example

Hľ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 verbose

Kedy 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.10

Porovnanie 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ď.

Podrobná dokumentácia

RFC 4890: ICMPv6 filtering →

man: ping →

Biometrické odomknutie a bezpečnosť →