Skip to main content
  1. Concetti/

Routing, Hop e TTL

·7 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cos'è
#

Il routing è il processo con cui i pacchetti viaggiano da una rete all'altra attraverso router intermedi. Ogni "tappa" si chiama hop. Il TTL limita il numero massimo di hop che un pacchetto può fare prima di essere scartato.

Hop — le tappe del viaggio
#

Analogia del treno:
Roma ──────► Bologna ──────► Milano
  tappa 1      tappa 2

Non sono fallimenti — sono il percorso normale.

In rete:

[Tu] ──► [Router ISP] ──► [Router backbone] ──► [Google]
  hop 1        hop 2              hop 3

Ogni hop = un router che riceve il pacchetto
           consulta la sua routing table
           lo manda al prossimo router

Ogni router conosce solo il passo successivo — non il percorso completo:

"Vai al semaforo e chiedi ancora"
"Vai dritto 2km e chiedi ancora"
"Sei arrivato"

L'hop è il router che instrada il pacchetto da una subnet alla successiva.


TTL — quante tappe sono disposto a fare
#

Analogia del treno:
TTL = 60  →  sono disposto a fare massimo 60 cambi

Destinazione richiede 1000 cambi
→ al cambio 60 il treno viene fermato
→ il capotreno manda messaggio a Roma:
   "il tuo treno è stato fermato a Bologna"
   (in rete: ICMP Time Exceeded)

In rete:

Parti con TTL = 64

hop 1  →  TTL diventa 63
hop 2  →  TTL diventa 62
...
hop 64 →  TTL diventa 0
           router scarta il pacchetto
           manda ICMP Time Exceeded al mittente

Il TTL non è un limite pratico — è una protezione contro i loop:

Routing loop (senza TTL):
  Router A → "192.168.2.x? manda a Router B"
  Router B → "192.168.2.x? manda a Router A"
  Router A → "192.168.2.x? manda a Router B"
  ... loop infinito

Con TTL:
  dopo N hop → pacchetto scartato
               problema contenuto

Nella realtà da Genova a Google ci vogliono 8-12 hop. TTL di default 64 o 128 è abbondantissimo.


Traceroute — come funziona
#

Traceroute sfrutta il TTL di proposito per scoprire i router intermedi:

TENTATIVO 1TTL=1 (artificialmente basso)
  [Tu] ──TTL=1──► [Router 1]
                   TTL=0 → scarta
                   manda ICMP Time Exceeded
                   → traceroute scopre: hop 1 = questo IP ✅

TENTATIVO 2TTL=2
  [Tu] ──TTL=2──► [Router 1] ──TTL=1──► [Router 2]
                                          TTL=0 → scarta
                                          manda ICMP Time Exceeded
                   → traceroute scopre: hop 2 = questo IP ✅

TENTATIVO 3TTL=3
  [Tu] ──TTL=3──► [Router 1] ──► [Router 2] ──TTL=1──► [Router 3]
                                                         TTL=0 → scarta
                   → traceroute scopre: hop 3 = questo IP ✅

Output reale:

traceroute google.com

1  192.168.1.1      1ms    ← il tuo router di casa
2  10.0.0.1         8ms    ← router del tuo ISP
3  85.18.x.x       12ms    ← backbone ISP
4  ...
8  142.250.x.x     20ms    ← Google

⚠️ TTL nel Networking vs TTL nel DNS — stessa parola, mondo diverso
#

TTL NETWORKING          TTL DNS
────────────────────    ────────────────────────────────
Unità: hop              Unità: secondi
Si decrementa:          Si decrementa:
  ad ogni router          nel tempo
Scopo:                  Scopo:
  evitare loop infiniti   dire ai server DNS quanto
                          tenere in cache il record

TTL=64 networking  →  il pacchetto può fare 64 hop
TTL=300 DNS        →  ricorda questo record per 300 secondi

TTL DNS basso = propagazione veloce:

Stai per cambiare IP del tuo dominio:

Giorni prima   →  TTL = 86400  (normale, 24 ore)
Giorno prima   →  TTL = 300    (abbassi a 5 minuti)
Fai il cambio  →  i server DNS aggiornano in 5 minuti
Dopo il cambio →  TTL = 86400  (rialzi)

Se non abbassi prima:
  metà internet vede il vecchio IP per 24 ore
  metà vede il nuovo
  caos durante la migrazione

Il viaggio del pacchetto — MAC, IP e hop
#

Questa e' la parte che confonde di piu': se i router instradano i pacchetti, perche' traceroute mostra IP e non MAC? E dove entra il MAC in tutto questo?

Due indirizzi, due scopi diversi
#

IP  → indirizzo logico — "dove vuoi arrivare"
      non cambia mai durante il viaggio
      visibile da tutti i router lungo il percorso

MAC → indirizzo fisico — "su quale cavo mandare il pacchetto adesso"
      valido solo dentro una subnet (LAN)
      cambia ad ogni hop
      invisibile fuori dalla LAN

La busta dentro la lettera
#

Ogni pacchetto ha due "strati" di indirizzamento:

┌──────────────────────────────────────────┐
│  Header Ethernet (Layer 2)│  MAC sorgente:      il mio MAC           │  ← cambia ad ogni hop
│  MAC destinazione:  MAC prossimo router  │
├──────────────────────────────────────────┤
│  Header IP (Layer 3)│  IP sorgente:       il mio IP            │  ← invariato per tutto il viaggio
│  IP destinazione:   IP server remoto     │
├──────────────────────────────────────────┤
│  Payload (TCP/UDP/ICMP...)└──────────────────────────────────────────┘

Il router legge l'header IP per decidere dove mandare il pacchetto. Poi riscrive l'header Ethernet con il suo MAC come sorgente e il MAC del prossimo router come destinazione. L'header IP non viene toccato.

Il viaggio completo verso Google (8.8.8.8)
#

STEP 1 — sulla tua LAN (subnet 192.168.64.x)
  Il tuo PC non conosce il MAC del router → ARP
  ARP broadcast: "chi ha 192.168.64.1?"
  Router risponde: "sono io — MAC aa:bb:cc:dd:ee:ff"

  Pacchetto parte:
    MAC src: il tuo MAC
    MAC dst: MAC del router di casa   ← solo per questo hop
    IP src:  192.168.64.200
    IP dst:  8.8.8.8                  ← invariato

STEP 2 — router di casa riceve il pacchetto
  Legge IP dst: 8.8.8.8
  Guarda la tabella di routing: "per 8.8.8.8 mando al router ISP"
  Sa il MAC del router ISP (ARP sulla sua interfaccia WAN)
  Riscrive l'header Ethernet:
    MAC src: MAC del router di casa
    MAC dst: MAC del router ISP       ← nuovo hop, nuovo MAC

STEP 3, 4, 5... — ogni router intermedio
  Stessa logica: legge IP dst, decide prossimo hop, riscrive MAC

STEP FINALE — ultimo router prima di Google
  MAC src: MAC dell'ultimo router
  MAC dst: MAC del server 8.8.8.8    ← finalmente il destinatario
  IP src:  il tuo IP
  IP dst:  8.8.8.8

Perche' il MAC vale solo nella LAN
#

Il MAC e' un indirizzo Layer 2 — funziona solo tra dispositivi sulla stessa subnet fisica. Non "esce" dalla LAN perche':

LAN A (192.168.1.x)          Internet          LAN B (10.0.0.x)
  PC ──────► Router A ─────────────────── Router B ──────► Server
  
  Tra PC e Router A:    usano MAC (stessa LAN)
  Tra Router A e B:     usano solo IP (reti diverse, niente ARP)
  Tra Router B e Server: usano MAC (stessa LAN)

Tra due router su internet non c'e' ARP — ci sono protocolli di routing (BGP, OSPF) che usano solo IP per scambiarsi le tabelle di instradamento.

Come fa il router a sapere il MAC del prossimo hop
#

Sulla sua interfaccia LAN: tramite ARP, esattamente come il tuo PC. Su internet tra router: i router "vicini" (peer) si conoscono tramite configurazione statica o protocolli di routing — anche li' pero' a livello fisico usano MAC per la comunicazione sul link diretto tra loro.

Cosa vedi in traceroute
#

traceroute mostra gli IP, non i MAC — perche' usa ICMP Time Exceeded che e' un messaggio IP, non Ethernet. I MAC non escono mai dalla subnet locale — non possono essere trasmessi in un messaggio IP.

traceroute -n 8.8.8.8

1  192.168.64.1    ← router UTM (gateway LAN)
2  192.168.1.254   ← router di casa reale
3  192.168.128.1   ← primo router ISP
...
9  93.57.68.133    ← backbone internet
14 8.8.8.8         ← Google

Ogni riga e' un router che ha risposto con ICMP Time Exceeded. Il MAC di ognuno di questi router e' visibile solo al router precedente — mai a te.

MAC spoofing — solo sulla LAN
#

Gli attacchi che falsificano il MAC (ARP poisoning, MAC spoofing) funzionano SOLO sulla stessa subnet perche' il MAC non viaggia oltre il primo router. Su internet non si puo' falsificare il MAC di un server remoto — il MAC non arriva mai cosi' lontano.

Attacchi MAC:   solo LAN ✓
Attacchi IP:    ovunque su internet ✓

Scenario Reale
#

Un analista SOC nota che alcune richieste verso un IP esterno non arrivano mai a destinazione — timeout continui. Lancia traceroute verso quell'IP: i primi 5 hop rispondono normalmente, poi silenzio. Il pacchetto si perde all'hop 6 — probabilmente un firewall che blocca il traffico o un router mal configurato. Senza traceroute avrebbe solo visto "non risponde" — con traceroute sa esattamente dove si rompe il percorso.

Dove l'ho incontrato
#

  • network-fundamentals — TryHackMe modulo 2
  • icmp-mac-ip — ICMP Time Exceeded è il meccanismo base di traceroute

Collegato a
#

Related