Windows VPN-тригер по апликација наспроти поделен тунел: што изолира
Профилот на Windows VPN што го активира апликација само крева тунел. Рутиран поделен тунел одлучува што влегува во него, и секој од нив греши поинаку за една апликација.
Две Windows поставки изгледаат исто во Поставки и воопшто не се однесуваат исто. Едната е копиран VPN профил со тригер за апликација, па стартувањето на еден извршен файл го крева тунелот. Другата е профил со поделен тунел чиј список рути случајно го покрива тоа со што зборува таа апликација. Првата одговара кога тунелот постои. Втората одговара кои пакети влегуваат во него, и само втората го остава остатокот од машината на физичката врска додека апликацијата останува поврзана.
Тригерот е правило за животен циклус, а не правило за рутирање
Add-VpnConnectionTriggerApplication поврзува пат до извршен файл со име на профил. Кога тој процес ќе почне, Управувачот со врски за далечински пристап го бира профилот, и кога условот на тригерот ќе заврши, врската може да падне. Ништо во таа размена не проверува сокети. Командата бара подигната обвивка, целосниот пат до бинарниот файл и -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 не го покриваат името, апликацијата може да го разреши низ физичкиот адаптер и потоа да ја бира адресата што никогаш не била внатре во тунелираните префикси.
Три форми и што дава секоја
Табелата е делот што би го залепил на ѕидот, зашто одлуката е за радиусот на удар, а не за функции. Ако дестинациите на апликацијата се стабилни префикси што можете да ги наброите, рутираната поделба дава изолација со најмала трага. Ако не се, профил со стандардна рута зад виртуелна машина или втор уред го одржува разделувањето чесно по цена на поместување повеќе од еден процес.
| 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 |
Она што ниту една од овие не го дава е врзување на ниво на сокет на домаќинот. Класичниот 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.
- По отстранување на профилот не останува висечки тригер.