Pagal programą ar pagal paskirties vietą veikiantis split tunneling: ką rinktis
Viena taisyklė seka procesą, kita – adresą. Rinkitės pagal tai, ką turite kontroliuoti, tada išbandykite pagalbinį procesą ir antrą programą tame pačiame poteinyje.
Pagal programą ir pagal paskirties vietą veikiantis split tunneling nėra du tos pačios užduoties nustatymai. Vienas klausia, kuris procesas siunčia paketą; kitas klausia, kur tas paketas keliauja. Taisyklė, sukurta pirmam klausimui, tyliai nepavyksta, kai srautas ateina iš pagalbinio proceso, o taisyklė antram klausimui nepavyksta, kai pagrindinio kompiuterio vardas išsprendžiamas į adresą, kurios niekada nenurodėte. Pasirinkite reikalavimą atitinkantį objektą ir įrodykite tai dviem bandomaisiais paketais: vienas turi naudoti tunelį, kitas – ne.
Dvi taisyklės veikia skirtinguose sluoksniuose
Programos taisyklė vykdoma virš tinklo sluoksnio, pagal tapatybę, kurią operacinė sistema priskiria siuntėjui. Android sistemoje tai UID už paketo, o VPN tarnyba kiekvienam UID nusprendžia, ar srautas patenka į tunelį. Apie paskirties vietą nieko neklausiama, todėl pasirinkta programa gali pasiekti bet ką, o jokia kita programa negali pasiekti vidinio tinklo.
Paskirties vietos taisyklė vykdoma pačiam paketui. Tunelio sąsaja turi prefiksų rinkinį, maršrutizavimo lentelė siunčia atitinkamą srautą į ją, o siunčiantis procesas neturi reikšmės. Todėl paskirties vietos taisyklė apima paslaugą, spausdintuvą ar paketinę užduotį, kurios niekas neprisiminė įtraukti, ir todėl ji negali būti išreikšta kaip būtent ši programa platformoje, kurios klientas niekada nežiūri į procesą.
Programos taisyklės tinka mobiliesiems klientams ir valdomiems agentams
Android pateikia pasirinkimą tiesiogiai: VpnService.Builder.addAllowedApplication() ir addDisallowedApplication() priima paketų pavadinimus ir vykdo sprendimą kiekvienam UID, kaip aprašyta Android VPN kūrėjo vadove. iOS turi atitikmenį per kiekvienos programos VPN taisykles, pagrįstas paketo identifikatoriais, paprastai pateikiamas MDM profiliu, o ne įvedamas ranka.
Darbalaukio klientai yra silpnoji vieta. Dauguma Windows ir macOS VPN klientų maršrutizuoja pagal paskirties vietą ir visiškai nesiūlo parinkiklio pagal procesą, nes tunelio tvarkyklė mato paketus, o ne procesus. Jei jūsų planas priklauso nuo vienos programos tuneliavimo nešiojamajame kompiuteryje, patikrinkite faktines kliento galimybes prieš projektuodami aplink tai; galbūt renkatės tarp paskirties vietų sąrašo ir antros mašinos.
Pasekmė, kurią žmonės praleidžia: tose platformose negalite imituoti programos taisyklės maršrutais. Pridėjus pagrindinio kompiuterio maršrutą programos serveriui, visų srautas tuneliuojamas į tą serverį, įskaitant naršyklę ir atnaujinimo programą.
Paskirties vietos taisyklės tinka potinklių sąrašams ir svetainių pasiekiamumui
WireGuard padaro modelį aiškų. AllowedIPs yra šifravimo rakto maršrutizavimas: vidinis paketas, kurio paskirties vieta patenka į partnerio sąrašą, šifruojamas tam partneriui, o visa kita išeina nešifruota įprastu keliu. Nėra proceso, kurį reikėtų įvardyti, ir jokio neaiškumo, kas įtraukta.
OpenVPN pasiekia tą pačią vietą per stumiamą maršrutizavimo lentelę. route-nopull sustabdo serverį nuo maršrutų dikto, po to kliento pusės route 10.20.0.0 255.255.0.0 vpn_gateway apima būtent biuro prefiksą. IPv6 yra atskiras teiginys kiekviename iš šių klientų, o jo pamiršimas yra labiausiai paplitęs būdas nutekėti aplink teisingai atrodantį IPv4 padalijimą.
Pagrindinio kompiuterio vardas nėra maršrutas. Jei profilis siūlo domeno lauką, traktuokite jį kaip vardą, kurį klientas išsprendžia vieną kartą, o ne kaip nuolatinį adresų diapazoną; turinio pristatymo tinklai ir apkrovos balansuotojai rytoj duos kitus adresus.
Kur lūžta abu modeliai: pagalbininkai, bendros paslaugos, resolveriai
Pagalbiniai procesai laužo programos taisykles taip, kad atrodo kaip serverio gedimas. Naršyklės atnaujinimo programa, gedimų pranešėjas, sinchronizavimo tarnyba, veikianti kaip SYSTEM, ir WebView, įterptas į kitą paketą, yra atskiros tapatybės, todėl tuneliuojant naršyklę tikrasis užklausimas gali likti už tunelio. Priešingai taip pat klaidina: pašalinta programa, kuri kviečia bendrą biblioteką tuneliuojamo proceso viduje, vis tiek savo srautą siunčia per tunelį.
Paskirties vietos taisyklės lūžta bendrose paslaugose ir varduose. Failų bendrinimo aplankai, spausdintuvai, vidinis DNS ir licencijų serveris gyvena adresuose, todėl vienos programos tunelis suteikia naršyklei prieigą, o prijungtas diskas lieka miręs. Šis aprėpties skirtumas nėra klaida nė viename modelyje, bet būtent todėl vienos programos tunelis taip dažnai sukuria situaciją, kai VPN veikia, o bendrinimas dingo.
Resolveriai kerta abu. Jei klientas nustato vidinius DNS serverius, bet operacinė sistema naudoja DNS per HTTPS į viešą resolverį, atsakymas ateina iš už tunelio ir paskirties vietos taisyklė gali niekada nesutapti. Patikrinkite, kuris resolveris iš tikrųjų atsakė, prieš darydami išvadą, kad taisyklė neteisinga, ir kliento pusėje patvirtinkite, ar jis apskritai įdiegė tunelio resolverį. Padalijimas, kuris palieka DNS už tunelio, maršrutizavimo lentelėje atrodo nepriekaištingai ir vis tiek nepavyksta kiekviename vidiniame varde.
Veiksmų planas: pasirinkti, taikyti, patikrinti
Pradėkite nuo reikalavimo, o ne nuo meniu. Jei tikslas yra tik ši programa gali naudoti tunelį, jums reikia programos taisyklių ir platformos, kuri jas palaiko. Jei tikslas yra šie tinklai pasiekiami per tunelį, jums reikia prefiksų. Jei atsakymas yra abu, įgyvendinkite juos kaip du atskirus valdiklius ir užsirašykite, kuris už kurią gedimą atsako.
Taikykite siauriausią formą, kurią galite išreikšti, tada patikrinkite klausdami maršrutizavimo lentelės, o ne kliento būsenos piktogramos:
ip route get 10.20.30.40
ip -6 route get 2001:db8:10::40
wg show wg0 allowed-ips
Get-NetRoute -DestinationPrefix 10.20.0.0/16
Find-NetRoute -RemoteIPAddress 10.20.30.40
Pirmosios dvi eilutės įvardija sąsają, kurią naudotų tikra paskirties vieta; wg show išspausdina sukonfigūruotą prefiksų sąrašą; Windows sistemoje Find-NetRoute atsako į tą patį klausimą, į kurį atsakys dėklas, kai paketas bus išsiųstas. Jei sąsaja yra tunelis, taisyklė sutapo.
Tada išbandykite antrą paketą, kuris turėtų būti pašalintas, iš kitos programos, į tą pačią paskirties vietą. Užrašykite biliete kliento versiją, taisyklės tipą, prefiksų ar paketų sąrašą ir du pastebėtus rezultatus. Būtent ši rezultatų pora pasako kitam inžinieriui, ar politika sukonfigūruota neteisingai, ar srautas jai niekada nepriklausė.