Řádek se opakuje každých několik sekund a vypadá jako příčina všeho: paket jménem control hard reset, který přichází od klienta, jenž se nikam nedostane. Není to chyba. Je to první zpráva nové relace a opakování je symptomem něčeho jiného, co selhává dál. Oddělit, co říká označení, od toho, co spojení udělalo potom, je celá diagnóza.

Opkód označuje pozici v protokolu

OpenVPN multiplexuje několik druhů paketů přes jeden socket a opkód sděluje příjemci, který druh drží. Pakety hard-reset otevírají relaci, řídicí pakety nesou materiál handshake, potvrzení potvrzují příjem a datové pakety nesou užitečné zatížení tunelu. Přečtení prvního bajtu ukáže, kam v této výměně paket patří, a definice paketů ve zdrojovém kódu pojmenovávají každou rodinu výslovně.

To je vše, co říká. Paket označený jako počáteční reset klienta dokazuje, že paket dorazil do vašeho pozorovacího bodu a že protějšek chce zahájit relaci. Nedokazuje, že klient důvěřuje vašemu certifikátu, že jeho přihlašovací údaje byly přijaty nebo že datový kanál byl někdy použitelný.

Přípona V2 je značka generace protokolu pro tuto rodinu paketů, nikoli verze produktu a nikoli nastavení, které instalujete. Nic v názvu se netýká resetování tunelu, restartu služby nebo mazání mezipaměti.

Co klient v tu chvíli skutečně dělá

Klient otevírá identifikátor relace, ke kterému obě strany připojí následující řídicí provoz. Je-li nakonfigurována ochrana řídicího kanálu, nese tento první paket už HMAC, který příjemci umožní rozhodnout, zda má na zbytek výměny vynaložit úsilí. Příjemce, který jej nemůže ověřit, paket tiše zahodí, a proto špatný sdílený klíč vypadá jako klient, který mluví do prázdna.

Uživatelsky viditelné se ještě nic nestalo. Nebyl ověřen žádný certifikát, nebylo nabídnuto žádné uživatelské jméno a nebyla přidělena žádná adresa tunelu. Reset je předehrou handshake, takže jakýkoli soud o spojení je v tomto bodě předčasný.

U nečinné smyčky opakovaného připojení je zajímavým detailem interval. Klient, který zkouší znovu v pevném cyklu bez pokroku, bývá odmítnut dřív, než se může posunout, a důvod je v logu protějšku, nikoli v názvu paketu.

Kde se po resetu skrývá skutečná závada

Přečtěte oba logy vedle sebe a najděte první událost, která není reset. U klienta se selhání ověření certifikátu hlásí s konkrétním důvodem: prošlý certifikát, neshoda názvu nebo neznámý vydavatel. Na serveru se odmítnutí přihlašovacích údajů hlásí jako selhání autentizace s vlastním důvodem. Obojí je mnohem konkrétnější než opakovaný pohled serveru na nové pokusy.

Spárujte jeden pokus podle časového razítka, místo abyste každý log četli izolovaně, protože stejné selhání se objevuje na obou místech s jinou formulací a jinou závažností. Protějšek, který to vzdá, obvykle uvede proč.

Pokud žádná strana nehlásí odmítnutí a výměna přesto ustrne, hranicí je dosažitelnost, nikoli důvěra. Firewall zahazující zpětný směr, zařízení pro překlad síťových adres, kterému vyprší mapování, nebo problém s MTU, který zabíjí větší handshake pakety, to vše vytváří zaseknutou výměnu bez jakékoli chyby autentizace.

grep -nE 'VERIFY|AUTH_FAILED|TLS Error|SIGUSR1' /var/log/openvpn*.log

Toto hledání není samo o sobě diagnózou, ale jedním krokem vás přesune od slovníku protokolu ke skutečné třídě závady.

Proč je vypnutí ověřování špatný reflex

Když se reset stále objevuje, nejrychleji vypadající opravou je vypnout ověřování certifikátů nebo opustit ochranu řídicího kanálu, aby se něco připojilo. To vymění diagnostikovatelnou závadu za nediagnostikovatelnou a nechá nasazení přijímat protějšky, které bylo postaveno odmítat.

Změňte místo toho hranici, která skutečně selhala. Problém důvěry patří certifikační autoritě a profilu, který na ni odkazuje. Problém času patří hodinám. Problém přihlašovacích údajů patří autentizačnímu backendu, který je odmítl, a nedostupný protějšek patří cestě mezi oběma hostiteli.

Opkód je v rozhovoru s podporou užitečný pro jednu věc: řekne vám, že protějšek zašel dost daleko na to, aby to zkusil. Co se stalo potom, je to, co potřebujete vědět, a je to zapsáno v tom logu, který zaznamená první konkrétní odmítnutí. Začněte tam a řádek resetu přestane vypadat jako příčina a začne vypadat jako časové razítko.

Související články