Una riga di server che mescola un suffisso CIDR con una maschera puntata ferma il demone prima ancora che apra una porta. L’assistente server per IPv4 vuole due argomenti separati: un indirizzo di rete allineato, poi la netmask in forma puntata. Tutto il resto su quella riga è inferenza, ed è nell’inferenza che le dimensioni del pool e le maschere dei client vanno storte.

I due argomenti che l’assistente accetta

Scrivi prima la rete e poi la maschera, senza nulla attaccato all’indirizzo:

server 10.72.16.0 255.255.240.0

Questa è la forma per una /20. La riga sotto è l’errore, e fallisce nell’analisi delle opzioni, non in esecuzione:

server 10.72.16.0/20 255.255.240.0

Tieni separate le due idee quando esegui il debug. Una lunghezza di prefisso e una maschera puntata descrivono lo stesso intervallo, ma l’assistente non accetta entrambe insieme, e una riga rifiutata produce un errore di opzioni che nomina la direttiva, non l’aritmetica.

Allinea la rete prima di digitare la maschera

Il primo indirizzo è l’indirizzo di rete dell’intervallo, non un comodo indirizzo client al suo interno. Per una /20 l’intervallo va da 10.72.16.0 a 10.72.31.255, e solo il primo è un argomento di rete valido. Una /21 usa 255.255.248.0 e copre da 10.72.16.0 fino a 10.72.23.255, quindi la sua riga è server 10.72.16.0 255.255.248.0.

Cambiare il prefisso cambia l’intervallo e nulla più. Non cambia quante volte un singolo client riceve un indirizzo, perché è una proprietà della topologia, non della maschera su questa riga.

Conferma il pool dal lato server

Avvia l’istanza in primo piano con registrazione dettagliata e leggi le righe che l’assistente emette. Il pool che ha costruito viene stampato all’avvio, il che è più affidabile che calcolare l’aritmetica a mano:

openvpn --config /etc/openvpn/server.conf --verb 4 --dev tun9 --port 1195

Cerca il riepilogo del pool vicino alla parte superiore dell’output. Elenca l’intervallo che l’assistente ha riservato, e se quell’intervallo non corrisponde alla tua intenzione, gli argomenti sulla riga sono sbagliati qualunque cosa dica l’aritmetica della maschera.

Poi collega un client e trova la riga che registra l’indirizzo che gli è stato assegnato. Quell’unico indirizzo, accanto all’intervallo del pool, ti dice se il client è finito dentro il blocco riservato o altrove rispetto alle tue attese. Se i due non concordano, correggi gli argomenti e non il client. Se concordano e il client non raggiunge comunque nulla, il pool non è mai stato il problema.

Leggi la maschera del client tenendo presente la topologia

Un client che mostra una /30 sulla sua interfaccia di tunnel non è prova di un pool rotto. Con indirizzamento punto a punto ogni client riceve un blocco piccolo e la maschera della sua interfaccia descrive quel blocco, mentre il pool del server copre l’insieme. Con una topologia a sottorete, invece, la maschera del client coincide con quella del pool. La maschera da sola quindi dice quale topologia è in gioco, non se il pool è stato scritto correttamente.

Controlla insieme la topologia configurata e l’indirizzo assegnato prima di concludere:

ip -4 addr show tun0

Se l’indirizzo è dentro il pool e la maschera è più stretta del pool, è la topologia che fa il suo lavoro. Se l’indirizzo è fuori dal pool, il pool è sbagliato, e nessuna ispezione lato client lo correggerà.

Cambiare un pool in funzione

Scegli un intervallo che non si sovrapponga al pool attuale, alla LAN o a qualsiasi rotta già inviata ai client. La sovrapposizione è il guasto che sopravvive a un riavvio e poi, giorni dopo, si manifesta come un sito irraggiungibile da una direzione.

Cambia la riga, riavvia e rileggi il pool di avvio prima di lasciar rientrare gli utenti. Se il nuovo intervallo entra in collisione con qualcosa, lo stesso output di avvio lo mostra subito, e tornare indietro è una modifica di una riga più un altro riavvio.

Tieni riservato il vecchio intervallo per un po’ dopo la modifica. I client che si riconnettono tardi possono ancora avere un indirizzo del pool precedente, e un nuovo intervallo che riutilizza quegli indirizzi produce assegnazioni duplicate che sembrano un guasto di routing. Il manuale di OpenVPN 2.6 documenta gli argomenti dell’assistente e la sua espansione, cosa che vale la pena leggere prima di supporre che una direttiva usi la stessa notazione della sua vicina.

Articoli correlati