P_CONTROL_HARD_RESET_CLIENT_V2 në log: a është gabim?
Kodi hard-reset hap një sesion; nuk është defekt. Vazhdoni të lexoni për të gjetur dështimin e certifikatës, kredencialeve ose rrugëtimit që ju ndaloi vërtet.
Rreshti përsëritet çdo pak sekonda dhe duket si shkaku i gjithçkaje: një paketë e quajtur control hard reset, që vjen nga një klient që nuk arrin askund. Nuk është gabim. Është mesazhi i parë i një sesioni të ri, dhe përsëritja është simptom i diçkaje tjetër që dështon më tej. Ndarja e asaj që thotë etiketa nga ajo që bëri lidhja më pas është e gjithë diagnoza.
Kodi emërton një pozicion në protokoll
OpenVPN multiplekson disa lloje paketash mbi një socket, dhe kodi i tregon marrësit cilin lloj mban. Paketat hard-reset hapin një sesion, paketat e kontrollit mbajnë materialin e shtrëngimit të duarve, konfirmimet konfirmojnë marrjen, dhe paketat e të dhënave mbajnë ngarkesën e tunelit. Leximi i bajtit të parë tregon ku bën pjesë paketa në atë shkëmbim, dhe përkufizimet e paketave në kodin burimor emërtojnë çdo familje në mënyrë eksplicite.
Kjo është gjithçka që thotë. Një paketë e etiketuar si rivendosje fillestare e klientit provon se paketa arriti në pikën tuaj të vëzhgimit dhe se partneri dëshiron të fillojë një sesion. Nuk provon se klienti i besoi certifikatës tuaj, se kredencialet e tij u pranuan, ose se një kanal të dhënash u bë ndonjëherë i përdorshëm.
Prapashtesa V2 është një shenjë gjenerate protokolli për atë familje paketash, jo një version produkti dhe jo një cilësim që instaloni. Asgjë në emër nuk i referohet rivendosjes së një tuneli, rinisjes së një shërbimi ose pastrimit të një cache.
Çfarë bën klienti në të vërtetë në atë moment
Klienti hap një identifikues sesioni të cilin të dy skajet do t'i lidhin trafikun e kontrollit të mëpasshëm. Kur mbrojtja e kanalit të kontrollit është konfiguruar, ajo paketa e parë tashmë mban HMAC-in që lejon marrësin të vendosë nëse ia vlen të shpenzojë përpjekje për pjesën tjetër të shkëmbimit. Një marrës që nuk mund ta verifikojë atë e hedh paketën në heshtje, dhe kjo është arsyeja pse një çelës i përbashkët i gabuar duket si një klient që flet në zbrazëti.
Asgjë e dukshme për përdoruesin nuk ka ndodhur ende. Asnjë certifikatë nuk është vërtetuar, asnjë emër përdoruesi nuk është ofruar dhe asnjë adresë tuneli nuk është caktuar. Rivendosja është hyrja e shtrëngimit të duarve, pra çdo gjykim për lidhjen në këtë pikë është i parakohshëm.
Për një cikël ripërtëritjeje të papunë, detaji interesant është intervali. Një klient që riprovoi në një cikël të fiksuar pa përparim zakonisht refuzohet para se të mund të përparojë, dhe arsyeja është në logun e partnerit, jo në emrin e paketës.
Ku fshihet dështimi i vërtetë pas rivendosjes
Lexoni dy logët krah për krah dhe gjeni ngjarjen e parë që nuk është rivendosje. Në klient, një dështim i verifikimit të certifikatës raportohet me arsyen konkrete: një certifikatë e skaduar, një mospërputhje emri ose një emetues i panjohur. Në server, një refuzim i kredencialeve raportohet si dështim autentikimi me arsyen e vet. Të dyja janë shumë më konkrete se pamja e përsëritur e serverit për provat e reja.
Përputhni një provë sipas vulës kohore në vend që të lexoni çdo log të izoluar, sepse i njëjti dështim shfaqet në të dyja vendet me formulim dhe ashpërsi të ndryshme. Partneri që dorëzohet zakonisht thotë përse.
Nëse asnjëra palë nuk raporton refuzim dhe shkëmbimi ngec gjithsesi, kufiri është arritshmëria dhe jo besimi. Një firewall që hedh drejtimin e kthimit, një pajisje përkthimi e adresave të rrjetit që skadon mapimin, ose një problem MTU që vret paketat më të mëdha të shtrëngimit të duarve, të gjitha prodhojnë një shkëmbim të ngecur pa asnjë gabim autentikimi.
grep -nE 'VERIFY|AUTH_FAILED|TLS Error|SIGUSR1' /var/log/openvpn*.log
Ai kërkim nuk është diagnozë më vete, por ju zhvendos nga fjalori i protokollit në një klasë reale dështimi në një hap.
Pse çaktivizimi i verifikimit është refleksi i gabuar
Kur rivendosja vazhdon të shfaqet, rregullimi që duket më i shpejtë është çaktivizimi i verifikimit të certifikatave ose heqja dorë nga mbrojtja e kanalit të kontrollit që të lidhet diçka. Kjo shkëmben një dështim të diagnozueshëm me një të padiagnozueshëm, dhe e lë vendosjen të pranojë partnerë që ishte ndërtuar t'i refuzonte.
Ndryshoni në vend të kësaj kufirin që dështoi vërtet. Një problem besimi i përket autoritetit të certifikatave dhe profilit që i referohet. Një problem kohe i përket orës. Një problem kredencialesh i përket backend-it të autentikimit që i refuzoi, dhe një partner i paarritshëm i përket rrugës midis dy hosteve.
Kodi është i dobishëm në një bisedë mbështetjeje për një gjë: ju thotë se partneri shkoi mjaft larg për të provuar. Çfarë ndodhi më pas është ajo që duhet të dini, dhe është shkruar në çdo log që regjistron refuzimin e parë konkret. Filloni atje, dhe rreshti i rivendosjes pushon së dukuri si shkak dhe fillon të duket si vulë kohore.