CH-J Server Managerspráva serverů přes SSH
Menu
Všechny návody a články →

ping selhává, ale SSH a HTTPS fungují: proč a je to problém?

Proč může server ignorovat ping a přesto normálně fungovat, jak přímo otestovat služby a kdy blokované ICMP způsobuje skutečné poruchy.

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

Hledejte 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 verbose

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

Porovná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ěď.

Podrobná dokumentace

RFC 4890: ICMPv6 filtering →

man: ping →

Biometrické odemykání a zabezpečení →