Hálózati hibakeresés: ping, traceroute, mtr, dig és curl

Ha egy weboldal vagy szerver nem érhető el, lassú, vagy csak egyes helyekről nem működik, néhány parancs segítségével gyorsan kideríthető, hol a hiba: a névfeloldásban (DNS), útközben a hálózatban, vagy magán a szerveren. A parancsok Linuxon és macOS-en a terminálban futnak; a Windows megfelelőket külön jelöljük.

ping: elérhető-e a gép?

ping -c 10 example.hu

A -c 10 tíz csomag után leállítja a mérést (Windows alatt a ping alapból négyet küld). Az összesítő sorból kiolvasható a csomagvesztés (packet loss) és a válaszidő.

  • Ha a ping válaszol, a gép elérhető a hálózaton.
  • Ha nem válaszol, az még nem jelenti, hogy a szerver nem működik: sok szerver tűzfala tiltja a ping (ICMP) csomagokat. Ilyenkor a lenti curl vagy nc paranccsal ellenőrizze a szolgáltatást.

dig: jó IP-címre mutat-e a domain?

Domain átköltöztetése vagy névszerver-váltás után a leggyakoribb hiba, hogy a domain még a régi IP-címre mutat.

dig +short example.hu A
dig +short www.example.hu A
dig +short example.hu MX
dig +short example.hu NS

Egy adott DNS szervertől is lekérdezheti a választ, így kiderül, hogy a változás mindenhol látszik-e már:

dig +short example.hu A @1.1.1.1
dig +short example.hu A @8.8.8.8

A dig csomagja AlmaLinuxon bind-utils, Ubuntun és Debianon dnsutils. Windows alatt az nslookup example.hu paranccsal kérdezhet le hasonlót. A DNS változások terjedéséről a Mi az a DNS propagáció? cikkben olvashat.

traceroute és mtr: hol akad el útközben?

A traceroute (Windows alatt tracert) kilistázza a csomagok útvonalát a szerverig, állomásonként (hop).

traceroute example.hu

Az mtr a ping és a traceroute ötvözete: minden állomásra sok csomagot küld, így az ideiglenes csomagvesztés is látszik. Hibabejelentéshez ezt javasoljuk.

mtr -rwc 100 example.hu
  • -r: jelentés (report) módban fut, és a végén kiírja az eredményt,
  • -w: nem rövidíti le a gépneveket,
  • -c 100: állomásonként 100 csomagot küld (kb. másfél perc).

Telepítése: sudo dnf install mtr vagy sudo apt install mtr-tiny. Windows alatt a pathping example.hu parancs vagy a WinMTR program ad hasonló eredményt.

Az eredmény értelmezése: ha egy köztes állomásnál csomagvesztés látszik, de az utána következő állomásoknál már nem, az nem hiba: sok router csak alacsony prioritással válaszol a mérőcsomagokra. Valódi problémára az utal, ha a csomagvesztés egy ponttól kezdve minden további állomáson, a célállomáson is megjelenik.

ss: figyel-e a szolgáltatás a szerveren?

Ha be tud lépni a szerverre, nézze meg, mely portokon fogad kapcsolatot:

sudo ss -tlnp

A kimenetben keresse a szolgáltatás portját (pl. :80, :443, :22, :3306). Ha a port nem szerepel a listában, a szolgáltatás nem fut; ellenőrizze a systemctl status paranccsal (lásd: Szolgáltatások kezelése systemctl paranccsal). Ha a port csak 127.0.0.1 címen figyel, kívülről nem érhető el.

nc és curl: elérhető-e a port kívülről?

Egy tetszőleges TCP port elérhetősége az nc paranccsal ellenőrizhető:

nc -zv example.hu 443
nc -zv mail.example.hu 587

Az nc csomagja AlmaLinuxon nmap-ncat, Ubuntun és Debianon netcat-openbsd. Ha a szerveren a szolgáltatás figyel, kívülről mégsem érhető el, valószínűleg a tűzfal zárja a portot (lásd: Hogyan állítsak be tűzfalat a VPS-emen?).

Webszerver esetén a curl a HTTP választ is megmutatja:

curl -I https://example.hu

A -I csak a fejléceket kéri le; az első sor a HTTP állapotkód (pl. HTTP/2 200 vagy HTTP/1.1 500). A kódok jelentéséről a HTTP hiba és állapotkódok cikkben olvashat. A -v kapcsolóval a kapcsolódás és az SSL egyeztetés részletei is látszanak.

Weboldal tesztelése DNS-váltás előtt

Költöztetéskor hasznos, ha az új szerveren lévő oldalt még a DNS átállítása előtt ki tudja próbálni. A --resolve kapcsolóval megadhatja, melyik IP-címre csatlakozzon a curl, a domain nevét pedig változatlanul küldi:

curl -I --resolve example.hu:443:203.0.113.10 https://example.hu

Mit küldjön el az ügyfélszolgálatnak?

Ha hálózati hibát jelent be, a gyors kivizsgáláshoz kérjük, küldje el:

  • a saját nyilvános IP-címét (amelyről a hiba jelentkezik),
  • a hiba pontos idejét, és hogy folyamatos vagy időszakos-e,
  • az mtr -rwc 100 <szerver> kimenetét a saját gépéről (Windows alatt a pathping vagy WinMTR eredményét),
  • ha be tud lépni a szerverre, az mtr -rwc 100 <az Ön IP-címe> kimenetét a szerverről is, mert a visszafelé vezető útvonal eltérhet.