簡介
本文檔介紹基於Microsoft的通用Windows平台(UWP)構建的VPN應用程式。 這些應用程式通常在Windows 8或更高版本的Metro/Modern GUI中顯示為應用程式。案頭應用程式和傳統的Windows風格程式不使用UWP,也不會受到影響。
如果您看到非應用樣式的Windows VPN或始終在VPN上遇到問題,請參閱Umbrella Roaming Client上有關Windows VPN的說明:軟體和VPN相容性指南。
AnyConnect Umbrella漫遊模組不會導致相同的互操作性問題。
影響
當漫遊客戶端處於活動狀態時,UWP VPN應用程式使用者在嘗試啟動VPN會話時收到「No this host is known」或類似錯誤消息。這阻止使用者成功連線到VPN。如果漫遊客戶端停止或使用VPN客戶端的案頭版本,則不會出現此錯誤。
例如,這些方法不起作用:
- Pulse Secure App +漫遊客戶端
- SonicWall MobileConnect +漫遊客戶端
對於這些裝置,連線到同一VPN頭端會正常工作:
- Pulse Secure案頭應用程式+漫遊客戶端
- SonicWall NetExtender或SonicWall Desktop應用程式+漫遊客戶端
- Pulse Secure App + AnyConnect Umbrella漫遊模組*
- SonicWall MobileConnect + AnyConnect Umbrella漫遊模組*
*AnyConnect Umbrella模組不會將127.0.0.1(另一個介面)設定為DNS設定,而是使用核心驅動程式將DNS重定向到127.0.0.1。UWP應用不知道它們正在使用其他介面卡用於DNS,目前不受影響。
根本原因
根據設計,微軟在Windows 8+中構建了「現代」應用,使其更加沙盒化。其中一項限制適用於VPN應用。在UWP(應用)上構建的VPN被限製為使用生成查詢的介面。由於Umbrella漫遊客戶端在127.0.0.1(另一個介面l0)上偵聽,因此查詢永遠不會到達漫遊客戶端(或運行在127.0.0.1上的任何其他DNS轉發)。
以下呼叫允許將套接字建立限製為一個介面。對於將DNS限制到其介面的已知UWP VPN應用來說,情況就是這樣:
ConnectAsync(主機名、字串、SocketProtectionLevel、NetworkAdapter)
"ConnectAsync(Hostname, String, SocketProtectionLevel, NetworkAdapter)方法使用的名稱解析機制僅限於域名系統(DNS)名稱空間的指定介面。" https://learn.microsoft.com/en-us/uwp/api/windows.networking.sockets.streamsocket
Windows VPN API被認為利用此連線機制或類似的連線機制,導致UWP「應用」樣式VPN無法與漫遊客戶端一起運行,因為它使用127.0.0.1進行DNS。因此,VPN連線失敗,因為DNS被傳送到127.0.0.1;但是,由於該呼叫的限制,漫遊客戶端從未收到或應答該呼叫。因此,由於DNS故障,VPN連線失敗。
根本原因與Windows NCSI連線指示器的設計限制類似,在該指示器中從未查詢127.0.0.1以確認DNS連線(由Microsoft解析)。
解析
目前,對於獨立漫遊客戶端,沒有可更改此Windows行為的漫遊客戶端更新,因為將127.0.0.1設定為本地DNS伺服器。這是一個核心
要求漫遊客戶端正常工作。在Microsoft允許將127.0.0.1用於UWP VPN應用的DNS之前,唯一的選擇是切換到VPN客戶端的案頭版本,或使用AnyConnect漫遊模塊,該模組利用核心驅動程式來引導DNS。