Windowsin sovelluskohtainen VPN-liipaisin vs jaettu tunneli: mikä eristää
Sovelluksen laukaisema Windows-VPN-profiili avaa vain tunnelin. Reititetty jaettu tunneli päättää, mitä siihen tulee, ja kumpikin epäonnistuu yhden sovelluksen kohdalla eri tavoin.
Kaksi Windows-asetelmaa näyttävät Asetuksissa samalta ja käyttäytyvät täysin eri tavoin. Toinen on kopioitu VPN-profiili, jossa on sovellusliipaisin, joten yhden suoritettavan tiedoston käynnistäminen nostaa tunnelin. Toinen on jaetun tunnelin profiili, jonka reittiluettelo sattuu kattamaan sen, minkä kanssa kyseinen sovellus keskustelee. Ensimmäinen vastaa siihen, milloin tunneli on olemassa. Toinen vastaa siihen, mitkä paketit siihen tulevat, ja vain toinen jättää muun koneen fyysiselle linkille sovelluksen pysyessä yhdistettynä.
Liipaisin on elinkaarisääntö, ei reitityssääntö
Add-VpnConnectionTriggerApplication sitoo suoritettavan tiedoston polun profiilin nimeen. Kun tämä prosessi käynnistyy, Remote Access Connection Manager valitsee profiilin, ja kun liipaisimen ehto päättyy, yhteys voi katketa. Mikään tuossa vaihdossa ei tarkastele socketeja. Cmdlet vaatii korotetun shellin, täyden polun binääritiedostoon ja -Force kun korvaat olemassa olevan merkinnän. Vahvista, että liitos säilyi komennolla Get-VpnConnectionTrigger sen sijaan, että luottaisit kehotteeseen; Microsoftin Add-VpnConnectionTriggerApplication-viite luettelee parametrit ja esimerkit.
Kaksi rajaa selittää useimmat raportit, joiden mukaan „liipaisin ei tee mitään”. Liipaisimet rakentuvat kaikkien käyttäjien profiilien ympärille, joten profiilin laajuus on ensimmäinen selvitettävä asia, ja sovelluksen polun on vastattava binääritiedostoa, joka todella suoritetaan, ei pikakuvaketta tai käynnistintä, joka luo toisen prosessin. Toinen raja on tarkoituksellinen: verkossa, jonka Windows luokittelee luotetuksi, liipaisin pysyy toimettomana, koska profiili on tarkoitettu toimimaan toimiston ulkopuolella.
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
Jaettu tunneli päättää, mikä ylittää tunnelin
Kun jaettu tunneli on pois päältä, Windows asentaa luokkapohjaisen oletusreitin matalalla metrijalla VPN-liitäntään. Jokainen socket seuraa sitä, myös selain ja päivityspalvelu, joten liipaisin siirtää siinä kokoonpanossa koko konetta niin kauan kuin profiili on yhdistetty. Liipaisin on edelleen vain elinkaarisääntö; vaikutussäde tuli reitistä.
Kun jaettu tunneli on päällä, profiili kuljettaa vain ne etuliitteet, jotka yhdyskäytävä työntää tai jotka lisäät VPN-liitäntään. Kaikki muu käyttää edelleen fyysistä oletusreittiä. Se on järjestely, jota ihmiset yleensä tarkoittavat sanoessaan „yksi sovellus erillisen ulostulon kautta”, ja se on reitityspäätös alusta loppuun.
Set-VpnConnection -Name "APP_VPN" -SplitTunneling $true
Get-VpnConnection -Name "APP_VPN" | Select-Object SplitTunneling
Get-NetRoute -InterfaceAlias "APP_VPN" | Sort-Object DestinationPrefix
Missä reititetty jako lakkaa eristämästä sovellustasi
Yleinen virhe on kohde, joka ei koskaan ilmesty tunnelin reittiluetteloon. Sovellus, joka kirjautuu sisään yhtä osoitetta vastaan ja striimaa sitten CDN:stä tai ratkaisee tusinan pyöriviä päätepisteitä, laittaa osan yhteyksistä VPN-liitäntään ja loput Wi-Fiin. IPv6 on erillinen taulukko, joten profiili, joka työntää vain IPv4-etuliitteitä, voi näyttää oikealta, kun sovelluksen IPv6-liikenne pysyy paikallisena.
Kaksi pienempää vaikutusta merkitsevät yhtä paljon. Pisin etuliite voittaa, joten tarkempi on-link-reitti, hallintakoneelle työnnetty /32 tai toisen sovittimen aliverkko voi päihittää tunnelin juuri sen osoitteen kohdalla, joka sinua kiinnostaa. Myös nimien ratkaisu tapahtuu ennen reititystä: elleivät profiilin DNS-palvelimet tai NRPT-sääntö kata nimeä, sovellus voi ratkaista fyysisen sovittimen kautta ja valita sitten osoitteen, joka ei koskaan ollut tunneloitujen etuliitteiden sisällä.
Kolme muotoa ja mitä kukin ostaa
Taulukko on se osa, jonka teippaisin seinälle, koska päätös koskee vaikutussädettä eikä ominaisuuksia. Jos sovelluksen kohteet ovat vakaita etuliitteitä, jotka voit luetella, reititetty jako antaa eristyksen pienimmällä jalanjäljellä. Jos eivät, oletusreititysprofiili VM:n tai toisen laitteen takana pitää erottelun rehellisenä sillä hinnalla, että siirtää useampaa kuin yhtä prosessia.
| 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 |
Mitään näistä ei tarjoa socket-tason sidontaa isännässä. Klassisella Windows-VPN-asiakasohjelmalla ei ole sääntöä, jonka mukaan tämän prosessin on käytettävä tuota sovitinta; liipaisimet ja reittisuodattimet elävät eri kerroksissa, ja liitännän valitseva kerros on reititystaulukko. Jos opas lupaa sovelluskohtaisen valvonnan pelkästään kopioidusta profiilista, kysy, mikä reitti tai mikä suodatin tekee työn.
Vahvista pari yhdellä kierroksella
Testaa elinkaari ja reititys erikseen, tässä järjestyksessä. Sulje sovellus, vahvista, että profiili näyttää Disconnected, käynnistä sitten sovellus ja tarkista, että tila muuttui. Vasta kun tunneli on ylhäällä, sinun pitäisi kysyä, minne tietty kohde menee, ja sinun pitäisi käyttää osoitetta, jonka sovellus todella valitsee, ei arvausta.
$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 nimeää liitännän ja seuraavan hypyn, joka kuljettaisi kyseisen kohteen. Fyysinen alias siellä tarkoittaa, että tunneli on ylhäällä ja merkityksetön tuolle virralle: tarkista työnnetyt etuliitteet, sitten tarkemmat reitit, sitten IPv6. Jos tila ei muutu lainkaan, liipaisin ei lauennut, ja suoritettavan tiedoston polku, profiilin laajuus ja VPN-asiakasohjelman toimintaloki ovat kolme paikkaa, joista katsoa.
Pura siististi, jotta seuraava testi on rehellinen
Poista päinvastaisessa järjestyksessä kuin rakensit: ensin sovellusliipaisin, sitten profiili. Profiilin poistaminen liipaisimen jäädessä jättää roikkuvan liitoksen, joka tekee seuraavasta yrityksestä sekavan, ja Remove-VpnConnection -Force ei aina tyhjennä puhelinluettelomerkintää, joka luotiin cmdletien ulkopuolella.
Käyttäjäkohtaiset merkinnät ovat käyttäjän rasphone.pbk alla Roaming-profiilissa; kaikkien käyttäjien merkinnät ovat ProgramDatan alla. Tarkista profiilin laajuutta vastaava varasto, yhdistä uudelleen säilyttämäsi profiili ja vahvista, että sen reitit ja DNS toimivat edelleen, jotta myöhempi testi mittaa tekemääsi muutosta eikä jäänyt tilaa.
- Tunneli nousee prosessin käynnistyessä, ei kirjautumisessa.
- Vain aiotut etuliitteet näkyvät VPN-liitännässä.
- Sovelluksen todellinen etäosoite ratkeaa VPN-aliakseksi.
- Profiilin poistamisen jälkeen ei jää roikkuvaa liipaisinta.