Nastavení OpenVPN na routeru se po restartu vrací: opravte generátor
Firmware, který při každém startu znovu sestavuje konfiguraci OpenVPN, vaše úpravy zahodí. Opravte háček generátoru a poté po jednom restartu porovnejte vygenerovaný soubor.
Firmware spotřebitelského routeru nebo NAS často při každém startu znovu sestavuje konfiguraci OpenVPN, takže direktiva, kterou přidáte, přežije přesně do dalšího startu. Totéž platí pro klíče zadané do webového formuláře, kde se uložená hodnota může po uložení vrátit zkomolená. Ani jeden z těchto příznaků neznamená, že byla změna odmítnuta. Znamená to, že úprava skončila v souboru, který firmware považuje za výstup, a trvalé místo je o krok dřív v sekvenci startu.
Proč se upravený soubor generuje znovu
Spouštěcí skript sestaví konfiguraci serveru ze šablony a poté spustí démona, čímž se vykreslený soubor stává artefaktem sestavení, nikoli zdrojem. Cokoli přidané po startu je pro příští běh tohoto skriptu neviditelné. Druhý vzorec je jemnější: vstupy klíče a certifikátu ve webovém rozhraní se ukládají v escapované podobě a uložení formuláře může tento escapovaný text zapsat do souboru, který démon čte. V obou případech je vykreslená konfigurace nesprávné místo pro trvalou změnu.
Podívejte se, co sekvence startu zapisuje a kdy. Odpovědí je téměř vždy skript v adresáři init nebo automatického spouštění firmwaru.
Vložte direktivu tam, kde skript soubor sestavuje
Zařízení QTS regenerují konfiguraci serveru OpenVPN uvnitř init skriptu, který spouští démona, takže úprava musí proběhnout tam. Přidejte připojení bezprostředně před příkaz pro spuštění, místo abyste upravovali vygenerovaný soubor.
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.confUkotvěte vložení na příkaz, který se nepohne, protože čísla řádků se mezi sestaveními mění. Protože se init skript sám při startu nahrazuje, musí se změna znovu vydat z háčku automatického spouštění při každém startu systému. Po jednom restartu spočítejte výskyty ve vygenerovaném souboru: jeden řádek znamená, že záplata zabrala, dva znamenají, že háček běží více než jednou. Dvojí běh prošetřete zvlášť, protože to není stejná závada jako změna, která zmizela.
Opravte formulář, který uložil escapované klíče
Na stránkách ve stylu Asus zobrazují pole certifikátu a klíče escapovaný text a uložení po nesouvisející úpravě může tyto entity zapsat zpět na disk. Pracujte z dekódované kopie a uložte jen jednou, až budou všechny úpravy hotové.
openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pemPři výměně nové sady parametrů vložte jen datovou část base64, pokud pole žádá tělo klíče, a řádky pancíře zachovejte jen tehdy, když pole očekává celý blok PEM. Obnova stránky už uložené v escapované podobě obvykle znamená vymazat postižené vstupy a použít, což firmwaru umožní je znovu sestavit. Generujte cokoli nad 2048 bitů na pracovní stanici, protože zásoba entropie routeru dělá operaci pomalou a někdy nespolehlivou. Uložte soubor s parametry někam, kam se dostanete i po továrním resetu.
Po aktualizacích zkontrolujte znovu
Aktualizace firmwaru nahrazují init skripty a mohou smazat adresář automatického spouštění, takže záplatu je nutné znovu nainstalovat a otestovat. Porovnejte regenerovaný soubor s kopií, kterou jste si ponechali, a potvrďte, že direktiva je přítomna právě jednou. Hodnota viditelná ve webovém rozhraní není důkazem, že ji démon přijal, protože stránka čte uložená pole. Zapište příkaz záplaty a verzi firmwaru do poznámek k údržbě, aby je příští aktualizace přenesla dál.
Poté připojte klienta a přečtěte v protokolu serveru předávanou volbu. Nastavení, které kdy existovalo jen ve formuláři, je nastavení, které nikdo neotestoval.