Assistente del server OpenVPN: rete più maschera, mai CIDR
L’assistente del server IPv4 accetta una rete allineata e una maschera puntata, non un suffisso CIDR. Controlla l’intervallo, conferma il pool nel registro, poi ridimensiona in sicurezza.
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.0Questa è 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.0Tieni 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 1195Cerca 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 tun0Se 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.