Skip to main content
  1. Concetti/

Anycast - Resilienza Architetturale e Anti-DDoS

Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cos'e' Anycast
#

Anycast e' una tecnica di indirizzamento IP in cui lo stesso indirizzo viene annunciato da piu' server fisici in posizioni geografiche diverse. Il protocollo di routing BGP (Border Gateway Protocol) instrada automaticamente ogni client verso il server topologicamente piu' vicino, senza che il client debba sapere nulla dell'infrastruttura sottostante.

Assegnare lo stesso IP a centinaia di server globali, lasciando che BGP decida quale istanza serve ogni richiesta in base alla vicinanza di rete.

TL;DR
#

  1. Un'organizzazione configura 300 server in 300 citta' diverse con lo stesso indirizzo IP (es. 1.1.1.1)
  2. Ogni server annuncia via BGP il prefisso 1.1.1.0/24 ai router vicini
  3. I router Internet vedono 300 percorsi verso lo stesso IP e scelgono il piu' corto
  4. Un client a Roma viene instradato al nodo di Roma, un client a Tokyo al nodo di Tokyo
  5. Se il nodo di Roma va offline, BGP re-instrada automaticamente al nodo piu' vicino disponibile

Anycast vs Altri Modelli di Indirizzamento
#

IPv4 supporta quattro modalita' di indirizzamento. Anycast e' quella piu' complessa ma piu' potente per infrastrutture distribuite globalmente.

ModelloDestinatariMeccanismoEsempio
Unicast1 specificoIP univocoHTTP verso un server fisso
BroadcastTutti in subnetIP broadcastARP Request
MulticastGruppo iscrittoIGMP/PIMVideo streaming
AnycastIl piu' vicinoBGP hop count8.8.8.8, 1.1.1.1

Come Funziona BGP Anycast
#

BGP (Border Gateway Protocol) e' il protocollo di routing usato tra Autonomous System su Internet. E' il meccanismo che rende possibile Anycast: ogni istanza annuncia lo stesso prefisso IP, e BGP fa il resto.

flowchart TD
    classDef client fill:#00336633,stroke:#003366,stroke-width:2px,color:#000;
    classDef router fill:#80808033,stroke:#808080,stroke-width:2px,color:#000;
    classDef anycast fill:#2d6a4f33,stroke:#2d6a4f,stroke-width:2px,color:#000;
    classDef internet fill:#a7262633,stroke:#a72626,stroke-width:2px,color:#000;
    classDef spacer fill:none,stroke:none,color:none;

    CLIENT_IT["Client Roma"]:::client
    CLIENT_JP["Client Tokyo"]:::client
    INTERNET["Internet - Router BGP globali"]:::internet
    NODE_IT["Server 1.1.1.1 - Roma"]:::anycast
    NODE_JP["Server 1.1.1.1 - Tokyo"]:::anycast
    NODE_US["Server 1.1.1.1 - New York"]:::anycast

    subgraph CLOUDFLARE["Cloudflare Anycast Infrastructure - stesso IP 1.1.1.1"]
        SPACER_CF[" "]:::spacer
        NODE_IT
        NODE_JP
        NODE_US
        SPACER_CF ~~~ NODE_IT
    end

    CLIENT_IT -->|query a 1.1.1.1| INTERNET
    CLIENT_JP -->|query a 1.1.1.1| INTERNET
    INTERNET -->|BGP shortest path per Roma| NODE_IT
    INTERNET -->|BGP shortest path per Tokyo| NODE_JP

Lettura diagramma: Entrambi i client usano lo stesso IP 1.1.1.1. I router BGP globali (Internet) vedono tre percorsi verso quell'IP e instradano ciascun client al nodo geograficamente piu' vicino: Roma verso il server italiano, Tokyo verso il server giapponese. New York resta disponibile come fallback.


Root DNS Server e Anycast
#

I 13 root DNS server (da A-Root a M-Root) sono l'esempio storico per eccellenza di Anycast. Nonostante esistano solo 13 indirizzi IP distinti, ci sono quasi 2.000 istanze fisiche in tutto il mondo.

Nota Security+: I 13 root server sono un concetto critico per l'esame. Non sono 13 macchine fisiche ma 13 indirizzi IP Anycast, ognuno replicato su centinaia di istanze. La frase "i root server DNS sono vulnerabili a DDoS" e' falsa proprio grazie ad Anycast.


Anycast come Scudo Anti-DDoS
#

La proprieta' piu' importante di Anycast per la sicurezza e' la distribuzione naturale degli attacchi DDoS. Quando un attaccante lancia un volume massiccio di traffico verso un IP Anycast, i router BGP distribuiscono quel traffico tra tutte le istanze geograficamente vicine all'attaccante.

anycast-routing-anti-ddos.webp

flowchart LR
    classDef attacker fill:#a7262633,stroke:#a72626,stroke-width:2px,color:#000;
    classDef victim fill:#2d6a4f33,stroke:#2d6a4f,stroke-width:2px,color:#000;
    classDef router fill:#80808033,stroke:#808080,stroke-width:2px,color:#000;
    classDef spacer fill:none,stroke:none,color:none;

    ATK_CN["Botnet Cina - 500 Gbps verso 1.1.1.1"]:::attacker
    ATK_RU["Botnet Russia - 300 Gbps verso 1.1.1.1"]:::attacker
    BGP["Internet - Router BGP globali"]:::router
    NODE_CN["Nodo Anycast - Pechino saturato - isolato"]:::attacker
    NODE_RU["Nodo Anycast - Mosca saturato - isolato"]:::attacker
    NODE_IT["Nodo Anycast - Roma - operativo"]:::victim
    USER["Utente Roma - non impatto"]:::victim

    subgraph INFRA["Anycast Infrastructure 1.1.1.1"]
        SPACER_I[" "]:::spacer
        NODE_CN
        NODE_RU
        NODE_IT
        SPACER_I ~~~ NODE_CN
    end

    ATK_CN -->|DDoS BGP instrada a Pechino| NODE_CN
    ATK_RU -->|DDoS BGP instrada a Mosca| NODE_RU
    BGP --> NODE_IT
    USER -->|continua a funzionare| NODE_IT

Lettura diagramma: I 500 Gbps della botnet cinese vengono instradati da BGP verso il nodo di Pechino (il piu' vicino per hop BGP). I 300 Gbps russi vanno verso Mosca. Il nodo di Roma non vede nulla dell'attacco e serve normalmente gli utenti italiani. L'attaccante dovrebbe colpire simultaneamente TUTTI i nodi globali per abbattere il servizio.

Confronto con Unicast:

  • Unicast: 500 Gbps su un unico IP fisso abbattono immediatamente il server
  • Anycast: 500 Gbps vengono assorbiti dal nodo piu' vicino all'attaccante, il resto del mondo non e' impattato

Dev parallel: Cloudflare e Fastly usano Anycast per la loro CDN: quando la tua app Node/PHP usa Cloudflare, le request degli utenti arrivano all'edge node geograficamente piu' vicino. Anycast rende tutto cio' trasparente senza DNS round-robin o geolocalizzazione esplicita. Un attacco DDoS da 1 Tbps contro la tua API viene distribuito tra 300 data center globali di Cloudflare: nessuno viene sopraffatto.


Differenza Anycast vs DNS Load Balancing
#

E' una distinzione importante per Security+: DNS round-robin e Anycast sembrano fare la stessa cosa ma funzionano in modo radicalmente diverso.

AspettoAnycastDNS Round-Robin
MeccanismoRouting BGP a livello IPRisposta DNS con IP multipli
Configurazione clientNessunaNessuna
GeolocalizzazioneAutomatica via BGPManuale (geo-DNS) o casuale
FailoverAutomatico (convergenza BGP)Lento (dipende TTL DNS)
Anti-DDoSDistribuisce traffico fisicamenteNon distribuisce il traffico
Esempio1.1.1.1, root DNSRecord A con piu' IP

Scenario Reale Blue Team
#

In un contesto difensivo, Anycast compare nell'analisi del traffico di rete e nella risposta a incidenti legati a DNS e DDoS.

# Verificare qual e' il nodo Anycast che risponde da questa posizione
dig +short +nsid @1.1.1.1 id.server chaos txt
dig +short +nsid @8.8.8.8 id.server chaos txt

# Tracciare il percorso verso un IP Anycast (rivela il nodo fisico piu' vicino)
traceroute 1.1.1.1
mtr 1.1.1.1

# Verificare quale nodo root DNS risponde (es. A-Root)
dig +short @198.41.0.4 version.bind chaos txt

# Analisi BGP per un prefisso Anycast (tool esterno)
# bgp.he.net → inserire 1.1.1.0/24 per vedere gli annunci globali

# Rilevare traffico anomalo verso IP Anycast noti (es. flooding DNS)
tcpdump -i eth0 'host 1.1.1.1 or host 8.8.8.8' -n

Segnali da monitorare in un SIEM:

  • Volume anomalo di query verso resolver pubblici Anycast (possibile DNS tunneling o amplification)
  • Query NXDOMAIN massive verso root server (possibile ricognizione o amplification DDoS)
  • Cambio improvviso del nodo Anycast che risponde (possibile BGP hijacking dell'annuncio)

Collegato a
#

Related