P_CONTROL_HARD_RESET_CLIENT_V2 u logu: je li to greška?
Hard-reset opkod otvara sesiju, nije kvar. Čitajte dalje da pronađete grešku certifikata, akreditiva ili usmjeravanja koja vas je zaustavila.
Linija se ponavlja svakih nekoliko sekundi i izgleda kao uzrok svega: paket nazvan control hard reset, koji dolazi od klijenta koji nigdje ne stiže. To nije greška. To je prva poruka nove sesije, a ponavljanje je simptom nečeg drugog što kasnije pada. Razdvajanje onoga što oznaka kaže od onoga što je veza uradila poslije cijela je dijagnoza.
Opkod imenuje poziciju u protokolu
OpenVPN multipleksira nekoliko vrsta paketa preko jednog soketa, a opkod govori primaocu koju vrstu drži. Hard-reset paketi otvaraju sesiju, kontrolni paketi nose materijal rukovanja, potvrde potvrđuju prijem, a data paketi nose korisni teret tunela. Čitanje prvog bajta pokazuje gdje u toj razmjeni paket pripada, a definicije paketa u izvornom kodu imenuju svaku familiju izričito.
To je sve što govori. Paket označen kao početni reset klijenta dokazuje da je paket stigao do vaše tačke posmatranja i da druga strana želi započeti sesiju. Ne dokazuje da je klijent povjerovao vašem certifikatu, da su njegovi akreditivi prihvaćeni ili da je data kanal ikada postao upotrebljiv.
Sufiks V2 je oznaka generacije protokola za tu familiju paketa, a ne verzija proizvoda i ne postavka koju instalirate. Ništa u imenu ne odnosi se na resetovanje tunela, ponovno pokretanje servisa ili čišćenje keša.
Šta klijent zapravo radi u tom trenutku
Klijent otvara identifikator sesije na koji će obje strane prikačiti naredni kontrolni saobraćaj. Kada je konfigurisana zaštita kontrolnog kanala, taj prvi paket već nosi HMAC koji primaocu omogućava da odluči hoće li trošiti trud na ostatak razmjene. Primalac koji ga ne može provjeriti tiho odbacuje paket, zbog čega pogrešan zajednički ključ izgleda kao klijent koji govori u prazno.
Ništa vidljivo korisniku još se nije dogodilo. Nijedan certifikat nije validiran, nijedno korisničko ime nije ponuđeno i nijedna adresa tunela nije dodijeljena. Reset je preambula rukovanja, pa je svaka ocjena veze u ovom trenutku preuranjena.
Za praznu petlju ponovnog povezivanja zanimljiv detalj je interval. Klijent koji pokušava ponovo u fiksnom ciklusu bez napretka obično se odbija prije nego što može napredovati, a razlog je u logu druge strane, a ne u imenu paketa.
Gdje se skriva pravi kvar nakon reseta
Pročitajte dva loga jedan uz drugi i pronađite prvi događaj koji nije reset. Kod klijenta se neuspjeh validacije certifikata prijavljuje s konkretnim razlogom: istekao certifikat, nesklad imena ili nepoznat izdavalac. Na serveru se odbijanje akreditiva prijavljuje kao neuspjeh autentifikacije s vlastitim razlogom. Oba su daleko konkretniji od ponovljenog pogleda servera na nove pokušaje.
Uparite jedan pokušaj po vremenskoj oznaci umjesto čitanja svakog loga izolovano, jer se isti neuspjeh pojavljuje na oba mjesta s različitom formulacijom i različitom težinom. Strana koja odustaje obično navede zašto.
Ako nijedna strana ne prijavljuje odbijanje, a razmjena i dalje staje, granica je dostupnost, a ne povjerenje. Firewall koji odbacuje povratni smjer, uređaj za prevođenje mrežnih adresa koji ističe mapiranje ili problem s MTU-om koji ubija veće pakete rukovanja svi proizvode zastalu razmjenu bez ikakve greške autentifikacije.
grep -nE 'VERIFY|AUTH_FAILED|TLS Error|SIGUSR1' /var/log/openvpn*.log
Ta pretraga nije dijagnoza sama po sebi, ali vas u jednom koraku premješta iz protokolarnog rječnika u stvarnu klasu kvara.
Zašto je ukidanje provjere pogrešan refleks
Kada se reset stalno pojavljuje, najbrže rješenje na izgled je isključiti validaciju certifikata ili odustati od zaštite kontrolnog kanala da se nešto poveže. To mijenja dijagnostikovan kvar za nedijagnostikov, i ostavlja instalaciju da prihvata strane koje je napravljena da odbije.
Promijenite umjesto toga granicu koja je zaista pala. Problem povjerenja pripada sertifikacionom tijelu i profilu koji ga referencira. Problem vremena pripada satu. Problem akreditiva pripada autentifikacionom backendu koji ga je odbio, a nedostupna strana pripada putu između dva hosta.
Opkod je u razgovoru s podrškom koristan za jednu stvar: govori vam da je druga strana otišla dovoljno daleko da pokuša. Ono što se dogodilo poslije je ono što trebate znati, i to je zapisano u onom logu koji bilježi prvo konkretno odbijanje. Pođite odatle, i linija reseta prestaje izgledati kao uzrok i počinje izgledati kao vremenska oznaka.