Windowsi rakendusepõhine VPN-päästik versus jagatud tunnel: mis isoleerib
Rakendusega käivitatav Windowsi VPN-profiil avab ainult tunneli. Marsruuditud jagatud tunnel otsustab, mis sellesse siseneb, ja mõlemad ebaõnnestuvad ühe rakenduse puhul erinevalt.
Kaks Windowsi seadistust näevad seadetes ühesugused välja ja käituvad täiesti erinevalt. Üks on kopeeritud VPN-profiil rakenduse päästikuga, nii et ühe käivitatava faili käivitamine tõstab tunneli üles. Teine on jagatud tunneliga profiil, mille marsruudiloend kattub juhuslikult sellega, millega see rakendus suhtleb. Esimene vastab küsimusele, millal tunnel olemas on. Teine vastab, millised paketid sellesse sisenevad, ja ainult teine jätab ülejäänud masina füüsilisele lingile, samal ajal kui rakendus jääb ühendatuks.
Päästik on elutsükli reegel, mitte marsruutimisreegel
Add-VpnConnectionTriggerApplication seob käivitatava faili tee profiili nimega. Kui see protsess käivitub, valib Remote Access Connection Manager profiili, ja kui päästiku tingimus lõpeb, võib ühendus katkeda. Miski selles vahetuses ei kontrolli socketeid. Cmdlet vajab kõrgendatud shelli, täielikku teed binaarfailini ja -Force kui asendate olemasoleva kirje. Kinnitage, et seos püsis, käsuga Get-VpnConnectionTrigger selle asemel, et usaldada viipa; Microsofti viide Add-VpnConnectionTriggerApplicationile loetleb parameetrid ja näited.
Kaks piirangut selgitavad enamikku teateid, et „päästik ei tee midagi”. Päästikud on ehitatud kõigi kasutajate profiilide ümber, seega tuleb kõigepealt selgitada profiili ulatus, ja rakenduse tee peab vastama binaarfailile, mis tegelikult töötab, mitte otseteele või käivitajale, mis loob teise protsessi. Teine piirang on tahtlik: võrgus, mille Windows liigitab usaldusväärseks, jääb päästik jõude, sest profiil on mõeldud töötama väljaspool kontorit.
Add-VpnConnectionTriggerApplication -Name "APP_VPN" -ApplicationID "C:\Program Files\Vendor\app.exe" -Force
Get-VpnConnectionTrigger -Name "APP_VPN" | Format-List *
Get-VpnConnection -Name "APP_VPN" | Format-List Name,ConnectionStatus,SplitTunneling,AllUserConnection
Jagatud tunnel otsustab, mis tunnelist läbi läheb
Kui jagatud tunnel on väljas, paigaldab Windows VPN-liidesele klassipõhise vaikemarsruudi madala mõõdikuga. Iga socket järgib seda, sealhulgas brauser ja värskendusteenus, nii et päästik selles seadistuses liigutab tervet masinat seni, kuni profiil on ühendatud. Päästik on endiselt vaid elutsükli reegel; mõjuraadius tuli marsruudilt.
Kui jagatud tunnel on sees, kannab profiil ainult neid prefikseid, mille lüüs saadab või mille te VPN-liidesele lisate. Kõik muu kasutab edasi füüsilist vaikemarsruuti. See on korraldus, mida inimesed tavaliselt mõtlevad „üks rakendus eraldi väljapääsu kaudu”, ja see on otsast lõpuni marsruutimisotsus.
Set-VpnConnection -Name "APP_VPN" -SplitTunneling $true
Get-VpnConnection -Name "APP_VPN" | Select-Object SplitTunneling
Get-NetRoute -InterfaceAlias "APP_VPN" | Sort-Object DestinationPrefix
Kus marsruuditud jagamine lõpetab teie rakenduse isoleerimise
Levinud tõrge on sihtkoht, mis ei ilmu kunagi tunneli marsruudiloendisse. Rakendus, mis logib sisse ühe aadressi vastu ja voogab seejärel CDN-ist või lahendab tosinat pöörlevat lõpp-punkti, paneb osa ühendusi VPN-liidesele ja ülejäänud Wi-Fi-le. IPv6 on eraldi tabel, nii et profiil, mis saadab ainult IPv4 prefikseid, võib tunduda korrektne, samal ajal kui rakenduse IPv6-liiklus jääb kohalikuks.
Kaks väiksemat mõju loevad sama palju. Võidab pikim prefiks, nii et täpsem on-link marsruut, haldushosti jaoks saadetud /32 või teise adapteri alamvõrk võivad tunneli lüüa täpselt selle aadressi puhul, mis teile korda läheb. Nime lahendamine toimub samuti enne marsruutimist: kui profiili DNS-serverid või NRPT reegel seda nime ei kata, võib rakendus lahendada füüsilise adapteri kaudu ja valida seejärel aadressi, mis ei olnud kunagi tunnelitatud prefiksite sees.
Kolm kuju ja mida igaüks ostab
Tabel on see osa, mille kleepiksin seinale, sest otsus käib mõjuraadiuse, mitte funktsioonide kohta. Kui rakenduse sihtkohad on stabiilsed prefiksid, mille saate loetleda, annab marsruuditud jagamine isoleerituse väikseima jalajäljega. Kui ei ole, hoiab vaikemarsruudiga profiil VM-i või teise seadme taga eraldatuse ausana, kuid liigutab rohkem kui ühte protsessi.
| Shape | What starts the tunnel | What enters it | Pick it when |
|---|---|---|---|
| Trigger plus routed split | Process start | Only pushed or added prefixes | The app's endpoints are stable prefixes and the host should stay direct |
| Trigger plus default route | Process start | Everything, machine-wide | You need one exit for all traffic and accept the wider scope |
| Separate VM or device | Guest boot or login | Everything inside that guest | The app's destinations rotate, or the host must keep its own public address |
Mida ükski neist ei paku, on socket-tasandi sidumine hostis. Klassikalisel Windowsi VPN-kliendil pole reeglit, mis ütleks, et see protsess peab kasutama seda adapterit; päästikud ja marsruudifiltrid elavad eri kihtides ja liidese valib marsruuditabeli kiht. Kui juhend lubab rakendusepõhist jõustamist ainult kopeeritud profiilist, küsige, milline marsruut või filter töö ära teeb.
Kontrollige paari ühe käiguga
Testige elutsüklit ja marsruutimist eraldi, selles järjekorras. Sulgege rakendus, kinnitage, et profiil näitab Disconnected, seejärel käivitage rakendus ja kontrollige, kas olek muutus. Alles siis, kui tunnel on üleval, peaksite küsima, kuhu konkreetne sihtkoht läheb, ja peaksite kasutama aadressi, mille rakendus tegelikult valib, mitte oletust.
$app = Get-Process app | Select-Object -First 1
Get-VpnConnection -Name "APP_VPN" | Select-Object ConnectionStatus
Get-NetTCPConnection -OwningProcess $app.Id -State Established | Select-Object RemoteAddress,RemotePort
Find-NetRoute -RemoteIPAddress 203.0.113.10
Find-NetRoute nimetab liidese ja järgmise hüppe, mis selle sihtkoha kannaks. Füüsiline alias seal tähendab, et tunnel on üleval ja selle voo jaoks ebaoluline: kontrollige saadetud prefikseid, siis täpsemaid marsruute, siis IPv6-t. Kui olek ei muutu üldse, ei vallandunud päästik, ja käivitatava faili tee, profiili ulatus ning VPN-kliendi tööpäevik on kolm kohta, kust vaadata.
Koristage puhtalt, et järgmine test oleks aus
Eemaldage vastupidises järjekorras, kui ehitasite: esmalt rakenduse päästik, seejärel profiil. Profiili kustutamine päästiku allesjäädes jätab rippuva seose, mis muudab järgmise katse segaseks, ja Remove-VpnConnection -Force ei kustuta alati telefoniraamatu kirjet, mis loodi väljaspool cmdlete.
Kasutajapõhised kirjed asuvad kasutaja rasphone.pbk all Roaming-profiilis; kõigi kasutajate kirjed asuvad ProgramData all. Kontrollige profiili ulatusega sobivat hoidlat, ühendage uuesti profiil, mille alles jätsite, ja kinnitage, et selle marsruudid ja DNS toimivad endiselt, et hilisem test mõõdaks teie tehtud muudatust, mitte jääknähtust.
- Tunnel tõuseb protsessi käivitamisel, mitte sisselogimisel.
- VPN-liidesele ilmuvad ainult kavandatud prefiksid.
- Rakenduse tegelik kaugaadress lahendub VPN-i aliaseks.
- Pärast profiili eemaldamist ei jää ühtegi rippuvat päästikut.