Две Windows поставке изгледају исто у Подешавањима, а понашају се потпуно другачије. Једна је копирани VPN профил са окидачем апликације, па покретање једне извршне датотеке подиже тунел. Друга је профил са подељеним тунелом чија листа рута случајно покрива оно са чим та апликација комуницира. Прва одговара када тунел постоји. Друга одговара који пакети улазе у њега, и само друга оставља остатак машине на физичкој вези док апликација остаје повезана.

Окидач је правило животног циклуса, не правило рутирања

Add-VpnConnectionTriggerApplication везује путању извршне датотеке за име профила. Када тај процес почне, Управник веза за удаљени приступ бира профил, и када услов окидача престане, веза може да падне. Ништа у тој размени не прегледа сокете. Команда тражи подигнути shell, пуну путању до бинарне датотеке и -Force када замењујете постојећи унос. Потврдите да је асоцијација преживела помоћу Get-VpnConnectionTrigger уместо да верујете упиту; Microsoft референца за Add-VpnConnectionTriggerApplication наводи параметре и примере.

Два ограничења објашњавају већину пријава да „окидач не ради ништа”. Окидачи су направљени око профила за све кориснике, па је обим профила прва ствар коју треба решити, а путања апликације мора да одговара бинарној датотеци која се стварно извршава, а не пречици или покретачу који ствара други процес. Друго ограничење је намерно: на мрежи коју Windows класификује као поуздану, окидач остаје неактиван, јер је профил намењен раду ван канцеларије.

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

Подељено тунелирање одлучује шта прелази тунел

Са искљученим подељеним тунелирањем, Windows инсталира подразумевану руту засновану на класи са ниском метриком на VPN интерфејсу. Сваки сокет је прати, укључујући прегледач и сервис за ажурирања, па окидач у тој конфигурацији помера целу машину док је профил повезан. Окидач је и даље само правило животног циклуса; обим штете је дошао од руте.

Са укљученим подељеним тунелирањем, профил носи само префиксе које гејтвеј гура или које додате на VPN интерфејс. Све остало наставља да користи физичку подразумевану руту. То је распоред који људи обично подразумевају под „једна апликација кроз одвојен излаз”, и то је одлука о рутирању од почетка до краја.

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

Где рутирана подела престаје да изолује вашу апликацију

Уобичајени неуспех је одредиште које се никада не појављује на листи рута тунела. Апликација која се пријављује на једну адресу и затим стримује са CDN-а, или разрешава десетак ротирајућих крајњих тачака, ставиће неке везе на VPN интерфејс а остале на Wi-Fi. IPv6 је засебна табела, па профил који гура само IPv4 префиксе може изгледати исправно док саобраћај апликације преко IPv6 остаје локалан.

Два мања ефекта су једнако важна. Најдуже подударање префикса побеђује, па специфичнија on-link рута, /32 гурнут за управљачки хост или подмрежа другог адаптера могу победити тунел за тачно адресу која вас занима. Разрешавање имена се такође дешава пре рутирања: осим ако DNS сервери профила или NRPT правило покривају име, апликација може разрешити кроз физички адаптер и затим бирати адресу која никада није била унутар тунелираних префикса.

Три облика и шта сваки доноси

Табела је део који бих залепио на зид, јер одлука је о обиму штете, а не о функцијама. Ако су одредишта апликације стабилни префикси које можете навести, рутирана подела даје изолацију са најмањим отиском. Ако нису, профил са подразумеваном рутом иза VM-а или другог уређаја одржава раздвајање искреним по цени померања више од једног процеса.

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

Оно што ниједан од ових не пружа је везивање на нивоу сокета на хосту. Класични Windows VPN клијент нема правило које каже да овај процес мора да користи тај адаптер; окидачи и филтери рута живе у различитим слојевима, а слој који бира интерфејс је табела рута. Ако водич обећава принуду по апликацији само из копираног профила, питајте која рута или који филтер обавља посао.

Проверите пар у једном пролазу

Тестирајте животни циклус и рутирање одвојено, тим редом. Затворите апликацију, потврдите да профил приказује Disconnected, затим покрените апликацију и проверите да ли се стање променило. Тек када је тунел подигнут треба да питате куда иде одређено одредиште, и треба да користите адресу коју апликација заиста бира, а не нагађање.

$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 именује интерфејс и следећи скок који би носио то одредиште. Физички алијас тамо значи да је тунел подигнут и небитан за тај ток: проверите гурнуте префиксе, затим специфичније руте, па IPv6. Ако се стање уопште не мења, окидач није опалио, а путања извршне датотеке, обим профила и оперативни дневник VPN клијента су три места за проверу.

Поништите чисто да следећи тест буде искрен

Уклањајте обрнутим редом од изградње: прво окидач апликације, затим профил. Брисање профила док окидач остаје оставља висећу асоцијацију која следећи покушај чини збуњујућим, а Remove-VpnConnection -Force не чисти увек унос у телефонском именику који је настао изван команди.

Уноси по кориснику живе у корисничком rasphone.pbk под Roaming профилом; уноси за све кориснике живе под ProgramData. Проверите складиште које одговара обиму профила, поново повежите профил који сте задржали и потврдите да његове руте и DNS још раде, да би каснији тест мерио промену коју сте направили, а не заостало стање.

  • Тунел се подиже при покретању процеса, не при пријави.
  • Само предвиђени префикси се појављују на VPN интерфејсу.
  • Стварна удаљена адреса апликације разрешава се на VPN алијас.
  • Нема висећег окидача након уклањања профила.

Повезани чланци