Windows'ta uygulama başına VPN tetikleyicisi ile bölünmüş tünel: hangisi izole eder
Uygulamayla tetiklenen bir Windows VPN profili yalnızca bir tünel açar. Yönlendirilmiş bölünmüş tünel neyin gireceğine karar verir ve her biri tek bir uygulama için farklı biçimde başarısız olur.
İki Windows kurulumu Ayarlar'da aynı görünür ve hiç de aynı davranmaz. Biri, uygulama tetikleyicisi olan kopyalanmış bir VPN profili, böylece tek bir çalıştırılabilir dosyanın başlatılması tüneli ayağa kaldırır. Diğeri, rota listesi şans eseri o uygulamanın konuştuğu şeyi kapsayan bölünmüş tünel profilidir. Birincisi tünelin ne zaman var olduğunu yanıtlar. İkincisi hangi paketlerin içeri girdiğini yanıtlar ve makinenin geri kalanını yalnızca ikincisi fiziksel bağlantıda bırakırken uygulama bağlı kalır.
Tetikleyici bir yaşam döngüsü kuralıdır, yönlendirme kuralı değil
Add-VpnConnectionTriggerApplication çalıştırılabilir bir yolu profil adına bağlar. Bu süreç başladığında Uzak Erişim Bağlantı Yöneticisi profili arar ve tetikleyici koşulu sona erdiğinde bağlantı düşebilir. Bu takasın hiçbir yerinde soketler incelenmez. Cmdlet yükseltilmiş bir kabuk, ikili dosyanın tam yolu ve -Force var olan bir girdiyi değiştirdiğinizde gerekir. İlişkinin sürdüğünü şununla doğrulayın: Get-VpnConnectionTrigger komuta güvenmek yerine; Microsoft'un Add-VpnConnectionTriggerApplication başvurusu parametreleri ve örnekleri listeler.
İki sınır, “tetikleyici hiçbir şey yapmıyor” bildirimlerinin çoğunu açıklar. Tetikleyiciler tüm kullanıcılar için profiller etrafında kurulur, bu yüzden önce profil kapsamı netleşmelidir ve uygulama yolu gerçekten çalışan ikili dosyayla eşleşmelidir; kısayolla veya ikinci bir süreç oluşturan bir başlatıcıyla değil. Diğer sınır bilinçlidir: Windows'un güvenilir olarak sınıflandırdığı bir ağda tetikleyici boşta kalır, çünkü profil ofis dışında çalışmak üzere tasarlanmıştır.
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
Bölünmüş tünel tüneli neyin geçeceğine karar verir
Bölünmüş tünel kapalıyken Windows, VPN arabirimine düşük metrikli sınıf tabanlı bir varsayılan rota kurar. Tarayıcı ve güncelleme hizmeti dahil her soket onu izler, böylece bu yapılandırmadaki bir tetikleyici, profil bağlı olduğu sürece tüm makineyi taşır. Tetikleyici hâlâ yalnızca bir yaşam döngüsü kuralıdır; etki yarıçapı rotadan gelmiştir.
Bölünmüş tünel açıkken profil yalnızca ağ geçidinin ittiği veya VPN arabirimine eklediğiniz önekleri taşır. Geri kalan her şey fiziksel varsayılan rotayı kullanmaya devam eder. İnsanların genellikle “ayrı bir çıkıştan tek uygulama” ile kastettiği düzen budur ve baştan sona bir yönlendirme kararıdır.
Set-VpnConnection -Name "APP_VPN" -SplitTunneling $true
Get-VpnConnection -Name "APP_VPN" | Select-Object SplitTunneling
Get-NetRoute -InterfaceAlias "APP_VPN" | Sort-Object DestinationPrefix
Yönlendirilmiş bölünmenin uygulamanızı izole etmeyi bıraktığı yer
Yaygın başarısızlık, tünelin rota listesinde hiç görünmeyen bir hedeftir. Bir adrese oturum açıp sonra bir CDN'den akış yapan ya da düzinelerce dönen uç noktayı çözen bir uygulama, bazı bağlantıları VPN arabirimine, geri kalanını Wi-Fi'ye koyar. IPv6 ayrı bir tablodur, bu yüzden yalnızca IPv4 önekleri iten bir profil doğru görünebilirken uygulamanın IPv6 trafiği yerel kalır.
İki küçük etki de aynı derecede önemlidir. En uzun önek eşleşmesi kazanır, bu yüzden daha belirgin bir on-link rota, bir yönetim ana bilgisayarı için itilen /32 veya ikinci bir bağdaştırıcının alt ağı, tam da önemsediğiniz adres için tüneli yenebilir. Ad çözümlemesi yönlendirmeden önce de olur: profilin DNS sunucuları veya bir NRPT kuralı adı kapsamıyorsa uygulama fiziksel bağdaştırıcı üzerinden çözebilir ve sonra tünellenmiş öneklerin içinde hiç olmamış bir adresi arayabilir.
Üç biçim ve her birinin ne kazandırdığı
Tablo duvara yapıştıracağım kısımdır, çünkü karar özelliklerle değil etki yarıçapıyla ilgilidir. Uygulamanın hedefleri listeleyebileceğiniz kararlı önekler ise yönlendirilmiş bölünme en küçük ayak iziyle izolasyon sağlar. Değilse, bir VM veya ikinci cihaz arkasındaki varsayılan rota profili, birden fazla süreci taşıma pahasına ayrımı dürüst tutar.
| 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 |
Bunların hiçbirinin sunmadığı şey, ana bilgisayarda soket düzeyinde bağlamadır. Klasik Windows VPN istemcisinde bu sürecin o bağdaştırıcıyı kullanması gerektiğini söyleyen bir kural yoktur; tetikleyiciler ve rota filtreleri farklı katmanlarda yaşar ve arabirimi seçen katman yönlendirme tablosudur. Bir kılavuz yalnızca kopyalanmış bir profilden uygulama başına zorlama vaat ediyorsa, hangi rotanın veya hangi filtrenin işi yaptığını sorun.
Çifti tek geçişte doğrulayın
Yaşam döngüsünü ve yönlendirmeyi ayrı ayrı, bu sırayla test edin. Uygulamayı kapatın, profilin Disconnected bildirdiğini doğrulayın, sonra uygulamayı başlatın ve durumun değiştiğini kontrol edin. Belirli bir hedefin nereye gittiğini ancak tünel ayaktayken sormalısınız ve tahmin yerine uygulamanın gerçekten aradığı adresi kullanmalısınız.
$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 arabirimi ve o hedefi taşıyacak sonraki atlamayı adlandırır. Orada fiziksel bir diğer ad, tünelin ayakta olduğu ve o akış için önemsiz olduğu anlamına gelir: itilen önekleri, sonra daha belirgin rotaları, sonra IPv6'yı kontrol edin. Durum hiç değişmiyorsa tetikleyici tetiklenmemiştir ve çalıştırılabilir dosyanın yolu, profil kapsamı ve VPN istemcisinin işlem günlüğü bakılacak üç yerdir.
Sonraki test dürüst olsun diye temiz kaldırın
Kurduğunuzun tersi sırayla kaldırın: önce uygulama tetikleyicisi, sonra profil. Tetikleyici kalırken profili silmek, sonraki denemeyi kafa karıştırıcı yapan askıda bir ilişki bırakır ve Remove-VpnConnection -Force cmdlet'lerin dışında oluşturulmuş bir telefon defteri girdisini her zaman temizlemez.
Kullanıcı başına girdiler kullanıcının rasphone.pbk dosyasında, Roaming profili altında bulunur; tüm kullanıcılar için girdiler ProgramData altındadır. Profil kapsamına uyan depoyu kontrol edin, sakladığınız profili yeniden bağlayın ve rotalarının ve DNS'inin hâlâ çalıştığını doğrulayın, böylece sonraki bir test yaptığınız değişikliği ölçsün, kalan durumu değil.
- Tünel süreç başlarken açılır, oturum açarken değil.
- VPN arabiriminde yalnızca amaçlanan önekler görünür.
- Uygulamanın gerçek uzak adresi VPN diğer adına çözülür.
- Profil kaldırıldıktan sonra askıda tetikleyici kalmaz.