Le impostazioni OpenVPN del router tornano dopo il riavvio: ripara il generatore
Il firmware che ricostruisce la configurazione OpenVPN a ogni avvio scarta le tue modifiche. Applica una patch all'aggancio del generatore, poi confronta il file generato dopo un riavvio.
Il firmware di un router consumer o di un NAS spesso ricostruisce la configurazione OpenVPN a ogni avvio, quindi una direttiva che aggiungi sopravvive esattamente fino al prossimo avvio. Lo stesso vale per le chiavi digitate in un modulo web, dove il valore memorizzato può tornare corrotto dopo il salvataggio. Nessuno di questi sintomi significa che la modifica sia stata rifiutata. Significa che la modifica è finita in un file che il firmware tratta come output, e che il posto duraturo si trova un passo prima nella sequenza di avvio.
Perché il file modificato viene rigenerato
Uno script di avvio assembla la configurazione del server da un modello e poi avvia il demone, il che rende il file renderizzato un artefatto di build anziché una fonte. Tutto ciò che viene aggiunto dopo l'avvio è invisibile all'esecuzione successiva di quello script. Il secondo schema è più sottile: gli input di chiave e certificato nell'interfaccia web sono memorizzati in forma con escape, e salvare il modulo può spingere quel testo con escape nel file che il demone legge. In ogni caso, la configurazione renderizzata è il posto sbagliato per una modifica duratura.
Guarda cosa scrive la sequenza di avvio e quando lo scrive. La risposta è quasi sempre uno script nella directory init o di avvio automatico del firmware.
Inserisci la direttiva dove lo script costruisce il file
I dispositivi QTS rigenerano la configurazione del server OpenVPN dentro lo script init che avvia il demone, quindi la modifica deve avvenire lì. Aggiungi l'appendice subito prima del comando di avvio invece di modificare il file generato.
sed -i '/daemon_mgr/i echo client-config-dir clientconfig >>/etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh
grep -c client-config-dir /etc/openvpn/server.confAncora l'inserimento a un comando che non si sposterà, perché i numeri di riga cambiano tra le build. Poiché lo script init stesso viene sostituito durante l'avvio, la modifica deve essere emessa di nuovo dall'aggancio di avvio automatico del firmware a ogni avvio del sistema. Dopo un riavvio, conta le occorrenze nel file generato: una riga significa che la patch ha funzionato, mentre due significano che l'aggancio viene eseguito più di una volta. Esamina l'esecuzione doppia separatamente, perché non è lo stesso guasto di una modifica svanita.
Ripara un modulo che ha memorizzato chiavi con escape
Nelle pagine in stile Asus i campi di certificato e chiave mostrano testo con escape, e un salvataggio dopo una modifica non correlata può riscrivere quelle entità sul disco. Lavora da una copia decodificata e salva una sola volta, quando tutte le modifiche sono pronte.
openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pemQuando sostituisci un nuovo insieme di parametri, incolla solo il payload base64 se l'etichetta chiede il corpo della chiave, e conserva le righe di armatura solo quando il campo si aspetta un blocco PEM completo. Recuperare una pagina già salvata nella sua forma con escape di solito significa svuotare i campi interessati e applicare, il che consente al firmware di ricostruirli. Genera qualsiasi cosa oltre 2048 bit su una workstation, perché l'approvvigionamento di entropia del router rende l'operazione lenta e talvolta inaffidabile. Conserva il file dei parametri in un posto raggiungibile dopo un ripristino di fabbrica.
Ricontrolla dopo gli aggiornamenti
Gli aggiornamenti firmware sostituiscono gli script init e possono cancellare la directory di avvio automatico, quindi la patch va reinstallata e ritestata. Confronta il file rigenerato con la copia che hai conservato e conferma che la direttiva sia presente esattamente una volta. Un valore visibile nell'interfaccia web non è prova che il demone l'abbia ricevuto, perché la pagina legge campi memorizzati. Scrivi il comando della patch e la versione del firmware nelle note di manutenzione così che il prossimo aggiornamento le porti avanti.
Poi collega un client e leggi il registro del server per l'opzione inviata. Un'impostazione che è mai esistita solo in un modulo è un'impostazione che nessuno ha testato.