Smazání key-method z profilu OpenVPN nic nemění
Direktiva zmizela z parseru, ne z protokolu. Oddělte zastaralou volbu od formátu výměny klíčů, než začnete profil upravovat.
Profil, který roky fungoval, najednou odmítá nastartovat a zpráva uvádí direktivu, kterou si nikdo nepamatuje, že by ji přidal: key-method. Další výsledek hledání navrhuje přidat key-method 2 kvůli kompatibilitě, což je rada z jiné éry. Parser, který řádek odmítl, je současný a takovou volbu vůbec nemá. Odebrání řádku opraví start a nic nemění na tom, jak obě strany chrání relaci.
Právě tato mezera mezi tím, co profil obsahuje, a tím, co protokol skutečně dělá, je celé téma, a vysvětluje i několik dalších úprav, které lidé dělají současně. Vysvětluje také, proč tyto úpravy obvykle přicházejí v balíku.
Příznakem je chyba parsování, ne selhání handshake
Volby se čtou dřív, než se odešle jakýkoli paket. Profil s neznámou direktivou v této fázi selže, takže proces se nikdy nedostane k síti a nikdy nevyprodukuje chybu handshake. Formulace obvykle určí volbu i soubor, což z toho dělá jednu z nejsnáze přiřaditelných chyb. Neúčastní se toho žádný paket, trasa ani firewall.
openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
Pokud zpráva uvádí direktivu, diagnóza je hotová: soubor obsahuje něco, co toto sestavení nepřijímá. Pokud zpráva místo toho uvádí cestu k souboru, problémem je chybějící include nebo klíč, což je jiná část stejné startovací fáze.
Neměli byste usoudit, že klient nebo server potřebuje starší režim protokolu. Selhání parsování je problém slovníku mezi vaším souborem a binárkou a binárka v tomto případě prostě vypustila slovo ze svého slovníku.
Direktiva a přenosový formát jsou dvě různé věci
Starší volba key-method vybírala, jak se rámuje výměna klíčů TLS, a moderní výměna je metoda s více pakety, kterou tato volba dřív vyžadovala. Volba zmizela, protože už nic nevybírala; formát, který pojmenovávala, se stal jediným. Odebrání řádku tedy nechává relaci používat stejné rámování jako dřív. Textová úprava to nemůže změnit ani jedním směrem.
Proto je znovuzavedení staré binárky, aby se „obnovila“ metoda 2, špatná oprava. Neobnoví nic než starší parser se staršími výchozími hodnotami a stojí vás opravy, které přišly po něm. Stejná logika platí pro oslabení kontroly certifikátu nebo seznamu šifer v naději, že se spojení vrátí.
Užitečná kontrola je verze a naparsovaná konfigurace, ne přítomnost slova v souboru:
openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null
Co odstranit a ze kterého souboru
Upravujte soubor, který běžící proces skutečně čte, a jen ten. V balíčkovaných systémech je to obvykle profil v adresáři klienta nebo serveru uvedeném v unitě, ne kopie ve vašem domovském adresáři, kterou si držíte pro referenci. Generovaný profil se také může znovu sestavovat ze šablony, takže změna provedená jen v nasazené kopii se po dalším běhu provisioningu vrátí.
Smažte zastaralý řádek a nechte koncový bod, certifikáty, politiku šifer a nastavení řídicího kanálu na pokoji. To jsou podporované volby, které proces potřebuje, a nejsou s chybou parsování spojené. Pokud stejný profil obsahuje další direktivy, které neznáte, zkontrolujte každou z nich proti verzi, kterou spouštíte, místo abyste mazali jejich skupinu, dokud proces nenastartuje.
Potom spusťte zamýšlenou instanci a přečtěte její startovací výstup. Čistý start s přítomným listenerem je potvrzením, že je tato fáze hotová; test klienta potom odpovídá na jinou otázku.
Odmítnutý profil a odmítnutý klient vypadají podobně
Dvě selhání vytvářejí podobná vlákna podpory a potřebují různé důkazy. Server, který odmítá vlastní konfiguraci, nikdy nenastartuje, takže se k němu žádný klient nepřipojí. Server, který startuje dobře a jednoho klienta odmítá, běží a jeho log obsahuje důvod: problém s certifikátem, protlačená volba, kterou klient nepřijímá, neshoda šifry.
Odebraná volba není diagnózou pro druhý případ a sáhnout po ní znamená promarnit stejnou hodinu dvakrát. Pokud log klienta ukazuje odmítnutí serveru, čtěte toto odmítnutí; pokud ukazuje lokální chybu, souborem k prozkoumání je profil klienta. Sáhnout po direktivě, která už neexistuje, zdrží obě vyšetřování o stejnou míru.
Otázky kompatibility, na které řádek nikdy neodpověděl
Profily, které s touto direktivou kolují, obvykle nesou příběh o konkrétní platformě a příběh přežívá technický důvod. Mobilní nebo desktopový klient stále potřebuje úplný podporovaný profil: důvěryhodný řetězec certifikátů, datovou šifru, kterou obě strany přijímají, režim řídicího kanálu, který obě strany implementují, a žádné direktivy, které sestavení klienta odmítá. Nic z toho nerozhoduje přítomnost nebo nepřítomnost starého řádku key-method.
Komprese je samostatná otázka politiky stejného tvaru. Odebrání řádku key-method neříká nic o tom, zda je direktiva komprese ve vašem nasazení podporovaná nebo přijatelná, a obě rozhodnutí je třeba učinit nezávisle. Smazat několik bezpečnostně relevantních nastavení najednou, dokud se něco nepřipojí, je způsob, jak se z fungujícího profilu stane nevysvětlený.
Veďte krátký záznam o tom, co jste odebrali a proč: volba, verze, která ji odmítla, a příkaz, který ukázal chybu. Příští člověk, který profil zdědí, bude potřebovat přesně tyto tři skutečnosti, a zapsat je teď je levnější než je později rekonstruovat.