Dve windowsové konfigurácie vyzerajú v Nastaveniach rovnako a správajú sa úplne odlišne. Jedna je skopírovaný profil VPN so spúšťačom aplikácie, takže spustenie jedného spustiteľného súboru zdvihne tunel. Druhá je profil s rozdeleným tunelom, ktorého zoznam trás náhodou pokrýva to, s čím tá aplikácia komunikuje. Prvá odpovedá, kedy tunel existuje. Druhá odpovedá, ktoré pakety doň vstúpia, a iba druhá necháva zvyšok stroja na fyzickom spoji, kým aplikácia zostáva pripojená.

Spúšťač je pravidlo životného cyklu, nie pravidlo smerovania

Add-VpnConnectionTriggerApplication zviaže cestu spustiteľného súboru s názvom profilu. Keď sa ten proces spustí, Správca pripojenia vzdialeného prístupu vytočí profil a keď podmienka spúšťača skončí, spojenie môže spadnúť. Nič v tej výmene nepreskúmava sockety. Rutina vyžaduje zvýšený shell, úplnú cestu k binárke a -Force keď nahrádzate existujúcu položku. Overte, že asociácia prežila, pomocou Get-VpnConnectionTrigger namiesto spoliehania sa na výzvu; referencia Add-VpnConnectionTriggerApplication uvádza parametre a príklady.

Dve obmedzenia vysvetľujú väčšinu hlásení, že „spúšťač nič nerobí”. Spúšťače sú postavené okolo profilov pre všetkých používateľov, takže rozsah profilu je prvá vec, ktorú treba vyriešiť, a cesta aplikácie musí zodpovedať binárke, ktorá skutočne beží, nie odkazu ani spúšťaču, ktorý vytvára druhý proces. Druhé obmedzenie je zámerné: v sieti, ktorú Windows klasifikuje ako dôveryhodnú, spúšťač zostáva nečinný, pretože profil má fungovať mimo kancelárie.

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

Rozdelený tunel rozhoduje, čo prejde tunelom

S vypnutým rozdeleným tunelom Windows nainštaluje na rozhranie VPN predvolenú trasu založenú na triede s nízkou metrikou. Nasleduje ju každý socket, vrátane prehliadača a aktualizačnej služby, takže spúšťač v tejto konfigurácii presunie celý stroj, kým je profil pripojený. Spúšťač je stále len pravidlo životného cyklu; rozsah dopadu prišiel z trasy.

So zapnutým rozdeleným tunelom nesie profil iba prefixy, ktoré vytlačí brána alebo ktoré pridáte na rozhranie VPN. Všetko ostatné ďalej používa fyzickú predvolenú trasu. To je usporiadanie, ktoré ľudia zvyčajne myslia vetou „jedna aplikácia cez samostatný výstup”, a je to rozhodnutie o smerovaní od začiatku do konca.

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

Kde rozdelenie s trasami prestáva izolovať vašu aplikáciu

Častá chyba je cieľ, ktorý sa na zozname trás tunela nikdy neobjaví. Aplikácia, ktorá sa prihlási k jednej adrese a potom streamuje z CDN, alebo prekladá tucet rotujúcich koncových bodov, pošle časť spojení na rozhranie VPN a zvyšok na Wi-Fi. IPv6 je samostatná tabuľka, takže profil, ktorý vytláča iba IPv4 prefixy, môže vyzerať správne, kým prevádzka aplikácie cez IPv6 zostáva lokálna.

Dva menšie efekty sú rovnako dôležité. Vyhráva najdlhšia zhoda prefixu, takže konkrétnejšia on-link trasa, /32 vytlačená pre správcovský hostiteľ alebo podsiete druhého adaptéra môžu poraziť tunel presne pre adresu, na ktorej vám záleží. Preklad prebieha tiež pred smerovaním: ak meno nepokrývajú DNS servery profilu alebo pravidlo NRPT, aplikácia môže preložiť cez fyzický adaptér a potom vytočiť adresu, ktorá nikdy nebola v tunelovaných prefixoch.

Tri tvary a čo každý prináša

Tabuľka je časť, ktorú by som prilepil na stenu, pretože rozhodnutie je o rozsahu dopadu, nie o funkciách. Ak sú ciele aplikácie stabilné prefixy, ktoré viete vypísať, rozdelenie s trasami dáva izoláciu s najmenšou stopou. Ak nie sú, profil s predvolenou trasou za virtuálkou alebo druhým zariadením udrží oddelenie čestné za cenu presunu viac ako jedného procesu.

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

Čo žiadna z týchto možností neponúka, je viazanie na úrovni socketu na hostiteľovi. Klasický klient Windows VPN nemá pravidlo, ktoré by hovorilo, že tento proces musí použiť tento adaptér; spúšťače a filtre trás žijú v rôznych vrstvách a vrstva, ktorá vyberá rozhranie, je smerovacia tabuľka. Ak príručka sľubuje vynucovanie po aplikáciách iba zo skopírovaného profilu, spýtajte sa, ktorá trasa alebo ktorý filter robí tú prácu.

Overte dvojicu v jednom prechode

Testujte životný cyklus a smerovanie oddelene, v tomto poradí. Zatvorte aplikáciu, overte, že profil hlási Disconnected, potom aplikáciu spustite a skontrolujte, že sa stav zmenil. Až keď je tunel zdvihnutý, má zmysel pýtať sa, kam ide konkrétny cieľ, a mali by ste použiť adresu, ktorú aplikácia skutočne vytočí, nie odhad.

$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 pomenúva rozhranie a ďalší skok, ktorý by ten cieľ preniesol. Fyzický alias tam znamená, že tunel je zdvihnutý a pre tento tok nepodstatný: skontrolujte vytlačené prefixy, potom konkrétnejšie trasy, potom IPv6. Ak sa stav vôbec nemení, spúšťač sa nespustil, a cesta spustiteľného súboru, rozsah profilu a prevádzkový log klienta VPN sú tri miesta, kam sa pozrieť.

Upratajte poriadne, aby bol ďalší test čestný

Odstraňujte v opačnom poradí, ako ste stavali: najprv spúšťač aplikácie, potom profil. Zmazanie profilu, kým spúšťač zostáva, nechá visieť asociáciu, ktorá robí ďalší pokus mätúcim, a Remove-VpnConnection -Force nie vždy vymaže položku telefónneho zoznamu vytvorenú mimo rutín.

Položky pre jednotlivých používateľov sú v rasphone.pbk používateľa pod profilom Roaming; položky pre všetkých používateľov sú pod ProgramData. Skontrolujte úložisko zodpovedajúce rozsahu profilu, znova pripojte profil, ktorý ste si nechali, a overte, že jeho trasy a DNS stále fungujú, aby neskorší test meral zmenu, ktorú ste urobili, a nie zvyškový stav.

  • Tunel sa zdvíha pri spustení procesu, nie pri prihlásení.
  • Na rozhraní VPN sa objavia iba zamýšľané prefixy.
  • Skutočná vzdialená adresa aplikácie sa preloží na alias VPN.
  • Po odstránení profilu nezostane žiadny visiaci spúšťač.

Súvisiace články