Nxitësi VPN për aplikacion në Windows kundrejt tunelit të ndarë: çfarë izolon
Një profil VPN i Windows i nxitur nga aplikacioni hap vetëm një tunel. Një tunel i ndarë me rrugë vendos çfarë hyn në të, dhe secili dështon ndryshe për një aplikacion.
Dy konfigurime Windows duken njësoj te Cilësimet dhe nuk sillen aspak njësoj. Njëri është një profil VPN i kopjuar me një nxitës aplikacioni, kështu që nisja e një ekzekutuesi ngre tunelin. Tjetri është një profil me tunel të ndarë lista e rrugëve e të cilit mbulon rastësisht atë me të cilën flet ai aplikacion. I pari përgjigjet kur ekziston tuneli. I dyti përgjigjet cilat paketa hyjnë në të, dhe vetëm i dyti e lë pjesën tjetër të makinës në lidhjen fizike ndërsa aplikacioni mbetet i lidhur.
Nxitësi është një rregull cikli jetësor, jo një rregull rrugëtimi
Add-VpnConnectionTriggerApplication lidh një shteg ekzekutuesi me një emër profili. Kur ai proces nis, Menaxheri i lidhjeve të aksesit në distancë thirr profilin, dhe kur kushti i nxitësit mbaron, lidhja mund të bjerë. Asgjë në atë shkëmbim nuk inspekton soketa. Cmdlet-i kërkon një shell të ngritur, shtegun e plotë drejt binarit dhe -Force kur zëvendësoni një zë ekzistues. Konfirmoni që shoqërimi mbijetoi me Get-VpnConnectionTrigger në vend që të mbështeteni te prompti; referenca e Add-VpnConnectionTriggerApplication rendit parametrat dhe shembujt.
Dy kufij shpjegojnë shumicën e raporteve se «nxitësi nuk bën asgjë». Nxitësit ndërtohen rreth profileve për të gjithë përdoruesit, prandaj shtrirja e profilit është gjëja e parë për t'u sqaruar, dhe shtegu i aplikacionit duhet të përputhet me binarin që ekzekutohet vërtet, jo me një shkurtore apo një nisës që krijon një proces të dytë. Kufiri tjetër është i qëllimshëm: në një rrjet që Windows e klasifikon si të besuar, nxitësi mbetet i papunë, sepse profili është menduar të veprojë jashtë zyrës.
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
Tuneli i ndarë vendos çfarë kalon tunelin
Me tunelin e ndarë të fikur, Windows instalon një rrugë të paracaktuar të bazuar në klasë me metrikë të ulët në ndërfaqen VPN. Çdo soket e ndjek, përfshirë shfletuesin dhe shërbimin e përditësimeve, kështu që një nxitës në atë konfigurim lëviz të gjithë makinën për sa kohë profili është i lidhur. Nxitësi mbetet vetëm një rregull cikli jetësor; rrezja e ndikimit erdhi nga rruga.
Me tunelin e ndarë të ndezur, profili mbart vetëm prefikset që shtyn porta ose që ju shtoni në ndërfaqen VPN. Gjithçka tjetër vazhdon të përdorë rrugën fizike të paracaktuar. Ky është rregullimi që njerëzit zakonisht nënkuptojnë me «një aplikacion përmes një daljeje të veçantë», dhe është një vendim rrugëtimi nga fillimi në fund.
Set-VpnConnection -Name "APP_VPN" -SplitTunneling $true
Get-VpnConnection -Name "APP_VPN" | Select-Object SplitTunneling
Get-NetRoute -InterfaceAlias "APP_VPN" | Sort-Object DestinationPrefix
Ku një ndarje me rrugë nuk e izolon më aplikacionin tuaj
Dështimi i zakonshëm është një destinacion që nuk shfaqet kurrë në listën e rrugëve të tunelit. Një aplikacion që hyn kundër një adrese dhe më pas transmeton nga një CDN, ose zgjidh një duzinë pikash fundore rrotulluese, do të vendosë disa lidhje në ndërfaqen VPN dhe të tjerat në Wi-Fi. IPv6 është një tabelë e veçantë, kështu që një profil që shtyn vetëm prefikse IPv4 mund të duket i saktë ndërsa trafiku IPv6 i aplikacionit mbetet lokal.
Dy efekte më të vogla kanë po aq rëndësi. Fitom përputhja e prefiksit më të gjatë, kështu që një rrugë on-link më specifike, një /32 i shtyrë për një host administrimi ose nënrrjeti i një përshtatësi të dytë mund ta mundin tunelin pikërisht për adresën që ju intereson. Zgjidhja bëhet edhe përpara rrugëtimit: nëse serverët DNS të profilit ose një rregull NRPT nuk e mbulojnë emrin, aplikacioni mund të zgjidhë përmes përshtatësit fizik dhe më pas të thirrë një adresë që nuk ishte kurrë brenda prefikseve të tuneluara.
Tre forma, dhe çfarë blen secila
Tabela është pjesa që do ta ngjisja në mur, sepse vendimi ka të bëjë me rrezen e ndikimit dhe jo me funksionet. Nëse destinacionet e aplikacionit janë prefikse të qëndrueshme që mund t'i renditni, ndarja me rrugë jep izolim me gjurmën më të vogël. Nëse nuk janë, një profil me rrugë të paracaktuar pas një VM ose një pajisjeje të dytë e mban ndarjen të sinqertë me koston e lëvizjes së më shumë se një procesi.
| 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 |
Ajo që asnjëra prej tyre nuk ofron është lidhja në nivel soketi në host. Klienti klasik VPN i Windows nuk ka rregull që thotë se ky proces duhet të përdorë atë përshtatës; nxitësit dhe filtrat e rrugëve jetojnë në shtresa të ndryshme, dhe shtresa që zgjedh një ndërfaqe është tabela e rrugëve. Nëse një udhëzues premton zbatim për aplikacion vetëm nga një profil i kopjuar, pyesni cila rrugë ose cili filtër e bën punën.
Verifikoni çiftin në një kalim
Testoni ciklin jetësor dhe rrugëtimin veçmas, në atë rend. Mbyllni aplikacionin, konfirmoni që profili raporton Disconnected, pastaj nisni aplikacionin dhe kontrolloni që gjendja ndryshoi. Vetëm pasi tuneli është ngritur duhet të pyesni ku shkon një destinacion i caktuar, dhe duhet të përdorni adresën që aplikacioni thërret vërtet, jo një hamendje.
$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 emërton ndërfaqen dhe hopin tjetër që do ta mbante atë destinacion. Një alias fizik atje do të thotë që tuneli është ngritur dhe i parëndësishëm për atë rrjedhë: kontrolloni prefikset e shtyra, pastaj rrugët më specifike, pastaj IPv6. Nëse gjendja nuk ndryshon fare, nxitësi nuk u shkrep, dhe shtegu i ekzekutuesit, shtrirja e profilit dhe regjistri operativ i klientit VPN janë tre vendet ku të shikoni.
Pastrojeni me kujdes që testi tjetër të jetë i sinqertë
Hiqni në rendin e kundërt të ndërtimit: së pari nxitësin e aplikacionit, pastaj profilin. Fshirja e profilit ndërsa nxitësi mbetet lë një shoqërim të varur që e bën të ngatërruar provën tjetër, dhe Remove-VpnConnection -Force nuk e pastron gjithmonë një zë libri telefoni të krijuar jashtë cmdlet-eve.
Zërat për përdorues janë në rasphone.pbk e përdoruesit nën profilin Roaming; zërat për të gjithë përdoruesit janë nën ProgramData. Kontrolloni depon që përputhet me shtrirjen e profilit, rilidhni profilin që mbajtët dhe konfirmoni që rrugët dhe DNS i tij sillen ende, që një test i mëvonshëm të masë ndryshimin që bëtë dhe jo gjendjen e mbetur.
- Tuneli niset me nisjen e procesit, jo me hyrjen.
- Vetëm prefikset e synuara shfaqen në ndërfaqen VPN.
- Adresa reale e largët e aplikacionit zgjidhet në aliasin VPN.
- Nuk mbetet asnjë nxitës i varur pas heqjes së profilit.