Troubleshooting connettività in un homelab eterogeneo

In un homelab che mescola Raspberry Pi, mini PC con Linux, un Mac, qualche IoT scemo e uno switch managed, prima o poi capita: “un host non risponde più, non capisco perché”. E sotto la frustrazione c’è quasi sempre la stessa cosa: una catena di ipotesi non verificate. Il modo per uscirne in tempi ragionevoli è una checklist mentale che parte dal basso e sale.

Racconto una sessione di troubleshooting recente e i comandi che uso, ne approfitto per fissare il metodo per la prossima volta.

L’incidente

Un sabato pomeriggio, verso le 16:00, mi accorgo che un Raspberry Pi del homelab (lo chiamo rpi-monitoring) non risponde più al ping dal portatile. Dalle metriche Grafana risulta off dalla rete da circa un’ora. Niente alert sul telefono perché avevo silenziato Telegram nel pomeriggio. Ma il fatto è lì: l’host non c’è più.

Step 1: dove sta il problema?

La prima domanda non è “perché non risponde”, è “da quale layer in giù la cosa funziona”. Vado dal portatile in giù:


ping -c 4 rpi-monitoring

Risposta: Name or service not known. Quindi il DNS non risolve. Il primo strato già rotto. Provo a interrogare direttamente il resolver interno:


dig +short rpi-monitoring @203.0.113.1

Risposta vuota. Il DNS interno non ha più il record. Sospetto un DHCP-DNS che non ha rinnovato la lease. Provo per IP statico, perché ricordo che ha un fallback:


ping -c 4 203.0.113.42

Anche qui timeout. Il problema non è DNS, è che proprio non raggiungo l’host in IP.

Step 2: layer 2 o layer 3?

Ipotesi: il device non è connesso alla LAN. Lo verifico dallo switch managed (accesso via Tailscale dato che è raggiungibile sulla management interface):


ssh admin@switch-managed
show interfaces ethernet port5 status

Port5 down. Cavo non collegato, NIC del device giù, o cavo rotto. Vado fisicamente al rack: cavo collegato sia sullo switch che sul Pi, ma spia LAN sul Pi spenta. Tolgo l’alimentatore e lo riattacco. La spia POWER resta spenta. Provo un altro alimentatore: idem. Sospetto SBC morto.

Step 3: c’è alimentazione?

Tiro fuori un multimetro economico, misuro la tensione del cavo USB-C dell’alimentatore: 5,15 V, dentro spec. Il problema non è l’alimentatore. Provo a infilare la microSD del Pi morto in un altro Raspberry Pi 5 di backup: avvio in 30 secondi, dmesg pulito. Il problema è hardware sul Pi originale. Probabilmente il regolatore di tensione lato SBC è andato.

A questo punto la troubleshooting di rete è finita: non c’era niente da fare via comandi. Il device è hardware-dead, non network-dead. Ma se avessi saltato i primi step e fossi corso a sostituire l’host senza verificare DNS, switch e fisico, avrei potuto perdere un’ora a configurare un Pi nuovo per scoprire poi che lo switch aveva la porta down per un altro motivo.

Comandi che uso spesso

Senza ordine preciso, la cassetta degli attrezzi:


ip link show
ip addr show
ip route show
ss -tunlp
arp -an
ping -c 4 -W 2 host
traceroute -n host
mtr -n -c 10 host
dig +short host @resolver
nslookup host resolver
nmap -sn 203.0.113.0/24
tcpdump -i eth0 -nn host 203.0.113.42
ethtool eth0
sudo nft list ruleset

Su Mac molti hanno equivalenti con flag diversi (ping con -W in millisecondi, traceroute senza -n per default).

Un caso reale collaterale

Stessa settimana, un altro incidente: latenza folle (centinaia di ms) e pacchetti duplicati ogni ping verso un host in LAN. Sintomo classico di ARP duplicato su VLAN. arp -an dal portatile mostrava due MAC diversi per lo stesso IP. Un Pi vecchio, smesso da mesi e tirato fuori per un test, era stato ricollegato con IP statico identico a uno già attivo. L’avevo dimenticato. Spegnimento del Pi vecchio, arp -d 203.0.113.42 per pulire la cache, latenza tornata a valori normali in dieci secondi. Anche quel caso si è risolto in cinque minuti perché ho seguito la checklist invece di indovinare.

Cosa funziona bene

Avere strumenti standard (ping, dig, mtr, tcpdump, ip) installati ovunque, su ogni Pi e mini PC. Niente tool esotici, niente script personalizzati. Funzionano dappertutto, e quando arriva il problema in mezzo alla notte non devi ricordarti come si lancia un binario custom.

Limiti

Il troubleshooting di rete su Wi-Fi è sempre più frustrante: client che migrano fra AP, mesh che fanno scelte opache, banda 2.4/5/6 GHz che cambia comportamento. Per quello tengo separati i client Wi-Fi dai server, e i server stanno tutti su ethernet. Niente Wi-Fi nei percorsi critici.

In pratica

Il metodo è più importante degli strumenti. Partire dal layer 1 (cavo, alimentazione, link) e salire (layer 2 MAC/switch, layer 3 IP, layer 4 porte, layer 7 applicazione) evita di girare a vuoto. Quasi tutti i problemi si risolvono nei primi tre layer, e il tempo speso a verificare l’ovvio si recupera ampiamente non andando dietro alle ipotesi sbagliate.


Immagine generata con ComfyUI Mac M1 / RealVisXL V5 Lightning.