Dvije Windows postavke izgledaju isto u Postavkama, a ponašaju se potpuno drugačije. Jedna je kopirani VPN profil sa okidačem aplikacije, pa pokretanje jednog izvršnog fajla podiže tunel. Druga je profil sa podijeljenim tuneliranjem čija lista ruta slučajno pokriva ono sa čime ta aplikacija komunicira. Prva odgovara kada tunel postoji. Druga odgovara koji paketi ulaze u njega, i samo druga ostavlja ostatak mašine na fizičkom linku dok aplikacija ostaje povezana.

Okidač je pravilo životnog ciklusa, ne pravilo rutiranja

Add-VpnConnectionTriggerApplication veže putanju izvršnog fajla za ime profila. Kada taj proces počne, Remote Access Connection Manager bira profil, i kada uslov okidača prestane, veza može pasti. Ništa u toj razmjeni ne pregleda sockete. Cmdlet traži podignuti shell, punu putanju do binarnog fajla, i -Force kada zamjenjujete postojeći unos. Potvrdite da je asocijacija preživjela pomoću Get-VpnConnectionTrigger umjesto da vjerujete promptu; Microsoftova referenca za Add-VpnConnectionTriggerApplication navodi parametre i primjere.

Dva ograničenja objašnjavaju većinu prijava da “okidač ne radi ništa”. Okidači su napravljeni oko profila za sve korisnike, pa je opseg profila prva stvar koju treba riješiti, a putanja aplikacije mora odgovarati binarnom fajlu koji se stvarno izvršava, ne prečici ili pokretaču koji pokreće drugi proces. Drugo ograničenje je namjerno: na mreži koju Windows klasifikuje kao pouzdanu, okidač ostaje neaktivan, jer je profil namijenjen radu van kancelarije.

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

Podijeljeno tuneliranje odlučuje šta prelazi tunel

Sa isključenim podijeljenim tuneliranjem, Windows instalira zadanu rutu zasnovanu na klasi sa niskom metrikom na VPN interfejsu. Svaki socket je prati, uključujući pregledač i servis za ažuriranja, pa okidač u toj konfiguraciji pomjera cijelu mašinu dok je profil povezan. Okidač je i dalje samo pravilo životnog ciklusa; obim štete je došao od rute.

Sa uključenim podijeljenim tuneliranjem, profil nosi samo prefikse koje gateway gura ili koje dodate na VPN interfejs. Sve ostalo nastavlja koristiti fizičku zadanu rutu. To je aranžman koji ljudi obično podrazumijevaju pod “jedna aplikacija kroz odvojen izlaz”, i to je odluka o rutiranju od početka do kraja.

Set-VpnConnection -Name "APP_VPN" -SplitTunneling $true
Get-VpnConnection -Name "APP_VPN" | Select-Object SplitTunneling
Get-NetRoute -InterfaceAlias "APP_VPN" | Sort-Object DestinationPrefix

Gdje rutirana podjela prestaje izolovati vašu aplikaciju

Uobičajeni neuspjeh je odredište koje se nikada ne pojavljuje na listi ruta tunela. Aplikacija koja se prijavljuje na jednu adresu i zatim strimuje sa CDN-a, ili razrješava desetak rotirajućih krajnjih tačaka, stavlja neke veze na VPN interfejs a ostale na Wi-Fi. IPv6 je zasebna tabela, pa profil koji gura samo IPv4 prefikse može izgledati ispravno dok saobraćaj aplikacije preko IPv6 ostaje lokalni.

Dva manja efekta su jednako važna. Najduži prefiks pobjeđuje, pa specifičnija on-link ruta, /32 gurnut za upravljački host, ili podmreža drugog adaptera mogu pobijediti tunel za tačno adresu koja vas zanima. Razrješavanje se dešava i prije rutiranja: osim ako DNS serveri profila ili NRPT pravilo pokrivaju ime, aplikacija može razriješiti kroz fizički adapter i zatim birati adresu koja nikada nije bila unutar tuneliranih prefiksa.

Tri oblika i šta svaki donosi

Tabela je dio koji bih zalijepio na zid, jer odluka je o obimu štete, a ne o funkcijama. Ako su odredišta aplikacije stabilni prefiksi koje možete navesti, rutirana podjela daje izolaciju sa najmanjim otiskom. Ako nisu, profil sa zadanom rutom iza VM-a ili drugog uređaja održava razdvajanje iskrenim po cijeni pomjeranja više od jednog procesa.

ShapeWhat starts the tunnelWhat enters itPick it when
Trigger plus routed splitProcess startOnly pushed or added prefixesThe app's endpoints are stable prefixes and the host should stay direct
Trigger plus default routeProcess startEverything, machine-wideYou need one exit for all traffic and accept the wider scope
Separate VM or deviceGuest boot or loginEverything inside that guestThe app's destinations rotate, or the host must keep its own public address

Ono što nijedno od ovih ne pruža je vezivanje na nivou socketa na hostu. Klasični Windows VPN klijent nema pravilo koje kaže da ovaj proces mora koristiti taj adapter; okidači i filteri ruta žive u različitim slojevima, a sloj koji bira interfejs je tabela ruta. Ako vodič obećava prinudu po aplikaciji samo iz kopiranog profila, pitajte koja ruta ili koji filter obavlja posao.

Provjerite par u jednom prolazu

Testirajte životni ciklus i rutiranje odvojeno, tim redom. Zatvorite aplikaciju, potvrdite da profil prikazuje Disconnected, zatim pokrenite aplikaciju i provjerite da se stanje promijenilo. Tek kada je tunel podignut treba pitati kuda ide određeno odredište, i treba koristiti adresu koju aplikacija zaista bira, a ne nagađanje.

$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 imenuje interfejs i sljedeći skok koji bi nosio to odredište. Fizički alias tamo znači da je tunel podignut i nebitan za taj tok: provjerite gurnute prefikse, zatim specifičnije rute, pa IPv6. Ako se stanje uopšte ne mijenja, okidač nije opalio, a putanja izvršnog fajla, opseg profila i operativni dnevnik VPN klijenta su tri mjesta za provjeru.

Poništite čisto da sljedeći test bude iskren

Uklanjajte obrnutim redom od izgradnje: prvo okidač aplikacije, zatim profil. Brisanje profila dok okidač ostaje ostavlja viseću asocijaciju koja sljedeći pokušaj čini zbunjujućim, a Remove-VpnConnection -Force ne čisti uvijek unos u telefonskom imeniku koji je nastao izvan cmdleta.

Unosi po korisniku žive u korisničkom rasphone.pbk pod Roaming profilom; unosi za sve korisnike žive pod ProgramData. Provjerite skladište koje odgovara opsegu profila, ponovo povežite profil koji ste zadržali i potvrdite da njegove rute i DNS još rade, da bi kasniji test mjerio promjenu koju ste napravili, a ne zaostalo stanje.

  • Tunel se podiže pri pokretanju procesa, ne pri prijavi.
  • Samo predviđeni prefiksi se pojavljuju na VPN interfejsu.
  • Stvarna udaljena adresa aplikacije razrješava se na VPN alias.
  • Nema visećeg okidača nakon uklanjanja profila.

Povezani članci