Zakaj se to zgodi
ping uporablja ICMP, SSH in HTTPS pa uporabljata vrata TCP. To je ločen promet in požarni zid lahko enega zavrže, drugega pa prepusti. Mnoga omrežja in varnostne skupine v oblaku privzeto blokirajo ICMP echo. Manjkajoči odgovor zato ne pomeni, da strežnik ne deluje, odgovor pa ne dokazuje, da njegove storitve delujejo.
Preverite storitev, ne ping
Preverite vrata in protokole, ki jih res potrebujete. Če ti preizkusi uspejo, je strežnik dosegljiv za te storitve, neuspešen ping pa kaže le na filter nekje na poti.
nc -vz -w 5 server.example 22
nc -vz -w 5 server.example 443
curl -sSI https://server.example/Sledite poti s TCP
Klasični traceroute lahko ob filtriranju ICMP ali UDP pokaže le zvezdice. S TCP na odprta vrata lahko pogosto pridete dlje. To zahteva root, traceroute pa boste morda morali najprej namestiti, saj ga minimalni sistemi ne vključujejo.
sudo traceroute -T -p 443 server.examplePoiščite filter na svojem strežniku
Če upravljate strežnik, preverite njegov požarni zid in nastavitev jedra, ki prezre zahteve echo. Upoštevajte, da je blokada lahko tudi zunaj strežnika, v varnostni skupini ali usmerjevalniku, in da ponudnik lahko filtrira ICMP v svojem omrežju, ne da bi videli pravilo.
sysctl net.ipv4.icmp_echo_ignore_all
sudo nft list ruleset | grep -i icmp
sudo ufw status verboseKdaj blokiran ICMP povzroča napake
Blokiranje echo je večinoma neškodljivo, blokiranje vsega ICMP pa ni. Odkrivanje MTU poti je odvisno od sporočil o prevelikih paketih. Brez njih majhne izmenjave delujejo, velike pa obstanejo, na primer prijava SSH uspe, nato pa povezava obstane pri obsežnem izpisu. IPv6 je še bolj odvisen od ICMPv6. Drugi ukaz v Linux preveri pot za MTU 1500 bajtov.
ip route get 192.0.2.10
ping -M do -s 1472 -c 3 192.0.2.10Primerjava v CH-J Server Manager
Server Diagnostics izvaja ping s sistemskim orodjem brez root, poleg ločenih preizkusov TCP, identifikacije SSH, HTTP in TLS, zato lahko neuspešen ping presodite v kontekstu. Neuspešen ping tu pomeni, da ni prispel odgovor. Ne pove, kje je bil paket zavržen, in tudi traceroute morda ne bo odgovoril na to vprašanje.