Proč k tomu dochází
ping používá ICMP, zatímco SSH a HTTPS používají TCP porty. Jde o oddělený provoz a firewall může jeden zahazovat a druhý propouštět. Mnoho sítí a cloudových bezpečnostních skupin ve výchozím nastavení blokuje ICMP echo. Chybějící odpověď tedy neznamená, že server neběží, a odpověď nedokazuje, že jeho služby fungují.
Testujte službu, ne ping
Prověřte porty a protokoly, které skutečně potřebujete. Pokud testy uspějí, server je pro tyto služby dostupný a neúspěšný ping pouze ukazuje na filtr někde po cestě.
nc -vz -w 5 server.example 22
nc -vz -w 5 server.example 443
curl -sSI https://server.example/Sledujte trasu pomocí TCP
Klasický traceroute může při filtrování ICMP nebo UDP zobrazovat jen hvězdičky. S TCP na otevřený port se často dostanete dál. To vyžaduje oprávnění root a traceroute může být nutné nejprve nainstalovat, protože v minimálních systémech není obsažen.
sudo traceroute -T -p 443 server.exampleHledejte filtr na svém serveru
Pokud server spravujete, prověřte jeho firewall a nastavení jádra, které ignoruje požadavky echo. Pamatujte, že blokování může být i mimo server, v bezpečnostní skupině nebo směrovači, a že poskytovatel může ICMP filtrovat ve své síti, aniž byste viděli příslušné pravidlo.
sysctl net.ipv4.icmp_echo_ignore_all
sudo nft list ruleset | grep -i icmp
sudo ufw status verboseKdy blokované ICMP skutečně způsobuje poruchy
Blokování echo je většinou neškodné, blokování veškerého ICMP však ne. Zjišťování MTU trasy závisí na zprávách o příliš velkém paketu. Bez nich malé přenosy fungují a velké se zaseknou, například když přihlášení přes SSH uspěje, ale následně se zasekne při rozsáhlém výstupu. IPv6 závisí na ICMPv6 ještě více. Druhý příkaz v Linuxu testuje trasu pro MTU 1500 bajtů.
ip route get 192.0.2.10
ping -M do -s 1472 -c 3 192.0.2.10Porovnání v CH-J Server Manager
Server Diagnostics spouští ping pomocí systémového nástroje bez oprávnění root vedle samostatných testů TCP, identifikace SSH, HTTP a TLS, takže lze neúspěšný ping posoudit v souvislostech. Jeho selhání zde znamená, že nepřišla žádná odpověď. Neříká, kde byl paket zahozen, a ani traceroute na to nemusí dát odpověď.