Salta el contingut

Diagnòstic d'incidències de xarxa (cheat sheet)

Quan alguna cosa falla, no vagis a cegues: diagnostica de baix a dalt, seguint el camí que fa un paquet des del teu equip fins al servei. Si un graó falla, atura't allà — no cal comprovar els de dalt.

Regla d'or

Aïlla la capa. Primer mira si tens enllaç físic, després adreça IP, després xarxa local (passarel·la), després Internet, després DNS i, finalment, el servei. Cada comprovació descarta (o confirma) una capa.

El camí del paquet

💻El teu equip
🔌Commutador (LAN)
📶Passarel·la
☁️Internet
🔤DNS
🎯Servei

Escala de diagnòstic

Comprova les capes en ordre. Les comandes es donen per a Linux i Windows (PowerShell).

# Capa Què comprovar Linux Windows
1 Enllaç físic Cable/wifi connectat, interfície activa (UP) ip link Get-NetAdapter
2 Adreça IP Tens una IP vàlida (no 169.254.x.x) ip a ipconfig
3 Xarxa local Arribes a la passarel·la ping 192.168.1.1 ping 192.168.1.1
4 Internet Arribes a una IP pública ping 1.1.1.1 ping 1.1.1.1
5 DNS Es resolen els noms dig exemple.cat / nslookup nslookup exemple.cat
6 Servei / aplicació El port del servei està obert ss -tlnp · nc -zv host port Test-NetConnection host -Port n

Taula de primers auxilis

Símptoma Causa típica Primera comanda
No navego i la IP és 169.254.x.x El DHCP no respon (APIPA) dhclient · ipconfig /renew
El ping a una IP va, però als noms no DNS mal configurat o caigut nslookup exemple.cat 1.1.1.1
El ping a la passarel·la falla LAN, VLAN, màscara o cable ip a · ping <passarel·la>
La web no carrega però el ping Servei/port, proxy o tallafoc curl -I https://web
Els correus no surten Port 25 bloquejat o autenticació nc -zv mail 587
Rebo correu però no n'envio SPF/DKIM/DMARC o llista negra dig TXT domini
Alguns equips tenen IP i altres no Abast (scope) del DHCP esgotat (al servidor) journalctl -u isc-dhcp-server
Sense IP en una VLAN, però en una altra sí Falta el DHCP relay (ip helper-address) (al switch/router) show run interface vlanX
Tinc IP però la passarel·la/DNS són estranys Servidor DHCP intrús (rogue) ipconfig /all (DHCP Server)
«IP en conflicte» o connectivitat intermitent Dues màquines amb la mateixa IP arping -D <ip>
Va bé però algunes webs/VPN es pengen MTU / MSS (PMTUD trencat) ping -M do -s 1472 <ip>
Un nom concret resol a una IP vella Entrada al fitxer hosts getent hosts <nom>
Els noms interns van, els externs no Resolver sense forwarders/recursió dig @<dns> google.com
SERVFAIL només en alguns dominis Validació DNSSEC o rellotge desquadrat dig +cd <domini>

Incidència 1 — No tinc adreça IP

No tinc IP — diagnòstic pas a pas
Capa 1 · Enllaç físic
Abans de res, comprova que hi ha enllaç físic: el cable connectat (o el wifi associat) i la interfície en estat UP.
$ip link
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> state UP
PS>Get-NetAdapter
Name Status LinkSpeed
Ethernet Up 1 Gbps
✗ Si surt DOWN / Disconnected → revisa el cable, el port del commutador o l'associació wifi.
✓ Si està UP → passa a comprovar l'adreça IP.
Capa 2 · Adreça IP
Mira quina IP té l'equip. Una adreça 169.254.x.x (APIPA / link-local) vol dir que no s'ha rebut cap oferta del DHCP.
$ip a
inet 169.254.23.7/16 scope link ← APIPA: sense IP del DHCP
PS>ipconfig
Dirección IPv4. . . : 169.254.23.7
✗ IP 169.254.x.x → no has rebut configuració del servidor DHCP.
Capa 2 · Renovació del lease
Força l'equip a demanar de nou una adreça (torna a llançar el procés DORA).
$sudo dhclient -r
$sudo dhclient eth0
PS>ipconfig /release
PS>ipconfig /renew
inet 192.168.1.34/24 ← IP correcta del rang!
✓ Si ara reps una IP del rang de la xarxa → incidència resolta.
Capa 2 · Servidor DHCP
Si segueixes sense IP, el problema és al servei DHCP o al camí. Captura el trànsit i mira si el teu DISCOVER rep resposta.
$sudo tcpdump -i eth0 port 67 or port 68
DHCP-Message ... Request from ... (DISCOVER)
... cap OFFER de resposta ...
⚠ DISCOVER sense OFFER → servidor DHCP aturat, abast (scope) exhaurit o falta un DHCP relay entre VLANs. Revisa el servidor i el relay.
Solució temporal
Mentre no es repari el DHCP, assigna una IP estàtica lliure i coherent amb la xarxa (mateixa subxarxa i passarel·la).
$sudo ip addr add 192.168.1.50/24 dev eth0
$sudo ip route add default via 192.168.1.1
PS>New-NetIPAddress -InterfaceAlias Ethernet -IPAddress 192.168.1.50 -PrefixLength 24 -DefaultGateway 192.168.1.1
⚠ Tria una IP que no estigui en ús ni dins del rang que reparteix el DHCP, per evitar conflictes.

Incidència 2 — Tinc IP però no navego

Sense connectivitat — diagnòstic pas a pas
Capa 3 · Passarel·la
Tens IP, però comprova si arribes a la passarel·la (el router de la teva xarxa local).
$ping -c 2 192.168.1.1
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.4 ms
✗ Sense resposta → problema a la LAN (commutador, VLAN) o màscara/passarel·la mal configurades.
✓ Amb resposta → la xarxa local funciona; comprova la sortida a Internet.
Capa 4 · Internet
Fes ping a una IP pública (no a un nom, per no dependre del DNS encara).
$ping -c 2 1.1.1.1
Destination Host Unreachable
✗ Sense resposta → problema d'encaminament/NAT al router o tallafoc de sortida.
✓ Amb resposta → la connectivitat IP funciona. Si els noms no van, vés a la Incidència 3.
Capa 4 · Ruta per defecte
Comprova que hi ha una ruta per defecte (gateway) a la taula d'encaminament.
$ip route
default via 192.168.1.1 dev eth0
PS>Get-NetRoute -DestinationPrefix 0.0.0.0/0
⚠ Si no hi ha ruta default → afegeix-la o revisa que el DHCP entregui l'opció 3 (router).
Capa 6 · Tallafoc
Un tallafoc local pot bloquejar la sortida encara que la xarxa estigui bé.
$sudo ufw status
Status: active — deny (out) 80,443
PS>Get-NetFirewallProfile | Select Name,Enabled
⚠ Si una regla bloqueja el trànsit de sortida → ajusta el tallafoc o crea una excepció.

Incidència 3 — El DNS no resol noms

DNS no resol — diagnòstic pas a pas
Aïllar el problema
Confirma que la connectivitat IP va bé però els noms no: si el ping a una IP funciona i el ping a un nom falla, el problema és el DNS.
$ping -c 2 1.1.1.1
64 bytes from 1.1.1.1: time=8.3 ms ← la IP va
$ping -c 2 exemple.cat
ping: exemple.cat: Name or service not known ← els noms no
⚠ IP sí, nom no → és un problema de resolució DNS, no de connectivitat.
Capa 5 · Quins DNS uses
Mira quins servidors DNS té configurats l'equip.
$resolvectl status | grep 'DNS Server'
DNS Servers: 192.168.1.1
PS>ipconfig /all | findstr Servidores
✗ Cap servidor DNS o un d'incorrecte → corregeix la configuració (o l'opció 6 del DHCP).
Capa 5 · Provar la resolució
Intenta resoldre un nom directament amb dig o nslookup.
$dig exemple.cat +short
;; connection timed out / status: SERVFAIL
PS>nslookup exemple.cat
✗ SERVFAIL o timeout → el teu servidor DNS no respon o no resol aquesta zona.
Capa 5 · DNS alternatiu
Prova a resoldre amb un DNS públic per veure si el problema és el teu servidor.
$dig @1.1.1.1 exemple.cat +short
185.199.108.153 ← amb 1.1.1.1 SÍ que resol
PS>nslookup exemple.cat 8.8.8.8
⚠ Si amb el DNS públic funciona → el teu servidor DNS és el problema (caigut, forwarders o zona mal configurada).
Cache i fitxer hosts
Descarta una cache antiga o una entrada manual al fitxer hosts que "segresti" el nom.
$sudo resolvectl flush-caches
$cat /etc/hosts
10.0.0.9 exemple.cat ← entrada manual sospitosa!
PS>ipconfig /flushdns
⚠ Una entrada errònia a hosts té prioritat sobre el DNS; la cache antiga pot retornar IPs velles.

Incidència 4 — No s'envien correus

El correu no surt — diagnòstic pas a pas
Capa 4 · Connectivitat SMTP
Comprova que arribes al servidor de correu i al port de sortida. El port 25 sortint sol estar bloquejat pels proveïdors: fes servir el 587 (submission, STARTTLS) o el 465 (SMTPS).
$nc -zv mail.exemple.cat 587
Connection to mail.exemple.cat 587 port [tcp] succeeded!
PS>Test-NetConnection mail.exemple.cat -Port 587
⚠ Si el 25 falla però el 587 va → l'ISP bloqueja el 25; configura el client amb el 587 i STARTTLS.
Capa 6 · Diàleg SMTP
Prova el diàleg amb el servidor amb TLS i mira que anunciï AUTH.
$openssl s_client -starttls smtp -connect mail.exemple.cat:587
250-mail.exemple.cat
250-AUTH LOGIN PLAIN
✗ Si no arribes a un 250 → el servei està aturat o el TLS està mal configurat.
Capa 6 · Autenticació
La majoria de servidors exigeixen autenticar-se per enviar (evita ser un open relay).
>AUTH LOGIN
535 5.7.8 Error: authentication failed
535 → usuari/contrasenya incorrectes. Molts proveïdors demanen una contrasenya d'aplicació si tens 2FA.
Capa 5 · Registres DNS del correu
Perquè els destinataris t'acceptin, el domini necessita els registres correctes: MX (recepció), SPF, DKIM i DMARC (reputació).
$dig MX exemple.cat +short
10 mail.exemple.cat.
$dig TXT exemple.cat +short
"v=spf1 mx -all"
✗ Sense MX no reps correu; sense SPF/DKIM/DMARC correctes, els destinataris et rebutgen o et marquen com a spam.
Reputació i logs
Revisa els logs del servidor i si la teva IP està en alguna llista negra (DNSBL).
$tail -f /var/log/mail.log
status=bounced (blocked using zen.spamhaus.org)
⚠ Si la teva IP surt en una DNSBL → sol·licita'n la retirada i investiga la causa (relay obert, compte compromès). Eines: MXToolbox, Mail-Tester.

Incidències avançades

Quan la comprovació bàsica no explica el problema, sovint la causa és a la infraestructura: l'abast del DHCP, les VLAN, un servidor DHCP intrús, un conflicte d'IP o problemes d'enllaç. Aquest és el model mental de per què el DHCP falla entre VLAN:

---
config:
  theme: base
  themeVariables:
    background: "#FFFFFF"
    primaryTextColor: "#1F2937"
    lineColor: "#64748B"
    primaryColor: "#e0e7ff"
    primaryBorderColor: "#2563EB"
---
flowchart LR
    subgraph V20["VLAN 20 · Usuaris"]
        PC["💻 PC sense IP"]
    end
    subgraph V10["VLAN 10 · Servidors"]
        DHCP["🖥️ DHCP Server<br/>10.0.10.5"]
    end
    PC -. "① DHCPDISCOVER<br/>(broadcast, es queda a la VLAN 20)" .-> SW["Switch L3 / Router"]
    SW == "② ip helper-address 10.0.10.5<br/>reenvia com a UNICAST a l'altra VLAN" ==> DHCP

Per què el DHCP no travessa les VLAN

El DHCPDISCOVER és un broadcast i els broadcasts no surten del seu domini de difusió (la seva VLAN). Si el client i el servidor DHCP són en VLAN diferents, cal un DHCP relay (ip helper-address a Cisco, DHCP relay agent / isc-dhcp-relay a Linux) que reenviï la petició com a unicast cap al servidor.

Incidència 5 — El DHCP no dona IP (casos avançats)

DHCP sense IP — causes d'infraestructura
Servidor · Abast esgotat
El servidor DHCP està viu i reparteix IP a altres equips, però ha assignat totes les adreces del rang. Els clients nous es queden sense (APIPA).
$journalctl -u isc-dhcp-server | grep -i "no free leases"
DHCPDISCOVER from a4:... no free leases on subnet 10.0.20.0
PS>Get-DhcpServerv4ScopeStatistics -ScopeId 10.0.20.0
PercentageInUse : 100
⚠ Abast (scope) esgotat → amplia el rang, redueix el temps de lease perquè les adreces es reciclin abans, o allibera reserves/leases morts.
Capa 2 · VLAN sense relay
El client és en una VLAN diferent de la del servidor DHCP. El seu DISCOVER (broadcast) no arriba al servidor perquè falta el DHCP relay a la interfície de la VLAN del client.
sw#show running-config interface vlan 20
interface Vlan20 → (cap "ip helper-address": el relay hi falta!)
! Correcció al switch L3 / router:
interface Vlan20 ; ip helper-address 10.0.10.5
✗ Sense ip helper-address a la VLAN del client → afegeix el relay apuntant al servidor DHCP (a Linux: isc-dhcp-relay).
Capa 2 · Port en VLAN incorrecta
El port on connecta l'equip pot estar assignat a una VLAN diferent de l'esperada (o a una VLAN sense servei DHCP).
sw#show interfaces status | include Gi0/3
Gi0/3 connected 99 a-full a-1000 (VLAN 99, hauria de ser la 20!)
! Correcció:
interface Gi0/3 ; switchport access vlan 20
⚠ Port en VLAN incorrecta → reassigna'l a la VLAN de dades correcta amb switchport access vlan.
Servidor · Exclusions i reserves
L'adreça que hauria de rebre l'equip pot estar exclosa del rang o reservada per a una altra MAC.
PS>Get-DhcpServerv4ExclusionRange -ScopeId 10.0.20.0
StartRange 10.0.20.100 EndRange 10.0.20.254 (rang útil molt reduït!)
PS>Get-DhcpServerv4Reservation -ScopeId 10.0.20.0
⚠ Exclusions massa àmplies o reserves mal fetes redueixen les adreces disponibles → revisa el rang efectiu.

Incidència 6 — Rebo una IP, però és "estranya"

IP anòmala — VLAN, rogue DHCP i conflictes
Capa 3 · Subxarxa incorrecta
Tens IP, però és d'un rang diferent de l'esperat. Normalment vol dir que el port és en una altra VLAN, amb el seu propi DHCP.
$ip a
inet 192.168.99.40/24 (esperaves 10.0.20.x → VLAN equivocada)
⚠ Subxarxa que no correspon → revisa la VLAN del port del commutador (Incidència 5, pas 3).
Capa 2/3 · Servidor DHCP intrús
Un servidor DHCP no autoritzat (un router domèstic connectat per error, una màquina compromesa) respon abans que el legítim i entrega una passarel·la o DNS erronis.
$sudo nmap --script broadcast-dhcp-discover
Server Identifier: 10.0.20.5 (legítim)
Server Identifier: 192.168.1.254 (INTRÚS!)
PS>ipconfig /all | findstr "DHCP"
✗ Dos servidors DHCP a la xarxa → localitza el rogue i activa DHCP snooping al commutador (només els ports de confiança poden oferir DHCP).
Capa 3 · Conflicte d'IP
Dues màquines amb la mateixa IP provoquen connectivitat intermitent i avisos d'"adreça IP duplicada".
$sudo arping -D -I eth0 10.0.20.34
Unicast reply from 10.0.20.34 [b8:27:eb:...] → DUPLICAT!
✗ IP duplicada → sovint una IP estàtica assignada dins del rang del DHCP. Treu-la del rang (exclusió) o corregeix l'estàtica.

Incidència 7 — Connectivitat intermitent o lenta

Xarxa lenta o intermitent — causes d'enllaç
Capa 1 · Dúplex i errors de port
Una negociació dúplex incorrecta (half vs full) o un cable dolent provoquen col·lisions, errors i molta lentitud tot i "tenir connexió".
$ethtool eth0 | grep -E "Speed|Duplex"
Speed: 100Mb/s Duplex: Half (hauria de ser Full!)
sw#show interfaces gi0/3 counters errors
CRC 1423 Runts 88 Late-Coll 210
⚠ Dúplex desaparellat o cable defectuós → fixa la mateixa negociació als dos extrems o canvia el cable.
Capa 3/4 · MTU i PMTUD
La connexió bàsica va, però algunes webs o la VPN es pengen: els paquets grans es descarten i el Path MTU Discovery no funciona perquè algú bloqueja l'ICMP.
$ping -M do -s 1472 1.1.1.1
Frag needed and DF set (mtu = 1400) → 100% packet loss
$ping -M do -s 1372 1.1.1.1
1380 bytes from 1.1.1.1: ... (amb paquet més petit, SÍ)
⚠ Problema de MTU/MSS (típic en VPN i PPPoE) → redueix la MTU de la interfície o aplica MSS clamping, i permet l'ICMP "fragmentation needed".
Capa 3 · On es perden els paquets
Amb latència alta o pèrdues, fes servir mtr per veure a quin salt comença el problema (LAN, ISP o destí).
$mtr -rw 1.1.1.1
1. 10.0.20.1 0.0% loss 1 ms
3. 81.45.x.x 22% loss 140 ms ← el problema comença aquí
PS>pathping 1.1.1.1
⚠ Identifica el salt amb pèrdues: si és a la teva LAN, és cosa teva; si és a l'ISP, cal escalar-ho amb dades (captura del mtr).

Incidència 8 — DNS: casos avançats

DNS avançat — hosts, forwarders, search i DNSSEC
Client · fitxer hosts
El sistema resol els noms segons l'ordre de /etc/nsswitch.conf (hosts: files dns): primer mira el fitxer hosts, i només després el DNS. Una entrada manual al hosts té prioritat i pot "segrestar" un nom cap a una IP vella o falsa.
$getent hosts intranet.exemple.cat
10.9.9.9 intranet.exemple.cat ← ve del hosts, no del DNS!
$grep intranet /etc/hosts
10.9.9.9 intranet.exemple.cat # entrada manual oblidada
PS>type C:\Windows\System32\drivers\etc\hosts
⚠ Comprova sempre el hosts: hi té prioritat sobre el DNS. Treu o corregeix l'entrada (i buida la cache).
Servidor DNS · Forwarders / recursió
El teu servidor DNS resol bé els dominis interns però no els externs: està configurat com a autoritatiu o li falten els forwarders (o té la recursió desactivada per als clients).
$dig @10.0.10.5 intranet.exemple.cat +short
10.0.20.8 ← els noms interns SÍ
$dig @10.0.10.5 google.com
status: REFUSED / SERVFAIL ← els externs NO
! named.conf (BIND): recursion yes; forwarders { 1.1.1.1; 8.8.8.8; };
✗ Sense forwarders/recursió el resolver no arriba a l'exterior → afegeix forwarders i habilita recursion (i allow-recursion per a la teva xarxa).
Client · Domini de cerca (search)
En escriure un nom curt (servidor), el sistema hi afegeix el domini de cerca. Si és incorrecte, el nom curt no resol o resol on no toca.
$resolvectl status | grep -i "Search"
DNS Domain: antic.local ← sufix de cerca incorrecte
"servidor" → prova "servidor.antic.local" (no existeix)
PS>ipconfig /all | findstr "Sufijo"
⚠ Corregeix el domini de cerca (per DHCP: opció 15/119, o a la config del client) i prova sempre amb el nom complet (FQDN).
DNS · Validació DNSSEC
Un domini amb DNSSEC mal signat —o el rellotge del resolver desquadrat— dona SERVFAIL només als resolvers que validen.
$dig domini.cat
status: SERVFAIL
$dig +cd domini.cat # cd = checking disabled
status: NOERROR ← amb la validació desactivada SÍ resol
⚠ Si amb +cd resol, és un problema de DNSSEC: revisa la signatura del domini o sincronitza el rellotge (NTP) del resolver.
Client · systemd-resolved
A moltes distros modernes, /etc/resolv.conf apunta al stub 127.0.0.53. Diagnosticar amb dig directe pot enganyar; consulta l'estat real amb resolvectl.
$cat /etc/resolv.conf
nameserver 127.0.0.53 ← stub local, no el DNS real
$resolvectl status
Link 2 (eth0): DNS Servers: 10.0.10.5 · DNS Domain: exemple.cat
$resolvectl query exemple.cat
⚠ Mira el DNS per interfície amb resolvectl status, no només el resolv.conf. Per netejar: resolvectl flush-caches.

Consells generals

Bones pràctiques de diagnòstic

  • Canvia una cosa cada vegada i torna a provar: així saps què ho ha arreglat.
  • Compara amb un equip que funcioni a la mateixa xarxa per aïllar si el problema és local o de la infraestructura.
  • Apunta el que proves (comanda i resultat): estalvia repetir feina i ajuda qui vingui després.
  • De baix a dalt: no toquis el DNS ni el servei si encara no tens IP ni arribes a la passarel·la.

Comandes de referència ràpida

Objectiu Linux Windows
Configuració IP ip a · ip route ipconfig /all
Renovar DHCP dhclient -r ; dhclient ipconfig /release ; ipconfig /renew
Provar connectivitat ping · traceroute · mtr ping · tracert · Test-NetConnection
Resoldre noms dig · nslookup · host nslookup · Resolve-DnsName
Ports oberts ss -tlnp · nc -zv Test-NetConnection -Port · netstat -ano
Netejar cache DNS resolvectl flush-caches ipconfig /flushdns