La gestione del traffico IPv4 basato sul filtraggio di indirizzi IP non può prescindere dal concetto di WILDCARD MASK, una sequenza di 32 bit che indica quali bit dell’indirizzo IP devono essere considerati per applicare le regole di filtro.
La wildcard mask si presenta in maniera simile alla subnet mask ma con regole del tutto diverse. Mentre la subnet mask identifica la network e la parte host dell’indirizzo, la wildcard mask utilizza i bit 0 e 1 per identificare i singoli indirizzi IP o ad un gruppo di essi in un modo molto più flessibile rispetto alla rigidità della subnet mask.
Le regole che la wildcard segue sono le seguenti:
- Bit a 0 – il corrispondente bit dell’indirizzo IP viene controllato
- Bit a 1 – il corrispondente bit dell’indirizzo IP viene ignorato
Vediamo un esempio:
Indirizzo IP 192.168.001.000 11000000.10101000.00000001.00000000
Wildcard mask 000.000.000.255 00000000.00000000.00000000.11111111
Applicando la maschera 0.0.0.255 all’IP 192.168.1.0 si ottiene una selezione di tutti gli IP che hanno i primi tre byte posti a 192.168.1, l’ultimo byte viene ignorato.
A prima vista sembrerebbe il complementare della subnet mask, infatti il risultato dell’esempio precedente è la network 192.168.1.0 255.255.255.0. In realtà la wildcard mask permette di superare il concetto di network identificando l’indirizzo IP o i gruppi di indirizzi IP in base ai singoli bit degli stessi.
Supponiamo, per esempio, di voler selezionare tutti gli indirizzi dispari della network 192.168.1.0/24. Con la subnet mask tale compito sarebbe impossibile, mentre con la wildcard mask:
- Fisso i primi tre byte della 0 così da verificare il matching di essi con 192.168.1
- Considerato che tutti gli indirizzi dispari finiscono con l’ultimo bit dell’ultimo byte a 1 dovrò considerare l’ultimo byte della maschera in modo che garantisca il matching dell’ultimo bit quindi 11111110. Avrò quindi la wildcard mask pari a 0.0.0.254 che applicata all’indirizzo 192.168.1.1 selezionerà tutti gli indirizzi dispari della rete 192.168.1.0, applicata all’indirizzo 192.168.1.2 selezionerà tutti gli indirizzi pari della medesima rete.
192.168.001.001 –> 00000001 192.168.001.002 –> 00000010
000.000.000.254 –> 11111110 controlla solo l’ultimo bit dell’Ip 000.000.000.254 –> 11111110
Facciamo un altro esempio per meglio chiarire il concetto:
supponiamo di voler selezionare gli ip della rete 192.168.1.0/24 il cui ultimo byte va da 4 a 7 cioè da 192.168.1.4 a 192.168.1.7
.4 –> 00000100
.7 –> 00000111
Si nota facilmente che gli ultimi due bit identificano, variando, il range di ip che ci interessa, quindi la wildcard mask da utilizzare dovrà ignorare il controllo sugli ultimi due bit lasciando fissi gli altri, pertanto la wildcard mask da utilizzare sarà 0.0.0 con ultimo byte pari a 00000011 cioe’ .3
In conclusione 192.168.1.4 0.0.0.3 seleziona gli indirizzi IP nel range 192.168.1.4 – 192.168.1.7.