Partnerio adresas pasikeitė sesijos viduje: ką daro OpenVPN float
float leidžia autentifikuotam partneriui sesijos viduje pakeisti savo išorinį adresą. Jis neatranda galinių taškų, neatidaro mirusios jungties ir nepraleidžia tapatybės patikrinimų.
Nešiojamasis kompiuteris persijungia nuo biuro Wi-Fi prie telefono hotspot, tunelis dar kelias sekundes laikosi, o paskui srautas sustoja, nors sąsaja vis dar tvirtina esanti prisijungusi. Serveryje būsenos sąrašas vis dar rodo seną viešą adresą. Tai situacija, kuriai egzistuoja float, ir kartu situacija, kurioje žmonės iš jo tikisi daug daugiau, nei jis daro. Teisingai supratus ribą, klaidinantis užstrigimas virsta arba vienos eilutės konfigūracijos pakeitimu, arba visiškai kitu tyrimu.
Ką float atlaisvina ir ko niekada neatlaisvina
Paprastai sesija toliau kalba su tuo išoriniu adresu ir portu, su kuriais prasidėjo, o paketai iš bet kur kitur ignoruojami. Parinktis float pašalina tą griežtą susiejimą, kai partneris jau įrodė save, todėl pasikeitęs šaltinio atvaizdavimas gali tęsti tą pačią sesiją, o ne būti išmestas. Kriptografiniuose patikrinimuose niekas nesikeičia: raktai, sertifikatai ir bet kokia HMAC apsauga lieka tiksliai tokie, kaip sukonfigūruota.
Tai sprendimas kiekvienam paketui, o ne politika, kas gali jungtis. Nežinoma mašina, siunčianti paketą iš naujo adreso, nieko neįrodė, ir jos paketas išmetamas kaip bet kuris kitas neautentifikuotas srautas. Tik tas srautas, kuris praeina pačios sesijos autentifikaciją, gali perkelti įrašytą partnerio adresą, todėl saugu palikti float įjungtą aplinkose, kuriose klientai juda.
Jis nieko nesako ir apie vidinį tunelį. Perkeltas išorinis adresas nepaskiria naujo tunelio adreso, nekeičia baseino ir nesuteikia partneriui prieigos prie ko nors naujo. Tunelio viduje prieš ir po perkėlimo galioja ta pati tapatybė ir tie patys stumiami maršrutai. Judėjimas taip pat iš naujo nesideri dėl duomenų kanalo, todėl suderintas šifras ir raktai tęsiasi.
Sesiją perkeliantis paketas turi autentifikuotis
Pradėkite sesiją įprastu būdu su sukonfigūruotu nuotoliniu galu, o float tvarko tai, kas nutinka pasikeitus atvaizdavimui. Mobilusis operatorius, srauto viduryje pernumeruojantis, NAT tarpinė, perrašanti savo porto atvaizdavimą, ar nešiojamasis kompiuteris, keičiantis viršutinę jungtį, visi sukuria tą pačią formą: autentifikuoti paketai iš naujo korteko, patenkantys į sesiją, kuri dar tiki senuoju.
Kai klausiama, ar float veikia, naudingas įrodymas yra baigtas rankos paspaudimas ir po jo priimtas šaltinio pakeitimas, o ne žurnalo eilutė vien apie adresą. Susiekite seną ir naują išorinį adresą su sesija, kuri liko gyva, ir tada patvirtinkite, kad srautas tikrai tęsėsi per tunelį.
Jei sesija miršta, o ne persikelia, iš naujo adreso atėjęs paketas greičiausiai nepraėjo autentifikacijos arba visai neatėjo. Abu atvejai iš kliento pusės atrodo vienodai. Serveryje viešosios sąsajos įrašas pasako, kuris iš jų yra, prieš liesdami bet kokią konfigūraciją.
Aptikimas yra visiškai atskiras mechanizmas
float nespėlioja vardų pagal laikmatį ir neseka dinaminio DNS įrašo. Jei serverio pagrindinis vardas pradeda spręstis į naują adresą, neveikiančiam klientui nėra priežasties to pastebėti ir nėra paketo iš naujo galinio taško, kurį reikėtų autentifikuoti. Ta problema priklauso pakartotinio prisijungimo logikai, paties kliento pakartotinio bandymo elgsenai ir DNS, o ne float.
Parinkties pridėjimas dar kartą nepajėgus kompensuoti to, kad nėra maršruto į naują adresą. Tai nepadės ir tada, kai partneris tyli, nes tylintis partneris niekada neatsiunčia autentifikuoto paketo, kuris ką nors perkeltų.
Apatinė ugniasienė taip pat turi žodį. Taisyklė, leidžianti tik seną išorinį galinį tašką, užblokuoja pasikeitusį adresą dar prieš OpenVPN jį pamatant, ir jokia kliento konfigūracija to neištaiso. Peržiūrėkite leidžiamų adresų gyvavimo ciklą kaip atskirą užduotį; taisyklės išplėtimas bet kuriam šaltiniui mažą problemą iškeičia į didelę.
Kai profilis priklauso NetworkManager
Komandinės eilutės profilis ir importuota jungtis yra atskiros konfigūracijos, o vienos redagavimas neliečia kitos. Prieš manydami, kad parinktis nepalaikoma, nustatykite, kokio tipo papildinį iš tikrųjų naudoja išsaugotas profilis ir kur gyvena jo reikšmės. Profilio UUID yra tas identifikatorius, kuris svarbus, kai ką nors tikrinate ar keičiate.
Tikrinkite išsaugotą jungtį, o ne originalų importo failą. Eilutė, išlikusi .ovpn faile, nieko neįrodo, jei aktyvus valdytojas jos niekada nepritaikė, o redaktorius be žymės langelio tam tikrai parinkčiai irgi nieko neįrodo apie protokolo galimybes.
Nelopkite supakuoto papildinio, kad pridėtumėte elgseną, ypač ne diff failu, parašytu istorinei nesusijusio komponento versijai. Jei įdiegta integracija tikrai negali išreikšti nustatymo, teisingas žingsnis yra palaikomas profilis arba kitas kliento kelias, kurį patvirtino diegimo savininkas.
Įrodykite perėjimą, o ne manykite jį
Atlikite testą taip, kaip įvyksta gedimas. Prisijunkite, patikrinkite srautą per tunelį, priverskite išorinį adresą pasikeisti ir tada patikrinkite tris dalykus: sesija dar egzistuoja, įrašytas partnerio adresas persikėlė ir tikra užklausa dar pasiekia tikslą. Viskas, kas mažiau nei visi trys, yra dalinis atsakymas.
Testuodami laikykite atkūrimo prieigą, nes judėjimo eksperimentai mėgsta palikti įstrigusią mašiną, iš kurios dirbate. Nuoseklioji konsolė arba nejuostinis maršrutas paverčia nepavykusį testą penkių minučių atkūrimu, o ne vizitu vietoje.
Galiausiai aprašykite tik tą atvejį, kurį išbandėte. Sėkmingas adreso pakeitimas sesijos metu nėra įrodymas, kad DNS migracijos, kita kliento implementacija ar perstatytas profilis elgsis taip pat. link-options dokumentacija tiksliai nurodo šios parinkties apimtį; jūsų testo žurnale turėtų būti nurodyta, kurią tos apimties dalį iš tikrųjų apėmėte.