Du „Windows“ nustatymai atrodo vienodai „Nustatymuose“ ir elgiasi visiškai skirtingai. Vienas yra nukopijuotas VPN profilis su programos paleidikliu, todėl paleidus vieną vykdomąjį failą tunelis pakyla. Kitas yra skaidytojo tunelio profilis, kurio maršrutų sąrašas atsitiktinai apima tai, su kuo ta programa kalba. Pirmasis atsako, kada tunelis egzistuoja. Antrasis atsako, kurie paketai į jį patenka, ir tik antrasis palieka likusią mašinos dalį fizinėje jungtyje, kol programa lieka prisijungusi.

Paleidiklis yra gyvavimo ciklo taisyklė, o ne maršrutizavimo taisyklė

Add-VpnConnectionTriggerApplication susieja vykdomojo failo kelią su profilio pavadinimu. Kai tas procesas prasideda, nuotolinės prieigos ryšio tvarkyklė surenka profilį, ir kai paleidiklio sąlyga pasibaigia, ryšys gali nutrūkti. Niekas tame pasikeitime netikrina lizdų. Komandai reikia pakeltos shell aplinkos, viso kelio iki dvejetainio failo ir -Force kai pakeičiate esamą įrašą. Patvirtinkite, kad susiejimas išliko, naudodami Get-VpnConnectionTrigger o nepasikliaudami raginimu; „Microsoft“ Add-VpnConnectionTriggerApplication nuoroda išvardija parametrus ir pavyzdžius.

Dvi ribos paaiškina daugumą pranešimų „paleidiklis nieko nedaro“. Paleidikliai sukurti aplink profilius visiems naudotojams, todėl profilio apimtis yra pirmas dalykas, kurį reikia išsiaiškinti, o programos kelias turi atitikti dvejetainį failą, kuris tikrai vykdomas, o ne nuorodą ar paleidiklį, sukuriantį antrą procesą. Kita riba yra tyčinė: tinkle, kurį „Windows“ priskiria patikimiems, paleidiklis lieka neaktyvus, nes profilis skirtas veikti už biuro ribų.

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

Skaidytasis tunelis nusprendžia, kas kerta tunelį

Kai skaidytasis tunelis išjungtas, „Windows“ įdiegia klasėmis pagrįstą numatytąjį maršrutą su žemu metriniu rodikliu VPN sąsajoje. Kiekvienas lizdas jį seka, įskaitant naršyklę ir atnaujinimų tarnybą, todėl paleidiklis toje konfigūracijoje perkelia visą mašiną, kol profilis prisijungęs. Paleidiklis vis tiek lieka tik gyvavimo ciklo taisyklė; poveikio spindulys atėjo iš maršruto.

Kai skaidytasis tunelis įjungtas, profilis neša tik tuos prefiksus, kuriuos stumia tinklų sietuvas arba kuriuos pridedate prie VPN sąsajos. Visa kita toliau naudoja fizinį numatytąjį maršrutą. Tai yra išdėstymas, kurį žmonės paprastai turi omenyje sakydami „viena programa per atskirą išėjimą“, ir tai yra maršrutizavimo sprendimas nuo pradžios iki pabaigos.

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

Kur maršrutais pagrįstas skaidymas nustoja izoliuoti jūsų programą

Dažna klaida yra paskirties vieta, kuri niekada neatsiranda tunelio maršrutų sąraše. Programa, kuri prisijungia prie vieno adreso ir tada transliuoja iš CDN, arba išsprendžia tuziną besikeičiančių pabaigos taškų, kai kuriuos ryšius pateiks į VPN sąsają, o likusius – į Wi-Fi. IPv6 yra atskira lentelė, todėl profilis, kuris stumia tik IPv4 prefiksus, gali atrodyti teisingai, kol programos IPv6 srautas lieka vietinis.

Du mažesni poveikiai svarbūs ne mažiau. Laimi ilgiausio prefikso atitikimas, todėl konkretesnis on-link maršrutas, valdymo mazgui stumiamas /32 arba antrojo adapterio potinklis gali nugalėti tunelį būtent tam adresui, kuris jums rūpi. Vardų sprendimas taip pat vyksta prieš maršrutizavimą: jei profilio DNS serveriai arba NRPT taisyklė neapima vardo, programa gali išspręsti per fizinį adapterį ir tada rinktis adresą, kuris niekada nebuvo tuneliuojamų prefiksų viduje.

Trys formos ir ką kiekviena duoda

Lentelė yra ta dalis, kurią priklijuočiau prie sienos, nes sprendimas yra apie poveikio spindulį, o ne apie funkcijas. Jei programos paskirties vietos yra stabilūs prefiksai, kuriuos galite išvardyti, maršrutais pagrįstas skaidymas duoda izoliaciją su mažiausiu pėdsaku. Jei ne, numatytojo maršruto profilis už VM ar antrojo įrenginio išlaiko atskyrimą sąžiningą už didesnį nei vieno proceso perkėlimą.

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

Ko nė viena iš šių neteikia, tai lizdo lygio susiejimo pagrindiniame kompiuteryje. Klasikinis „Windows“ VPN klientas neturi taisyklės, kad šis procesas privalo naudoti tą adapterį; paleidikliai ir maršrutų filtrai gyvena skirtinguose sluoksniuose, o sąsają pasirenkantis sluoksnis yra maršrutų lentelė. Jei vadovas žada vykdymą pagal programą vien iš nukopijuoto profilio, paklauskite, kuris maršrutas ar kuris filtras atlieka darbą.

Patikrinkite porą vienu ėjimu

Tikrinkite gyvavimo ciklą ir maršrutizavimą atskirai, tokia tvarka. Uždarykite programą, patvirtinkite, kad profilis rodo Disconnected, tada paleiskite programą ir patikrinkite, ar būsena pasikeitė. Tik kai tunelis pakeltas, turėtumėte klausti, kur eina konkreti paskirties vieta, ir turėtumėte naudoti adresą, kurį programa tikrai renkasi, o ne spėjimą.

$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 įvardija sąsają ir kitą šuolį, kuris neštų tą paskirties vietą. Fizinis alias ten reiškia, kad tunelis pakeltas ir šiam srautui nesvarbus: patikrinkite stumiamus prefiksus, tada konkretesnius maršrutus, tada IPv6. Jei būsena visiškai nesikeičia, paleidiklis nesuveikė, o vykdomojo failo kelias, profilio apimtis ir VPN kliento operacijų žurnalas yra trys vietos, kur žiūrėti.

Išvalykite tvarkingai, kad kitas bandymas būtų sąžiningas

Šalinkite atvirkštine tvarka, nei kūrėte: pirmiausia programos paleidiklį, tada profilį. Ištrinant profilį, kol paleidiklis lieka, paliekamas kabantis susiejimas, kuris apsunkina kitą bandymą, ir Remove-VpnConnection -Force ne visada išvalo telefono knygos įrašą, sukurtą už komandų ribų.

Įrašai pagal naudotoją yra naudotojo rasphone.pbk faile pagal Roaming profilį; įrašai visiems naudotojams yra po ProgramData. Patikrinkite saugyklą, atitinkančią profilio apimtį, iš naujo prijunkite paliktą profilį ir patvirtinkite, kad jo maršrutai ir DNS vis dar veikia, kad vėlesnis bandymas matuotų jūsų atliktą pakeitimą, o ne likusią būseną.

  • Tunelis pakyla paleidus procesą, o ne prisijungus.
  • VPN sąsajoje rodomi tik numatyti prefiksai.
  • Tikrasis nuotolinis programos adresas išsprendžiamas į VPN aliasą.
  • Pašalinus profilį nelieka jokio kabančio paleidiklio.

Susiję straipsniai