Capturar trànsit de xarxa és una feina bàsica per a qualsevol administrador de sistemes, tant per depurar com per monitorar o resoldre problemes. En aquesta guia aprendràs a fer servir tcpdump, una eina potent i molt estesa per capturar i analitzar paquets de xarxa. Amb exemples pràctics, veurem com capturar i examinar trànsit IP, ICMP, ARP, broadcast, IPv6 i més.
Introducció a tcpdump
tcpdump és una eina de línia de comandes que permet capturar i analitzar paquets de xarxa en temps real. Serveix per inspeccionar el trànsit d’una interfície concreta, cosa molt útil per identificar problemes de connectivitat, latència o possibles atacs.
No ve instal·lada per defecte a la majoria de distribucions. La instal·les així:
sudo apt install tcpdump # Debian, Ubuntu
sudo dnf install tcpdump # Fedora, Rocky, Alma
Com que tcpdump llegeix directament de la interfície de xarxa, l’has d’executar amb sudo (o amb la capacitat CAP_NET_RAW). La comanda bàsica per capturar trànsit en una interfície i desar-lo en un fitxer és:
sudo tcpdump -i <interfície> -w <fitxer>
- -i: la interfície on es captura el trànsit. Als sistemes actuals ja no sol dir-se
eth0: amb el nomenclàtor predictible de systemd veuràs noms comenp3s0,ens33owlp2s0. Mira els que tens ambip link. També pots fer servirlo(bucle local) oany(totes les interfícies). - -w: desa el trànsit capturat en un fitxer per analitzar-lo després.
Per exemple, per capturar a la interfície enp3s0 i desar-ho a captura.pcap:
sudo tcpdump -i enp3s0 -w captura.pcap
Atura la captura amb Ctrl + C.
Ajustar la mida de captura (snaplen)
L’opció -s (snapshot length) controla quants bytes de cada paquet es capturen. A les versions modernes de tcpdump (4.0 i posteriors), si no indiques res es capturen fins a 262144 bytes per paquet, és a dir, el paquet sencer en la pràctica totalitat de casos. L’antic límit de 65535 bytes és cosa de versions velles.
- -s 1500: captura fins a 1500 bytes de cada paquet (útil si només vols les capçaleres i vols fitxers més petits).
- -s 0: equival a la mida per defecte (paquet complet).
sudo tcpdump -i enp3s0 -s 1500 -w captura.pcap
Desactivar la resolució de DNS i de ports
Quan analitzes trànsit, sovint convé que tcpdump mostri les adreces IP i els números de port tal qual, sense intentar resoldre’ls (la resolució afegeix retard i pot generar més trànsit). Per a això hi ha -n i -nn:
- -n: no resol noms de màquina (DNS).
- -nn: no resol ni noms de màquina ni noms de port.
sudo tcpdump -nn -i enp3s0 -w captura_sense_dns.pcap
Exemples d’ús
Capturar en totes les interfícies
Aquesta comanda captura el trànsit de totes les interfícies (any) i el desa en un fitxer:
sudo tcpdump -i any -w captura_general.pcap
Capturar en un port concret
Per capturar només el trànsit d’un port, per exemple el 8080:
sudo tcpdump -ni any port 8080
-ni any captura en totes les interfícies i desactiva la resolució de DNS, i port 8080 filtra només el trànsit d’aquest port.
Capturar un rang de ports
Amb portrange pots capturar un interval de ports. Per exemple, del 5060 al 5090 (típic de VoIP/SIP):
sudo tcpdump -ni enp3s0 portrange 5060-5090 -w /tmp/trucada.pcap
Capturar trànsit ICMP i ARP
El trànsit ICMP (el del ping) i ARP (resolució d’adreces a IPv4) és molt habitual i es captura així:
sudo tcpdump -ni any "icmp or arp"
Un exemple de sortida d’una petició ARP:
12:49:02.800625 ARP, Request who-has 172.22.123.193 tell 172.22.123.208, length 46
Capturar trànsit broadcast
El trànsit de difusió (broadcast), com les peticions ARP o els missatges DHCP DISCOVER, es captura fàcilment:
sudo tcpdump -ni any broadcast
Capturar trànsit IPv6
Per capturar el trànsit de Neighbor Discovery (NDP) d’IPv6, l’equivalent a l’ARP d’IPv4:
sudo tcpdump -ni any icmp6
Mostrar la capçalera de la capa d’enllaç
Si necessites veure les capçaleres de la capa d’enllaç (adreces MAC) juntament amb el contingut del paquet, combina -e i -xx:
sudo tcpdump -ennxxv -i enp3s0
- -e: mostra la capçalera de la capa d’enllaç (MAC d’origen i destí).
- -nn: no resol DNS ni ports.
- -xx: mostra el contingut dels paquets en hexadecimal (capçaleres de capa d’enllaç incloses).
- -v: sortida detallada (verbose).
Llegir i analitzar fitxers de captura
Un cop capturat el trànsit, el pots tornar a llegir amb tcpdump. Per llegir un fitxer pcap:
tcpdump -nnr <fitxer.pcap>
Fixa’t que llegir un fitxer ja guardat no necessita sudo (no toca la xarxa). Per exemple:
tcpdump -nnr captura_general.pcap
Capturar durant molta estona sense omplir el disc
Si has de deixar una captura funcionant molt de temps, interessa partir-la en fitxers per no generar-ne un d’enorme. Amb -C (mida màxima en MB per fitxer), -W (nombre de fitxers, en rotació) i -G (segons per fitxer):
sudo tcpdump -i any -C 100 -W 10 -w captura.pcap
Això crea fins a 10 fitxers de 100 MB i els va reciclant. També pots limitar el nombre total de paquets amb -c:
sudo tcpdump -ni any -c 100
Altres eines d’anàlisi
tcpdump és ideal per capturar, però per analitzar grans volums de trànsit sovint és més còmode Wireshark, que té interfície gràfica. Pots obrir qualsevol fitxer pcap fet amb tcpdump directament a Wireshark. Si prefereixes el terminal, Wireshark també porta tshark, la seva versió de línia de comandes. I si el que vols és escanejar ports i serveis en lloc de capturar trànsit, mira la guia de nmap.
Consells i bones pràctiques
- Filtra sempre que puguis: fes servir filtres per capturar només el trànsit que necessites. Capturar sense filtrar genera fitxers enormes i difícils d’analitzar.
- Vigila els recursos: les captures grans i llargues poden afectar el rendiment i omplir el disc. Si pots, limita-les en temps o mida (opcions
-G,-C,-W,-c) i analitza-les després. - Correlaciona amb els registres: a més del trànsit, revisa els registres de xarxa i del sistema (
journalctl) per entendre millor el problema. - Compte amb les dades sensibles: en capturar trànsit pots estar recollint informació privada (credencials, cookies, continguts). Desa els fitxers
.pcapen un lloc segur i esborra’ls quan ja no els necessitis. I, evidentment, captura només trànsit de xarxes on tinguis permís per fer-ho.
Conclusió
tcpdump és una eina fonamental per a qualsevol administrador que hagi de capturar i analitzar trànsit de xarxa. Si coneixes bé les seves opcions i filtres, pots capturar exactament el que necessites, cosa que facilita molt la resolució de problemes de xarxa i la detecció de comportaments anòmals. I quan vulguis una vista més visual, recorda que sempre pots obrir les captures amb Wireshark.