Testiranje konekcije
Kada mreža ne radi kako treba, trebaju ti alati koji otkrivaju gde je problem: da li je host uopšte dostupan, koji servisi slušaju na kojim portovima, i kojim putem putuju paketi. Linux nudi bogat skup dijagnostičkih alata za upravo to.
ping — da li je host dostupan?
ping šalje ICMP echo pakete na zadatu adresu i meri vreme povratka. To je najbrži način da proveris da li je udaljeni host dosupan i kolika je kašnjenje (latencija):
ping google.com
PING google.com (142.250.185.46) 56(84) bytes of data.
64 bytes from 142.250.185.46: icmp_seq=1 ttl=118 time=12.4 ms
64 bytes from 142.250.185.46: icmp_seq=2 ttl=118 time=11.9 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
Korisne opcije:
ping -c 4 8.8.8.8 # Pošalji tačno 4 paketa, pa stani
ping -i 0.5 192.168.1.1 # Šalji paket svake 0.5 sekunde
ping -q -c 5 google.com # Tihi mod — prikaži samo statistiku
Napomena: Neki hostovi blokiraju ICMP pakete iz bezbednosnih razloga. Ako
pingne prolazi, to ne znači nužno da je host nedostupan — možda samo blokira ping.
curl — HTTP zahtevi
curl je moćan alat za prenos podataka preko raznih protokola, najčešće HTTP i HTTPS. Izuzetno je koristan za testiranje API-ja, preuzimanje fajlova i pregled HTTP odgovora.
Osnovna upotreba
curl https://example.com
Ispisuje HTML sadržaj stranice na standardni izlaz.
Preuzimanje fajlova sa -o
curl -o stranica.html https://example.com
Opcija -o (output) čuva odgovor u navedeni fajl umesto da ga ispisuje.
curl -O https://example.com/fajl.zip
Opcija -O (veliko slovo) čuva fajl pod originalnim imenom iz URL-a.
Prikaz HTTP zaglavlja sa -I
curl -I https://example.com
Šalje HEAD zahtev i prikazuje samo zaglavlja odgovora — korisno da vidiš status kod, tip sadržaja i druge metapodatke bez preuzimanja celog sadržaja:
HTTP/2 200
content-type: text/html; charset=UTF-8
content-length: 1256
server: ECS (dcb/7F83)
Ostale korisne opcije
curl -v https://example.com # Verbose — prikaži sve detalje zahteva i odgovora
curl -L https://example.com # Prati preusmeravanja (redirects)
curl -u korisnik:lozinka http://... # HTTP Basic autentikacija
wget — preuzimanje fajlova
wget je specijalizovan za preuzimanje fajlova, sa podrškom za nastavak prekinutih preuzimanja i rekurzivno preuzimanje web sajtova:
wget https://example.com/fajl.zip
Fajl se automatski čuva u trenutnom direktorijumu pod originalnim imenom.
wget -O moj-fajl.zip https://example.com/fajl.zip # Sačuvaj pod drugim imenom
wget -c https://example.com/veliki-fajl.iso # Nastavi prekinuto preuzimanje
wget -q https://example.com/fajl.zip # Tihi mod bez ispisa
curlvswget:curlje bolji za interaktivno testiranje i rad sa API-jem.wgetje bolji za preuzimanje fajlova, posebno velikih, jer podržava nastavak preuzimanja.
traceroute — putanja paketa
traceroute prikazuje svaki čvor (ruter) kroz koji paket prolazi na putu do odredišta. Koristan je za dijagnozu gde tačno dolazi do problema u mreži:
traceroute google.com
traceroute to google.com (142.250.185.46), 30 hops max
1 192.168.1.1 1.2 ms 1.1 ms 1.0 ms # lokalni ruter
2 10.0.0.1 5.4 ms 5.2 ms 5.1 ms # ISP gateway
3 172.16.3.1 10.1 ms 10.3 ms 9.9 ms
4 142.250.185.46 12.4 ms 12.1 ms 12.0 ms # odredište
Svaki red je jedan "skok" (hop). Zvezdice (* * *) znače da ruter ne odgovara na probe — to je normalno za mnoge rutere koji filtriraju UDP/ICMP saobraćaj.
traceroute -n google.com # Ne razrešavaj IP adrese u imena (brže)
ss — statistika soketa
ss (socket statistics) je moderna zamena za netstat. Prikazuje aktivne mrežne veze i koji portovi su otvoreni na sistemu.
Prikaz listening portova
ss -tlnp
Opcije:
-t— TCP soketi-l— samo listening (oni koji čekaju konekcije)-n— prikaži brojeve portova, ne nazive servisa-p— prikaži koji proces drži soket
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=312))
LISTEN 0 5 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=445))
LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=567))
Iz ovog ispisa vidimo:
- Port 22 — SSH server sluša na svim interfejsima
- Port 80 — nginx web server sluša na svim interfejsima
- Port 5432 — PostgreSQL baza sluša samo na
localhost(nije dostupna spolja)
Ostale korisne kombinacije
ss -an # Sve konekcije (i TCP i UDP), numerički prikaz
ss -tnp # Sve aktivne TCP konekcije sa procesima
ss -u -l # UDP listening portovi
ss -s # Rezime statistike po tipovima soketa
Praktičan primer dijagnostike
Pretpostavimo da web aplikacija ne radi. Evo redosled koraka:
# 1. Da li je server uopšte dostupan?
ping -c 3 192.168.1.50
# 2. Da li server sluša na portu 80?
ss -tlnp | grep :80
# 3. Da li HTTP odgovara?
curl -I http://192.168.1.50
# 4. Ako ne možemo da dođemo do servera, gde je problem?
traceroute 192.168.1.50
Ovim redosledom sistematski suziš problem — od fizičke dostupnosti, preko aktivnih servisa, do aplikacijske komunikacije.
Rezime komandi
| Komanda | Opis |
|---|---|
ping host |
Proveri dostupnost hosta |
ping -c N host |
Pošalji tačno N paketa |
curl URL |
Preuzmi sadržaj URL-a |
curl -o fajl URL |
Sačuvaj u fajl |
curl -I URL |
Prikaži samo HTTP zaglavlja |
wget URL |
Preuzmi fajl |
traceroute host |
Prikaži putanju paketa do hosta |
ss -tlnp |
Prikaži listening TCP portove sa procesima |