Profil, ktorý roky fungoval, zrazu odmieta naštartovať a správa uvádza direktívu, ktorú si nikto nepamätá, že by ju pridal: key-method. Ďalší výsledok hľadania navrhuje pridať key-method 2 kvôli kompatibilite, čo je rada z inej éry. Parser, ktorý riadok odmietol, je súčasný a takú voľbu vôbec nemá. Odstránenie riadku opraví štart a nič nemení na tom, ako obe strany chránia reláciu.

Práve táto medzera medzi tým, čo profil obsahuje, a tým, čo protokol skutočne robí, je celá téma, a vysvetľuje aj niekoľko ďalších úprav, ktoré ľudia robia súčasne. Vysvetľuje tiež, prečo tieto úpravy zvyčajne prichádzajú v jednom balíku.

Príznakom je chyba parsovania, nie zlyhanie handshake

Voľby sa čítajú skôr, než sa odošle akýkoľvek paket. Profil s neznámou direktívou v tejto fáze zlyhá, takže proces sa nikdy nedostane k sieti a nikdy nevytvorí chybu handshake. Formulácia zvyčajne určí voľbu aj súbor, čo z toho robí jednu z najľahšie priraditeľných chýb. Nezúčastňuje sa na tom žiadny paket, trasa ani firewall.

openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log

Ak správa uvádza direktívu, diagnóza je hotová: súbor obsahuje niečo, čo toto zostavenie neprijíma. Ak správa namiesto toho uvádza cestu k súboru, problémom je chýbajúci include alebo kľúč, čo je iná časť tej istej štartovacej fázy.

Nemali by ste usúdiť, že klient alebo server potrebuje starší režim protokolu. Zlyhanie parsovania je problém slovníka medzi vaším súborom a binárkou a binárka v tomto prípade jednoducho vypustila jedno slovo zo svojho slovníka.

Direktíva a prenosový formát sú dve rozdielne veci

Staršia voľba key-method vyberala, ako sa rámuje výmena kľúčov TLS, a moderná výmena je metóda s viacerými paketmi, ktorú táto voľba kedysi vyžadovala. Voľba zmizla, pretože už nič nevyberala; formát, ktorý pomenúvala, sa stal jediným. Odstránenie riadku teda necháva reláciu s rovnakým rámovaním ako predtým. Textová úprava to nemôže zmeniť ani jedným smerom.

Preto je znovuzavedenie starej binárky, aby sa „obnovila“ metóda 2, nesprávna oprava. Neobnoví nič okrem staršieho parsera so staršími predvolenými hodnotami a stojí vás opravy, ktoré prišli po ňom. Rovnaká logika platí pre oslabenie kontroly certifikátu alebo zoznamu šifier v nádeji, že sa spojenie vráti.

Užitočná kontrola je verzia a naparsovaná konfigurácia, nie prítomnosť slova v súbore:

openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null

Čo odstrániť a z ktorého súboru

Upravujte súbor, ktorý bežiaci proces skutočne číta, a iba ten. V balíčkovaných systémoch je to zvyčajne profil v adresári klienta alebo servera uvedenom v unite, nie kópia vo vašom domovskom adresári, ktorú si držíte pre referenciu. Generovaný profil sa môže aj znovu zostaviť zo šablóny, takže zmena vykonaná len v nasadenej kópii sa po ďalšom behu provisioning vráti.

Vymažte zastaraný riadok a nechajte koncový bod, certifikáty, politiku šifier a nastavenia riadiaceho kanála na pokoji. Sú to podporované voľby, ktoré proces potrebuje, a nie sú spojené s chybou parsovania. Ak ten istý profil obsahuje ďalšie direktívy, ktoré nepoznáte, skontrolujte každú z nich voči verzii, ktorú spúšťate, namiesto toho, aby ste ich skupinu mazali, kým proces nenabehne.

Potom spustite zamýšľanú inštanciu a prečítajte jej štartovací výstup. Čistý štart s prítomným listenerom je potvrdením, že táto fáza je hotová; test klienta potom odpovedá na inú otázku.

Odmietnutý profil a odmietnutý klient vyzerajú rovnako

Dve zlyhania vytvárajú podobné vlákna podpory a vyžadujú odlišné dôkazy. Server, ktorý odmieta vlastnú konfiguráciu, nikdy nenabehne, takže sa k nemu nemôže pripojiť žiadny klient. Server, ktorý nabehne dobre a jedného klienta odmietne, beží, a jeho log obsahuje dôvod: problém s certifikátom, pretlačená voľba, ktorú klient neprijíma, nesúlad šifry.

Odstránená voľba nie je diagnózou pre druhý prípad a siahnuť po nej znamená premrhať tú istú hodinu dvakrát. Ak log klienta ukazuje odmietnutie servera, čítajte toto odmietnutie; ak ukazuje lokálnu chybu, súborom na preskúmanie je profil klienta. Siahnuť po direktíve, ktorá už neexistuje, zdrží obe vyšetrovania rovnako.

Otázky kompatibility, na ktoré riadok nikdy neodpovedal

Profily, ktoré kolujú s touto direktívou, zvyčajne nesú príbeh o konkrétnej platforme a príbeh prežíva technický dôvod. Mobilný alebo desktopový klient stále potrebuje úplný podporovaný profil: dôveryhodný reťazec certifikátov, dátovú šifru, ktorú prijímajú obe strany, režim riadiaceho kanála, ktorý obe strany implementujú, a žiadne direktívy, ktoré zostavenie klienta odmieta. Nič z toho nerozhoduje prítomnosť alebo neprítomnosť starého riadku key-method.

Kompresia je samostatná otázka politiky rovnakého tvaru. Odstránenie riadku key-method nehovorí nič o tom, či je direktíva kompresie vo vašom nasadení podporovaná alebo prijateľná, a obe rozhodnutia treba urobiť nezávisle. Vymazanie niekoľkých bezpečnostne relevantných nastavení naraz, kým sa niečo nepripojí, je spôsob, akým sa z fungujúceho profilu stane nevysvetlený.

Veďte krátky záznam o tom, čo ste odstránili a prečo: voľba, verzia, ktorá ju odmietla, a príkaz, ktorý ukázal chybu. Ďalší človek, ktorý profil zdedí, bude potrebovať presne tie tri skutočnosti, a zapísať ich teraz je lacnejšie než ich neskôr rekonštruovať.

Súvisiace články