Address Resolution Protocol
Guida tecnica al protocollo ARP (Address Resolution Protocol): scopri come traduce gli indirizzi IP in indirizzi MAC all'interno della rete locale, come interagiscono le tabelle NAT e ARP nei router e quali sono i rischi di sicurezza legati agli attacchi ARP Spoofing.
ARP mappa gli indirizzi IP agli indirizzi MAC a livello di collegamento, essenziale per l'incapsulamento dei frame Ethernet nelle comunicazioni all'interno di una subnet. Il suo pacchetto è composto da campi che specificano i tipi di hardware e protocollo, le lunghezze degli indirizzi e le informazioni di invio e destinazione per la risoluzione.
Arp (Address Resolution Protocol) è un protocollo che opera a cavallo tra il livello 2 (collegamento) e il livello 3 (rete) del modello OSI. Il suo compito è tradurre un indirizzo IP nel corrispondente indirizzo fisico (MAC), passaggio necessario per incapsulare i dati in un frame Ethernet.
Quando un host deve inviare dati al router, deve conoscere il MAC della scheda di rete del router. Viceversa, quando il router deve consegnare dati a un host, deve conoscerne il MAC. All'interno della stessa subnet, dal punto di vista della risoluzione degli indirizzi, il router si comporta esattamente come un host qualsiasi verso gli altri dispositivi della LAN.
Il formato del pacchetto ARP
Un pacchetto ARP è strutturato in campi ben definiti. Conoscerli aiuta a interpretare correttamente una cattura di rete, ad esempio con Wireshark, durante il debug.
| Campo | Descrizione | Dimensione tipica |
|---|---|---|
| Hardware type | Tipo di rete fisica utilizzata, es. Ethernet | 2 byte |
| Protocol type | Protocollo di livello 3 da risolvere, es. IPv4 | 2 byte |
| Hardware address length | Lunghezza dell'indirizzo MAC | 1 byte |
| Protocol address length | Lunghezza dell'indirizzo IP | 1 byte |
| Operation (opcode) | 1 per Request, 2 per Reply | 2 byte |
| Sender MAC address | MAC del mittente | 6 byte |
| Sender IP address | IP del mittente | 4 byte |
| Target MAC address | MAC del destinatario, vuoto in una request | 6 byte |
| Target IP address | IP del destinatario | 4 byte |
Le due tabelle del router, la tabella NAT e ARP
Il router mantiene due tabelle distinte, con scopi diversi.
Tabella NAT (Network Address Translation)
Tutti i dispositivi di una subnet condividono lo stesso IP pubblico. Il router usa quindi le porte TCP/UDP per distinguere le connessioni dei singoli host e sapere a chi inoltrare le risposte in arrivo da Internet.
Esempio pratico:
- L'host A (
192.168.1.50) apre una pagina su un server esterno (93.184.216.34). Il pacchetto in uscita ha intestazione192.168.1.50:51234 → 93.184.216.34:443. - Prima di inviarlo su Internet, il router sostituisce l'IP privato con il proprio IP pubblico, es.
2.3.4.5, e assegna una porta pubblica univoca, es.10500. Salva quindi in tabella l'associazione:2.3.4.5:10500 ↔ 192.168.1.50:51234 ↔ 93.184.216.34:443. - Il server web risponde a
2.3.4.5:10500. Il router riceve il pacchetto, legge la porta di destinazione, consulta la tabella NAT, riscrive l'IP con quello privato dell'host A e lo inoltra sulla rete interna.
| IP/Porta dell'indirizzo privato | IP/Porta dell'indirizzo pubblico | IP/Porta di destinazione |
|---|---|---|
| 192.168.50:51234 | 2.3.4.5:10500 | 93.184.216.34:443 |
Tabella ARP
Serve a mappare gli IP della rete locale ai relativi MAC address. Gli host la usano per comunicare tra loro sulla stessa subnet; il router la usa quando deve recapitare a un host locale un pacchetto arrivato da Internet, dopo averne trovato la destinazione nella tabella NAT.
Chi possiede una tabella arp
Non tutti i dispositivi di rete la gestiscono, perché dipende dal livello OSI a cui operano.
| Dispositivo | Tabella arp | Note |
|---|---|---|
| Host (pc, smartphone, server) | Sì | Serve per costruire il frame Ethernet verso IP locali |
| Router | Sì | Una tabella per ogni interfaccia collegata a una subnet |
| Switch di livello 2 (standard) | No | Usa una tabella MAC (CAM): MAC, porta fisica |
| Switch gestibili / livello 3 | Solo se fa routing o per l'interfaccia di management | Es. SSH, Web UI |
Meccanismo di risoluzione ARP
Scenario: l'host A (192.168.1.10, MAC AA:AA) deve comunicare con l'host B (192.168.1.20, MAC BB:BB), sulla stessa rete locale.
- Controllo cache locale. A verifica se
192.168.1.20 → BB:BBè già nella propria tabella ARP. Se sì, incapsula subito i dati nel frame Ethernet. - ARP Request. Se l'associazione manca, A mette in pausa l'invio e genera una richiesta: "Chi ha l'IP 192.168.1.20? Dillo a 192.168.1.10, MAC AA:AA".
- Invio in broadcast. Il frame ha destinazione
FF:FF:FF:FF:FF:FF. Lo switch lo inoltra su tutte le porte attive della LAN. - Filtro sugli host. Tutti ricevono la richiesta; chi non ha l'IP
192.168.1.20la scarta. Solo B la riconosce come propria. - ARP Reply. B salva preventivamente i dati di A nella propria tabella, poi risponde in unicast al MAC
AA:AA: "L'IP 192.168.1.20 è associato al MAC BB:BB". - Aggiornamento e invio. A riceve la risposta, salva
192.168.1.20 → BB:BB, con un TTL di scadenza, e trasmette finalmente il pacchetto dati originale.
Comunicazione locale vs verso Internet
ARP funziona solo all'interno dello stesso dominio di broadcast, cioè della stessa subnet.
- Destinazione locale (
192.168.1.X): la richiesta ARP cerca direttamente il MAC dell'host di destinazione. - Destinazione esterna (es.
8.8.8.8): l'host riconosce che l'IP non appartiene alla rete locale. Non fa una ARP Request per8.8.8.8, ma per l'IP del default gateway, es.192.168.1.1. Il frame va al MAC del router, che si occupa di instradare il pacchetto verso l'esterno.
Consultare e gestire la tabella ARP da riga di comando
Per uno sviluppatore junior o un IT manager, è utile sapere come ispezionare la propria tabella ARP direttamente da terminale.
| Sistema operativo | Comando | Descrizione |
|---|---|---|
| Windows | arp -a | Mostra la tabella ARP corrente |
| Linux (legacy) | arp -a | Richiede il pacchetto net-tools |
| Linux (moderno) | ip neigh show | Equivalente attuale tramite iproute2 |
| macOS | arp -a | Mostra la tabella ARP corrente |
Un esempio di output su Linux con lo strumento moderno:
$ ip neigh show
192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE
192.168.1.20 dev eth0 lladdr 11:22:33:44:55:66 STALE
ARP e IPv6
In IPv6, ARP non viene utilizzato. La risoluzione degli indirizzi è affidata a NDP (Neighbor Discovery Protocol), che si appoggia su ICMPv6 invece che su un protocollo di livello 2 a sé stante. Il principio di fondo, cioè associare un indirizzo di rete a un indirizzo fisico, resta lo stesso: cambia il meccanismo sottostante.
La vulnerabilità alla base
Il protocollo ARP soffre di due limiti strutturali:
- Assenza di autenticazione. Non verifica se l'emittente del pacchetto è il reale proprietario dell'indirizzo IP dichiarato.
- Natura stateless. I dispositivi accettano e memorizzano pacchetti di risposta ARP Reply anche se non hanno mai inviato alcuna richiesta (il cosiddetto Gratuitous ARP) sovrascrivendo la propria tabella senza alcun controllo.
Questi due limiti sono la base tecnica su cui si fonda l'ARP Spoofing, una tecnica di attacco man-in-the-middle a livello locale.
Le fasi dell'attacco
Immaginiamo una rete locale con questi attori:
- Vittima: IP
192.168.1.50, MACAA:AA - Router: IP
192.168.1.1, MACRR:RR - Attaccante: IP
192.168.1.99, MACXX:XX
Lo schema seguente riassume il risultato dell'attacco, con entrambe le vittime convinte di parlare direttamente tra loro mentre in realtà passano per l'attaccante:
Fase 1: invio dei pacchetti falsificati (avvelenamento)
L'attaccante invia in continuazione pacchetti ARP malevoli a entrambi gli estremi della comunicazione:
- Alla vittima invia una risposta ARP dicendo: "L'IP 192.168.1.1, il router, ha MAC XX:XX", cioè il MAC dell'attaccante.
- Al router invia una risposta ARP dicendo: "L'IP 192.168.1.50, la vittima, ha MAC XX:XX", cioè ancora il MAC dell'attaccante.
Fase 2: aggiornamento delle tabelle arp e reindirizzamento
I due dispositivi aggiornano le rispettive tabelle ARP locali memorizzando le informazioni false. Da questo momento, quando lo switch di rete deve smistare il traffico di livello 2:
- Quando la vittima invia un frame indirizzato all'IP del router, lo invia al MAC
XX:XX. Lo switch inoltra il frame direttamente alla porta dell'attaccante. - Quando il router risponde alla vittima, invia il frame al MAC
XX:XX. Lo switch lo consegna di nuovo all'attaccante.
Fase 3: ip forwarding (inoltro del traffico)
Per non far cadere la connessione e non insospettire la vittima, l'attaccante attiva l'IP forwarding sul proprio sistema operativo. Quando la sua scheda di rete riceve i pacchetti intercettati, li legge e li rinvia al destinatario reale, router o vittima, mantenendo la comunicazione apparentemente intatta.
Conseguenze dell'attacco
Collocandosi al centro del flusso dati, l'attaccante può:
- Eseguire sniffing. Leggere in chiaro il traffico non crittografato, come HTTP, FTP, Telnet, credenziali e cookie di sessione.
- Manipolare i dati. Alterare i contenuti dei pacchetti prima di inoltrarli, ad esempio con iniezione di codice malevolo o reindirizzamento DNS.
- Eseguire denial of service (DoS). Scartare i pacchetti ricevuti anziché inoltrarli, interrompendo la connessione della vittima a Internet.
Queste tre conseguenze spiegano perché l'ARP Spoofing sia considerato uno degli attacchi più insidiosi nelle reti locali. Non richiede accesso privilegiato, solo la possibilità di inviare pacchetti sulla stessa LAN della vittima.
Difese contro l'arp spoofing
Conoscere il meccanismo dell'attacco è utile solo se accompagnato dalle contromisure che un amministratore di rete può adottare:
- Dynamic ARP Inspection (DAI). Funzionalità disponibile su molti switch gestibili che valida le risposte ARP confrontandole con un database di associazioni IP-MAC affidabili, scartando quelle sospette.
- Voci ARP statiche. Su segmenti di rete critici, come server e gateway, è possibile fissare manualmente le associazioni IP-MAC per impedirne la sovrascrittura automatica.
- Port security sugli switch. Limita il numero di indirizzi MAC ammessi su ciascuna porta, rendendo più difficile per un dispositivo non autorizzato inserirsi nella LAN.
- Segmentazione tramite VLAN. Riduce l'ampiezza del dominio di broadcast e, di conseguenza, la superficie di attacco raggiungibile con tecniche di ARP spoofing.
- Strumenti di monitoraggio. Software come arpwatch osservano le variazioni nelle associazioni IP-MAC della rete e segnalano anomalie sospette agli amministratori.