La configuració d'OpenVPN al router es reverteix després de reiniciar: arregla el generador
El firmware que reconstrueix la seva configuració d'OpenVPN en cada arrencada descarta les teves edicions. Patcha el ganxo del generador i després compara el fitxer generat després d'un reinici.
El firmware d'un router domèstic o d'un NAS sovint reconstrueix la configuració d'OpenVPN a cada arrencada, així que una directiva que hi afegeixes sobreviu exactament fins a la propera arrencada. El mateix passa amb les claus escrites en un formulari web, on el valor desat pot tornar malmès després de desar. Cap d'aquests símptomes no vol dir que el canvi s'hagi rebutjat. Vol dir que l'edició ha anat a parar a un fitxer que el firmware tracta com a sortida, i que el lloc durador és un pas abans en la seqüència d'arrencada.
Per què es regenera el fitxer editat
Un script d'inici munta la configuració del servidor a partir d'una plantilla i després llança el dimoni, cosa que converteix el fitxer renderitzat en un artefacte de compilació i no en una font. Tot el que s'afegeix després de l'inici és invisible per a la propera execució d'aquell script. El segon patró és més subtil: les entrades de clau i certificat a la interfície web es desen en forma escapada, i desar el formulari pot empènyer aquest text escapat cap al fitxer que llegeix el dimoni. En qualsevol cas, la configuració renderitzada és el lloc equivocat per fer un canvi durador.
Mira què escriu la seqüència d'arrencada i quan ho escriu. La resposta és gairebé sempre un script dins del directori init o d'inici automàtic del firmware.
Insereix la directiva on l'script construeix el fitxer
Els aparells QTS regeneren la configuració del servidor OpenVPN dins del script init que engega el dimoni, així que l'edició ha de passar allà. Afegeix l'append immediatament abans de l'ordre d'inici en lloc d'editar el fitxer generat.
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 la inserció en una ordre que no es mogui, perquè els números de línia canvien entre compilacions. Com que el script init mateix es substitueix durant l'arrencada, el canvi s'ha de tornar a emetre des del ganxo d'inici automàtic del firmware cada cop que arrenca el sistema. Després d'un reinici, compta les aparicions al fitxer generat: una línia vol dir que el pedaç ha funcionat, mentre que dues volen dir que el ganxo s'executa més d'una vegada. Investiga l'execució doble per separat, perquè no és la mateixa fallada que un canvi que ha desaparegut.
Repara un formulari que va desar claus escapades
A les pàgines d'estil Asus, els camps de certificat i clau mostren text escapat, i desar després d'un retoc no relacionat pot tornar a escriure aquestes entitats al disc. Treballa des d'una còpia descodificada i desa només una vegada, quan totes les edicions estiguin a punt.
openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pemEn substituir un conjunt de paràmetres nou, enganxa només la càrrega base64 si l'etiqueta demana el cos de la clau, i conserva les línies d'armadura només quan el camp espera un bloc PEM complet. Recuperar una pàgina ja desada en la seva forma escapada normalment vol dir buidar els camps afectats i aplicar, cosa que permet al firmware tornar-los a construir. Genera qualsevol cosa per sobre de 2048 bits en una estació de treball, perquè el subministrament d'entropia del router fa l'operació lenta i de vegades poc fiable. Guarda el fitxer de paràmetres en un lloc on puguis arribar després d'un restabliment de fàbrica.
Torna a comprovar després d'actualitzacions
Les actualitzacions de firmware substitueixen els scripts init i poden esborrar el directori d'inici automàtic, així que el pedaç s'ha de tornar a instal·lar i provar. Compara el fitxer regenerat amb la còpia que vas guardar i confirma que la directiva hi és exactament una vegada. Un valor visible a la interfície web no és prova que el dimoni l'hagi rebut, perquè la pàgina llegeix camps desats. Escriu l'ordre del pedaç i la versió del firmware a les notes de manteniment perquè la propera actualització les arrossegui.
Després connecta un client i llegeix el registre del servidor per l'opció enviada. Un paràmetre que només ha existit mai en un formulari és un paràmetre que ningú no ha provat.