 Autor: [Monika Wojciechowska](/autorzy/monika-wojciechowska) Specjalistka SEO i treści webowych · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Wireshark i tcpdump

# 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 user@vps.example.com
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 user@vps.example.com:/var/tmp/capture.pcap ~/Downloads/

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

# LUB streaming bezpośrednio (bez pliku pośredniego)
ssh user@vps.example.com "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.

Contabo

VPS z root access — uruchomisz tcpdump i złapiesz dowolny ruch sieciowy

VPS Root

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikrus

Tani VPS do nauki analizy pakietów i testowania capture w realnym środowisku

Dev/Test

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

LH.pl

Hosting z dostępem do logów nginx — debugowanie bez potrzeby tcpdump

Managed

[Aktywuj rabat →](/out/lh-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/lh-pl)

## Powiązane strony

-   [Fail2ban — konfiguracja VPS](/baza-wiedzy/fail2ban-konfiguracja-vps)
-   [Bezpieczeństwo VPS — checklist](/baza-wiedzy/bezpieczenstwo-vps-checklist)
-   [ELK Stack — logi serwera](/baza-wiedzy/elk-stack-logi-serwera)
-   [Wszystkie artykuły](/baza-wiedzy/)