Un intervallo non è una rotta: trasforma 200-255 in tre prefissi
Una riga di rotta accetta una rete e una maschera, mai un indirizzo di inizio e fine. Somma l’intervallo in prefissi allineati prima che OpenVPN lo installi.
Le regole del firewall accettano un primo e un ultimo indirizzo, ad esempio da 192.168.0.200 a 192.168.0.255, mentre le rotte no. Una voce di rotta ha spazio solo per una rete e una maschera, il che significa che un intervallo contiguo deve diventare uno o più prefissi allineati prima che OpenVPN lo installi. Un profilo che abbina route-nopull a un intervallo non allineato è dove di solito si nasconde il guasto, perché il file viene analizzato e nessuna rotta corrisponde. Sistema i blocchi e il guasto diventa visibile con un solo comando.
Il mito: un intervallo è una rotta
Le tabelle di routing memorizzano coppie di rete e maschera e scelgono la corrispondenza più lunga, quindi un intervallo con inizio e fine non ha dove stare. Un prefisso che copre 256 indirizzi copre da .0 a .255, la metà di quella dimensione copre da .0 a .127, e solo un intervallo allineato a quei bordi viene mappato in un solo passo. Tutto il resto va tagliato in blocchi. Una rotta più piccola significa comunque l’intervallo originale.
Un intervallo che non è allineato al prefisso non è una rotta compressa. È un altro tipo di oggetto, e trattarlo come una rotta è dove inizia il guasto silenzioso.
L’allineamento è aritmetica, non stile
Le dimensioni dei blocchi sono fissate dalla lunghezza del prefisso. Un /29 può iniziare solo su un indirizzo divisibile per 8, un /28 su uno divisibile per 16, un /27 su uno divisibile per 32. Sposta un blocco dal suo confine e la maschera coprirà un insieme di indirizzi diverso da quello che intendevi.
Somma dal fondo. A ogni passo prendi il blocco allineato più grande che non supera la fine dell’intervallo, poi continua al primo indirizzo dopo di esso. I blocchi non possono sovrapporsi, perché ciascuno inizia dove si è fermato il precedente.
Due persone che lo fanno a mano dovrebbero arrivare allo stesso risultato. Un disaccordo significa che qualcuno ha permesso un inizio non allineato.
Lavora da 200 a 255
| Step | Start | Block that fits | Line for the profile |
|---|---|---|---|
| 1 | .200, multiple of 8 | /29, 8 addresses | 192.168.0.200 255.255.255.248 |
| 2 | .208, multiple of 16 | /28, 16 addresses | 192.168.0.208 255.255.255.240 |
| 3 | .224, multiple of 32 | /27, 32 addresses | 192.168.0.224 255.255.255.224 |
L’intervallo inizia a .200, che è un multiplo di 8, quindi il primo blocco è un /29 da .200 a .207. Dopo questi otto indirizzi il primo valore libero è .208, che si divide per 16, quindi un /28 prende da .208 a .223. Ciò che resta è da .224 a .255, trentadue indirizzi che iniziano su un multiplo di 32, quindi un /27. Quelle tre righe sono tutta la scomposizione.
Scrivile come righe di rotta invece che come prosa. Un profilo che contiene solo la prima riga copre otto indirizzi e lascia il resto fuori dal tunnel.
route-nopull
route 192.168.0.200 255.255.255.248
route 192.168.0.208 255.255.255.240
route 192.168.0.224 255.255.255.224
L’ultimo blocco richiede un controllo del confine. Dentro 192.168.0.224/27, .224 è l’indirizzo di rete e .255 è l’indirizzo di broadcast, quindi un host che deve rispondere su .255 è coperto dal prefisso e resta irraggiungibile. Sposta quell’host o dividi l’intervallo in modo diverso invece di instradare il blocco e sperare.
Cosa fa route-nopull al quadro
Aggiungi route-nopull solo quando le rotte spinte dal server non sono desiderate. Senza la direttiva, le rotte spinte e queste righe convivono, e vince il prefisso più specifico. Con essa spariscono anche le opzioni DNS e DHCP spinte, quindi la risoluzione dei nomi interna ha bisogno della propria configurazione. Quell’effetto collaterale sorprende chi ha aggiunto la direttiva per correggere un problema di rotta.
Aggiungila per la ragione giusta, non come riflesso automatico. Togliere le rotte spinte è una decisione politica con una conseguenza sul DNS. Se il server può spingere gli stessi tre prefissi, lascialo fare, e cancella le copie sul lato client così un solo proprietario controlla l’elenco.
Controlli che intercettano gli errori abituali
Verifica che ogni maschera sia una sequenza contigua di uni. Il valore 255.255.255.248 passa e 255.255.255.200 fallisce, e una maschera non contigua viene rifiutata o letta male. Poi conferma il percorso per un indirizzo di ogni blocco.
ip route get 192.168.0.205
ip route get 192.168.0.220
ip route get 192.168.0.240
Ogni risposta dovrebbe nominare l’interfaccia del tunnel. Un risultato che nomina l’adattatore fisico significa che la riga non è mai stata installata, cosa che accade spesso quando un gestore di rete desktop riscrive la tabella dopo che il profilo si connette.
Scegli un solo proprietario per l’elenco. Quando il server può spingere gli stessi prefissi, spingili ed elimina le modifiche sul lato client. Un solo proprietario significa che un errore di battitura ha un solo posto, e client e server non possono essere in disaccordo su quali indirizzi stanno dentro il tunnel.