Le Access Control List (ACL) sono sequenze ordinate di regole (ACE, Access Control Entry) che il router valuta per decidere se un pacchetto va permesso (permit) o scartato (deny). Su IOS/IOS-XE rappresentano lo strumento di base per il filtraggio del traffico IPv4 ed è essenziale padroneggiarne logica, sintassi e posizionamento.
Standard vs Extended
La distinzione principale è quale campo l’ACL può ispezionare.
| Tipo | Range numerato | Cosa filtra |
|---|---|---|
| Standard | 1–99, 1300–1999 | Solo source IP |
| Extended | 100–199, 2000–2699 | Source, destination, protocollo (IP, TCP, UDP, ICMP…) e porta |
Una standard ACL è cieca sulla destinazione: sa solo da dove arriva il pacchetto. Una extended ACL è granulare e permette regole come “consenti TCP dalla rete A verso il server B sulla porta 443”.
! Standard: blocca una sorgente
access-list 10 deny host 192.168.1.5
access-list 10 permit any
! Extended: consenti HTTPS verso un server, nega il resto
access-list 110 permit tcp 10.0.0.0 0.0.0.255 host 172.16.5.10 eq 443
Numerate vs Named
Le named ACL (ip access-list standard|extended NOME) sono funzionalmente identiche alle numerate ma più leggibili e, soprattutto, editabili riga per riga grazie ai sequence number: è possibile inserire una ACE in una posizione specifica invece di riscrivere tutto.
ip access-list extended WEB-FILTER
10 permit tcp any host 172.16.5.10 eq 80
20 deny ip any host 172.16.5.10
La wildcard mask
La wildcard è il cuore concettuale (e la trappola più frequente). È l’inverso della subnet mask: il bit 0 = deve corrispondere, il bit 1 = ignora (“don’t care”).
Calcolo rapido: wildcard = 255.255.255.255 − subnet mask.
/24→ mask255.255.255.0→ wildcard0.0.0.255/26→ mask255.255.255.192→ wildcard0.0.0.63/30→ mask255.255.255.252→ wildcard0.0.0.3
Esistono due keyword abbreviate: host X.X.X.X equivale a wildcard 0.0.0.0 (host singolo), mentre any equivale a 0.0.0.0 255.255.255.255 (qualsiasi indirizzo).
Ordine top-down e implicit deny
Il router valuta le ACE dall’alto verso il basso e si ferma alla prima corrispondenza: appena una regola matcha, applica la sua azione e non prosegue. Da qui la regola d’oro: le ACE più specifiche vanno in alto, quelle generiche in basso. Un permit any messo prima di un deny host renderebbe quest’ultimo inutile.
In coda a ogni ACL esiste un implicit deny any invisibile: ciò che non è esplicitamente permesso viene scartato. Conseguenza pratica: un’ACL fatta di soli deny blocca tutto il traffico, perché manca un permit finale che lasci passare il resto.
Applicazione all’interfaccia
Un’ACL creata non filtra nulla finché non è applicata a un’interfaccia con direzione:
- in → valuta i pacchetti in ingresso sull’interfaccia (prima del routing);
- out → valuta i pacchetti in uscita (dopo il routing).
interface GigabitEthernet0/1
ip access-group 110 in
Regola di posizionamento (best practice Cisco):
- Standard ACL → vicino alla DESTINAZIONE. Filtrando solo sul source, se la mettessi vicino alla sorgente rischieresti di bloccare traffico legittimo diretto altrove.
- Extended ACL → vicino alla SORGENTE. Essendo specifica su destinazione e porta, scarta subito il traffico indesiderato risparmiando banda lungo il percorso.
Trappole tipiche d’esame
- Scenario: ACL con soli
denye nessuna connettività. → Ricorda l’implicit deny any finale: serve unpermitesplicito per il traffico consentito, altrimenti passa zero. - Scenario: “consenti solo la subnet 172.16.8.0/22”. → La wildcard di
/22è0.0.3.255, non0.0.0.255. Calcola sempre 255.255.255.255 − subnet mask. - Scenario: dove metto la standard ACL? → Vicino alla destinazione; l’extended invece vicino alla sorgente. Invertirli è l’errore classico.
- Scenario: aggiungo una ACE a un’ACL numerata esistente. → Senza sequence number la nuova riga si accoda in fondo, dopo eventuali
permit any, risultando inefficace. Usa una named ACL o i sequence number per inserirla nel punto giusto. - Scenario: il
permit anyè sopra undeny host. → Per l’ordine top-down vince la prima corrispondenza: l’host non verrà mai bloccato. Le regole specifiche vanno prima di quelle generiche.