Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Wireshark i tcpdump — analiza ruchu sieciowego krok po kroku

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Networking

Gdy aplikacja nie odpowiada, logi są puste, a curl zwraca "connection reset by peer" — trzeba zobaczyć co naprawdę idzie przez sieć. tcpdump i Wireshark to od 20 lat standardowy duet: tcpdump do łapania pakietów na serwerze, Wireshark do ich analizy na laptopie. Oto przewodnik, który pozwoli Ci rozgryźć każdy problem sieciowy.

Instalacja tcpdump na VPS

Na większości dystrybucji tcpdump jest dostępny w repozytoriach — instalacja to jedna komenda. Potrzebujesz uprawnień root lub sudo:

# Debian/Ubuntu
sudo apt update
sudo apt install tcpdump

# RHEL/CentOS/Rocky
sudo dnf install tcpdump

# Sprawdź wersję
tcpdump --version

# Lista interfejsów sieciowych (eth0, ens3, lo, docker0)
sudo tcpdump -D

Na Wiresharka dla Windows/macOS/Linux idź na wireshark.org/download.html. Instalator zawiera też tshark (CLI wersja Wiresharka) oraz dumpcap.

Podstawowe komendy tcpdump

# Cały ruch na eth0 (Ctrl+C żeby przerwać)
sudo tcpdump -i eth0

# Bez DNS lookupów (szybciej, czytelniej)
sudo tcpdump -i eth0 -n

# Z rozmiarem pakietów i timestampem w ms
sudo tcpdump -i eth0 -nn -tttt

# Tylko pierwsze 100 pakietów
sudo tcpdump -i eth0 -c 100

# Zapis do pliku pcap (do analizy w Wireshark)
sudo tcpdump -i eth0 -w capture.pcap

# Rotacja plików (co 100MB, max 5 plików)
sudo tcpdump -i eth0 -w capture.pcap -C 100 -W 5

# Odczyt zapisanego pliku
tcpdump -r capture.pcap -n

Filtry BPF — Berkeley Packet Filter

BPF to mini-język do filtrowania pakietów w kernelu — pakiety, które nie pasują do filtra, nie lądują nawet w user space. Dzięki temu tcpdump jest wydajny nawet na 1 Gbps. Filtry podajesz jako ostatni argument:

# Po adresie IP
sudo tcpdump -i eth0 -n host 10.0.0.5
sudo tcpdump -i eth0 -n src host 10.0.0.5
sudo tcpdump -i eth0 -n dst host 10.0.0.5

# Po porcie
sudo tcpdump -i eth0 -n port 443
sudo tcpdump -i eth0 -n tcp port 80
sudo tcpdump -i eth0 -n udp port 53

# Kombinacje (and, or, not)
sudo tcpdump -i eth0 -n 'host 10.0.0.5 and port 443'
sudo tcpdump -i eth0 -n 'src 10.0.0.5 or src 10.0.0.6'
sudo tcpdump -i eth0 -n 'not arp and not icmp'

# Sieć CIDR
sudo tcpdump -i eth0 -n net 192.168.1.0/24

# Tylko nowe połączenia TCP (flagi SYN bez ACK)
sudo tcpdump -i eth0 -n 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0'

# Tylko reset (RST) — debugowanie "connection reset"
sudo tcpdump -i eth0 -n 'tcp[tcpflags] & tcp-rst != 0'

Porównanie najczęstszych filtrów

Co chcesz złapać tcpdump (BPF) Wireshark (display filter)
Ruch HTTP tcp port 80 http
Ruch HTTPS tcp port 443 tls
Tylko DNS queries udp port 53 dns
Konkretny host host 1.2.3.4 ip.addr == 1.2.3.4
SYN packets (nowe TCP) tcp[13] = 2 tcp.flags.syn == 1 and tcp.flags.ack == 0
Tylko retransmisje (trudne w BPF) tcp.analysis.retransmission

Capture na serwerze, analiza na laptopie

Standardowy workflow na produkcji: Wireshark GUI na laptopie jest lżejszy od instalacji X11 na VPS. Łapiesz tcpdumpem, kopiujesz plik, otwierasz lokalnie:

# Na VPS — łap 1000 pakietów HTTPS do /var/tmp/capture.pcap
ssh [email protected]
sudo tcpdump -i eth0 -n -c 1000 -w /var/tmp/capture.pcap 'tcp port 443'

# Nadaj uprawnienia (tcpdump zapisał jako root)
sudo chown user:user /var/tmp/capture.pcap

# Na laptopie — pobierz plik
scp [email protected]:/var/tmp/capture.pcap ~/Downloads/

# Otwórz w Wireshark
wireshark ~/Downloads/capture.pcap

# LUB streaming bezpośrednio (bez pliku pośredniego)
ssh [email protected] "sudo tcpdump -i eth0 -n -w - 'tcp port 443'" \
  | wireshark -k -i -

Wireshark GUI — podstawy nawigacji

Po otwarciu pliku pcap Wireshark pokazuje trzy panele: lista pakietów (góra, każdy wiersz = 1 pakiet), drzewo protokołów (środek, warstwy OSI rozwinięte) i hex dump (dół, surowe bajty). Najważniejsze skróty i funkcje:

  • Display filter bar (Ctrl+/) — pole na górze do filtrowania już przechwyconych pakietów. Przykłady: http.request.method == "POST", tcp.port == 443, ip.src == 10.0.0.5.
  • Follow TCP Stream (PPM na pakiecie > Follow > TCP Stream) — pokazuje całą sesję TCP w jednym oknie, oddzielając żądanie od odpowiedzi kolorami. Must-have do debugowania HTTP.
  • Statistics > Conversations — lista wszystkich par IP:port z liczbą pakietów i bajtów. Szybko pokazuje kto gada z kim najwięcej.
  • Statistics > IO Graph — wykres pakietów w czasie. Widać latency spikes, microbursts, retransmisje.
  • Expert Info (Analyze > Expert Information) — automatyczny raport o błędach, ostrzeżeniach, retransmisjach, out-of-order.

Troubleshooting case study — HTTPS timeout

Klient zgłasza, że aplikacja "losowo" nie odpowiada. Sprawdzasz nginx logi — pusto. Odpalasz tcpdump i znajdujesz przyczynę w 5 minut:

# 1. Łap 30 sekund ruchu HTTPS od IP klienta
sudo tcpdump -i eth0 -n -w problem.pcap \
  'host 203.0.113.45 and tcp port 443' &
TCPDUMP_PID=$!
sleep 30
sudo kill $TCPDUMP_PID

# 2. Szybka analiza w CLI
tcpdump -r problem.pcap -n 'tcp[tcpflags] & tcp-rst != 0'
# Widać RST od serwera - coś zamyka połączenie

# 3. Otwórz w Wireshark i Follow TCP Stream
# Filtr: tcp.analysis.retransmission
# Jeśli widzisz retransmisje - problem z MTU lub firewall drop
# Jeśli widzisz RST po SYN - iptables/conntrack full
# Jeśli widzisz RST po HTTP request - timeout aplikacji

Best practices

  • Zawsze filtruj w tcpdump — nie łap całego ruchu na busy serwerze. Filtruj po host, port, protocol. Capture all pójdzie w GB w kilka sekund.
  • Używaj -w + analiza offline — pisanie do pliku jest szybsze niż wyświetlanie na ekranie (brak dekodowania).
  • Rotacja plików -C i -G — na długich capture używaj rotacji rozmiaru lub czasu, żeby nie zapełnić dysku.
  • Uważaj na prywatność — pcap zawiera hasła, tokeny, cookies. Trzymaj pliki w /var/tmp z prawami 600, kasuj po analizie, NIE commituj do git.
  • Dokumentuj problem — zawsze zapisz filtr, timestamp i co zaobserwowałeś. Za miesiąc nie będziesz pamiętać kontekstu.

Uwaga: Przechwytywanie ruchu innych użytkowników bez zgody może być nielegalne (RODO, ustawa o inwigilacji). Używaj tcpdump tylko na własnych serwerach i wyłącznie do debugowania.

Najczęstsze pytania

Czym różni się tcpdump od Wiresharka? +
tcpdump to narzędzie CLI do przechwytywania pakietów — działa na serwerze bez GUI, zapisuje do plików pcap. Wireshark to aplikacja graficzna do analizy pcap — ma kolorowy interfejs, dekoderzy protokołów, statystyki. Typowy workflow: uruchamiasz tcpdump na VPS przez SSH, zapisujesz capture.pcap, kopiujesz plik na laptopa (scp), otwierasz w Wiresharku. Oba używają tej samej biblioteki libpcap i rozumieją te same filtry.
Czy tcpdump można używać na hostingu współdzielonym? +
Nie. tcpdump wymaga uprawnień root (lub capability CAP_NET_RAW) do otwierania raw sockets — hosting współdzielony nie daje takiego dostępu. Jedynym sposobem jest VPS lub dedykowany serwer, gdzie masz pełne sudo. Na hostingu współdzielonym musisz polegać na logach aplikacji (nginx access.log, php-fpm.log) i narzędziach udostępnionych przez panel (cPanel/DirectAdmin).
Jak przechwycić tylko ruch HTTPS bez deszyfrowania? +
tcpdump pokaże same nagłówki TCP i zaszyfrowaną zawartość — to wystarczy do debugowania handshake TLS, certyfikatów, retransmisji. Użyj filtra "tcp port 443" żeby złapać tylko HTTPS. Jeśli musisz zobaczyć treść, potrzebujesz klucza prywatnego serwera i Wiresharka — w Edit > Preferences > Protocols > TLS dodajesz plik z kluczem RSA (tylko non-PFS). Dla TLS 1.3 i cipherów z forward secrecy musisz wyeksportować SSLKEYLOGFILE z klienta.
Jakie są najważniejsze filtry BPF dla tcpdump? +
Najczęściej używane: "host 10.0.0.5" (tylko do/od konkretnego IP), "port 80" (tylko HTTP), "src host x and dst port y" (kombinacje), "tcp[tcpflags] & tcp-syn != 0" (tylko pakiety SYN — nowe połączenia), "not arp and not icmp" (wyklucz szum), "net 192.168.1.0/24" (cała podsieć). BPF to język prosty ale potężny — dokumentacja: man pcap-filter. W Wireshark używasz innej składni (tcp.port == 80) ale koncepty są takie same.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.