Always On VPN 疑難排解
本文提供驗證和疑難解答 AlwaysOn VPN 部署的指示。
如果 Always On 虛擬私人網路 (VPN) 設定未將用戶端連線到內部網路,您可能遇到下列其中一個問題:
- VPN 憑證無效。
- 網路原則伺服器 (NPS) 原則不正確。
- 用戶端部署文稿或路由和遠端訪問的問題。
為 VPN 連線進行疑難排解和測試的第一個步驟,就是了解 Always On VPN 基礎結構的核心元件。
您可以透過數種方式對連線問題進行疑難排解。 處理用戶端問題和一般疑難排解時,用戶端電腦上的應用程式記錄檔至關重要。 至於驗證方面的特定問題,位於 NPS 伺服器上的 NPS 記錄檔可協助您判斷問題的來源。
Always On VPN 連線問題的一般疑難排解
在建立連線之前,Always On VPN 用戶端會經歷數個步驟。 因此,有幾個位置可能會封鎖連線,而且有時很難找出問題所在。
如果您遇到問題,可以採取以下某些一般步驟來查明發生了什麼問題:
- 執行 whatismyip 掃描,以確定範本電腦未在外部連線。 如果電腦擁有不屬於您的公用 IP 位址,則您應該將 IP 變更為私人 IP。
- 移至 [控制台]>[網路] 和 [網際網路]>[網路連線],開啟 VPN 設定檔的內容,然後檢查以確定 [一般] 索引標籤中的值可以透過 DNS 公開解析。 如果不能這麼做,遠端存取伺服器或 VPN 伺服器無法解析為 IP 位址可能是問題的原因。
- 向外部介面開放網際網路控制訊息通訊協定 (ICMP),並從遠端用戶端偵測 VPN 伺服器。 如果偵測成功,您可以移除 ICMP 允許規則。 如果不成功,則無法存取 VPN 伺服器可能是導致問題的原因。
- 檢查 VPN 伺服器上內部和外部 NIC 的設定。 特別是,請確定這些 NIC 位於同一個子網路上,而且外部 NIC 連線到防火牆上的正確介面。
- 檢查用戶端防火牆、伺服器防火牆和任何硬體防火牆,以確定這些防火牆允許 UDP 500 和 4500 連接埠活動通過。 此外,如果您使用 UDP 連接埠 500,請確定未在任何位置停用或封鎖 IPSEC。 否則,未開啟從用戶端到 VPN 伺服器外部介面的連接埠是導致問題的原因。
- 請確定 NPS 伺服器具有伺服器驗證憑證,可服務 IKE 要求。 此外,請確定 NPS 用戶端在其設定中具有正確的 VPN 伺服器 IP。 您應該僅使用 PEAP 進行驗證,且 PEAP 內容應該只允許使用憑證驗證。 您可以在 NPS 事件記錄檔中檢查是否有驗證問題。 如需詳細資訊,請參閱安裝並設定 NPS 伺服器。
- 如果您可以連線但無法存取網際網路或區域網路,請檢查 DHCP 或 VPN 伺服器 IP 集區是否有設定問題。 此外,請確定用戶端可以連線到這些資源。 您可以使用 VPN 伺服器來路由傳送要求。
VPN_Profile.ps1 指令碼問題的一般疑難排解
手動執行 VPN_Profile.ps1 腳本時最常見的問題包括:
- 如果使用遠端連線工具,請確定您不會使用遠端桌面通訊協定 (RDP) 或其他遠端連線方法。 遠端連線可能會干擾服務在您登入時進行偵測的能力。
- 如果受影響的使用者是其本機電腦上的系統管理員,請確定這些使用者在執行指令碼時擁有系統管理員權限。
- 如果您已啟用其他 PowerShell 安全性功能,請確定 PowerShell 執行原則不會封鎖指令碼。 在執行指令碼之前先停用限制語言模式,然後在指令碼完成執行之後重新啟用該模式。
記錄
您也可以檢查應用程式記錄檔和 NPS 記錄檔,查看其中是否有可指出問題發生時間和位置的事件。
應用程式記錄檔
用戶端電腦上的應用程式記錄檔會記錄 VPN 連線事件的較高層級詳細資料。
當您針對 Always On VPN 進行疑難排解時,請尋找標記為 RasClient 的事件。 所有錯誤訊息都會在訊息結尾傳回錯誤碼。 錯誤碼會列出一些與 Always On VPN 相關的較常見錯誤碼。 如需錯誤碼的完整清單,請參閱路由和遠端存取錯誤碼。
NPS 記錄檔
NPS 會建立並儲存 NPS 帳戶處理記錄檔。 根據預設,記錄會儲存在記錄建立>日期的< %SYSTEMROOT%\System32\Logfiles\ 檔案中.txt。
根據預設,這些記錄檔採用逗號分隔值格式,但不含標題列。 下列程式碼區塊包含標題列:
ComputerName,ServiceName,Record-Date,Record-Time,Packet-Type,User-Name,Fully-Qualified-Distinguished-Name,Called-Station-ID,Calling-Station-ID,Callback-Number,Framed-IP-Address,NAS-Identifier,NAS-IP-Address,NAS-Port,Client-Vendor,Client-IP-Address,Client-Friendly-Name,Event-Timestamp,Port-Limit,NAS-Port-Type,Connect-Info,Framed-Protocol,Service-Type,Authentication-Type,Policy-Name,Reason-Code,Class,Session-Timeout,Idle-Timeout,Termination-Action,EAP-Friendly-Name,Acct-Status-Type,Acct-Delay-Time,Acct-Input-Octets,Acct-Output-Octets,Acct-Session-Id,Acct-Authentic,Acct-Session-Time,Acct-Input-Packets,Acct-Output-Packets,Acct-Terminate-Cause,Acct-Multi-Ssn-ID,Acct-Link-Count,Acct-Interim-Interval,Tunnel-Type,Tunnel-Medium-Type,Tunnel-Client-Endpt,Tunnel-Server-Endpt,Acct-Tunnel-Conn,Tunnel-Pvt-Group-ID,Tunnel-Assignment-ID,Tunnel-Preference,MS-Acct-Auth-Type,MS-Acct-EAP-Type,MS-RAS-Version,MS-RAS-Vendor,MS-CHAP-Error,MS-CHAP-Domain,MS-MPPE-Encryption-Types,MS-MPPE-Encryption-Policy,Proxy-Policy-Name,Provider-Type,Provider-Name,Remote-Server-Address,MS-RAS-Client-Name,MS-RAS-Client-Version
如果您將此標題列貼上為記錄檔的第一行,然後將檔案匯入 Microsoft Excel,Excel 即會正確標記欄位。
NPS 記錄檔可協助您診斷原則相關問題。 如需 NPS 記錄檔的詳細資訊,請參閱解譯 NPS 資料庫格式記錄檔。
錯誤碼
下列各節說明如何解決最常遇到的錯誤。
錯誤 800:遠端連線無法連線
當服務無法建立遠端連線時,就會發生此問題,原因是嘗試的 VPN 通道失敗,通常是因為無法連線到 VPN 伺服器。 如果連線嘗試使用第 2 層通道通訊協定 (L2TP) 或 IPsec 通道,此錯誤表示 IPsec 交涉所需的安全性參數未正確設定。
原因:VPN 通道類型
當 VPN 通道類型設定為 [自動] 且連線嘗試在所有 VPN 通道中失敗時,您可能會遇到此問題。
解決方案:檢查 VPN 設定
由於 VPN 設定會造成此問題,因此您應該嘗試下列方法以針對 VPN 設定和連線進行疑難排解:
- 如果您知道要用於部署的通道,請在 VPN 用戶端上將 VPN 類型設定為該特定通道類型。
- 請確定沒有封鎖使用者資料包通訊協定 (UDP) 連接埠 500 和 4500 上的網際網路金鑰交換 (IKE) 連接埠。
- 請確定用戶端和伺服器都擁有正確的 IKE 憑證。
錯誤 809:無法建立本機電腦與 VPN 伺服器之間的連線
在此問題中,遠端伺服器不會回應,因而阻止本機電腦和 VPN 伺服器連線。 這可能是因為電腦與遠端伺服器之間的一或多個網路裝置 (例如,路由器、防火牆或網路位址轉譯 (NAT)) 未設定為允許 VPN 連線。 請連絡系統管理員或服務提供者,以判斷哪些裝置可能造成問題。
錯誤 809 原因
當 VPN 伺服器或防火牆上的 UDP 500 或 4500 連接埠遭到封鎖時,您可能會遇到此問題。 當電腦與遠端伺服器之間的其中一個網路裝置 (例如,防火牆、NAT 或路由器) 未正確設定時,可能會發生封鎖。
解決方案:檢查本機電腦與遠端伺服器之間裝置上的連接埠
若要解決此問題,您應該先連絡系統管理員或服務提供者,查明哪些裝置遭到封鎖。 之後,請確定該裝置的防火牆允許 UDP 500 和 4500 連接埠通過。 如果這無法解決問題,請檢查本機電腦與遠端伺服器之間每部裝置上的防火牆。
錯誤 812:無法連線到 Always On VPN
當遠端存取伺服器 (RAS) 或 VPN 伺服器無法連線到 Always On VPN 時,就會發生此問題。 伺服器用來驗證使用者名稱和密碼的驗證方法可能不符合連線設定檔中設定的驗證方法。
每當發生錯誤 812 時,建議您立即連絡 RAS 伺服器系統管理員,讓他們知道發生了什麼事。
如果您使用事件檢視器進行疑難排解,可以發現此問題標記為事件記錄檔 20276。 當以路由和遠端存取 (RRAS) 為基礎的 VPN 伺服器驗證通訊協定設定不符合 VPN 用戶端電腦上的設定時,通常會顯示此事件。
錯誤 812 原因
當 NPS 指定了用戶端無法符合的驗證條件時,您通常會遇到此錯誤。 例如,如果 NPS 指定其需要憑證來保護受保護的可延伸驗證通訊協定 (PEAP) 連線,則用戶端嘗試改用 EAP-MSCHAPv2 時就無法進行驗證。
解決方案:檢查用戶端和 NPS 伺服器驗證設定
若要解決此問題,請確定用戶端與 NPS 伺服器的驗證需求相符。 如果不相符,請據以變更這些設定。
錯誤 13806:IKE 找不到有效的電腦憑證
當 IKE 找不到有效的電腦憑證時,就會發生此問題。
錯誤 13806 原因
當 VPN 伺服器沒有必要的電腦或根電腦憑證時,您通常會遇到此錯誤。
解決方案:在相關的憑證存放區中安裝有效的憑證
若要解決此問題,請確定用戶端電腦和 VPN 伺服器上都安裝了必要的憑證。 如果沒有安裝,請連絡網路安全性系統管理員,並要求他們在相關的憑證存放區中安裝有效的憑證。
錯誤 13801:IKE 驗證認證無效
當伺服器或用戶端無法接受 IKE 驗證認證時,就會發生此問題。
錯誤 13801 原因
這個錯誤可能是下列原因造成:
- RAS 伺服器上用於 IKEv2 驗證的電腦憑證未在 [增強金鑰使用方法] 底下啟用 [伺服器驗證]。
- RAS 伺服器上的電腦憑證已過期。
- 用戶端電腦沒有用來驗證 RAS 伺服器憑證的根憑證。
- 用戶端電腦的 VPN 伺服器名稱不符合伺服器憑證的 subjectName 值。
解決方案 1:驗證伺服器憑證設定
如果問題是 RAS 伺服器電腦憑證,請確定憑證包含 [增強金鑰使用方法] 底下的 [伺服器驗證]。
解決方案 2:確定電腦憑證仍然有效
如果問題是 RAS 電腦憑證已過期,請確定該憑證仍然有效。 如果無效,請安裝有效的憑證。
解決方案 3:確定用戶端電腦具有根憑證
如果問題與用戶端電腦沒有根憑證有關,請先檢查 RRAS 伺服器上受信任的根憑證授權單位,以確定您所使用的憑證授權單位存在。 如果不存在,請安裝有效的根憑證。
解決方案 4:讓用戶端電腦的 VPN 伺服器名稱與伺服器憑證相符
首先,請確定 VPN 用戶端透過使用 VPN 伺服器憑證所使用的同一個完整網域名稱 (FQDN) 進行連線。 如果不相同,請變更用戶端名稱以符合伺服器憑證名稱。
錯誤 0x80070040:伺服器憑證在其使用方式項目中沒有伺服器驗證
當伺服器憑證沒有將 [伺服器驗證] 作為其中一個憑證使用方式項目,就會發生此問題。
錯誤 0x80070040 原因
當 RAS 伺服器沒有安裝伺服器驗證憑證時,就會發生此錯誤。
解決方案:確定電腦憑證具有必要的憑證使用方式項目
若要解決此問題,請確定 RAS 伺服器用於 IKEv2 驗證的電腦憑證在其憑證使用方式項目清單中包含 [伺服器驗證]。
錯誤 0x800B0109:憑證鏈結已處理,但在根憑證中終止
完整的錯誤描述是「憑證鏈結已處理,但在信任提供者不信任的根憑證中終止」。
一般而言,VPN 用戶端電腦會加入 Active Directory (AD) 型網域。 如果您使用網域認證登入 VPN 伺服器,服務會將憑證自動安裝在「受信任的根憑證授權單位」存放區中。 如果電腦未加入 AD 網域,或您使用替代憑證鏈結,則可能會遇到此問題。
錯誤 0x800B0109 原因
如果用戶端電腦在其「受信任的根憑證授權單位」存放區中未安裝適當的可信任根 CA 憑證,您可能會遇到此錯誤。
解決方案:安裝受信任的根憑證
若要解決此問題,請確定用戶端電腦在其「受信任的根憑證授權單位」存放區中已安裝受信任的根憑證。 如果未安裝,請安裝適當的根憑證。
錯誤:糟糕,您尚無法使用
此錯誤訊息與Microsoft Entra 條件式存取連線問題相關聯。 出現此問題時,未滿足條件式存取原則,因而封鎖 VPN 連線,但在使用者關閉對話方塊視窗之後進行連線。 如果使用者選取 [確定],則會啟動另一次驗證嘗試,但該嘗試也未成功,並提示相同的錯誤訊息。 用戶端的 Microsoft Entra Operational 事件記錄檔會記錄這些事件。
Microsoft Entra 條件式存取錯誤原因
發生此問題的原因有幾個:
使用者在其個人證書存儲中有一個客戶端驗證憑證,其有效但不是來自Microsoft Entra ID。
VPN 設定檔
<TLSExtensions>
區段遺失或未包含<EKUName>AAD Conditional Access</EKUName><EKUOID>1.3.6.1.4.1.311.87</EKUOID><EKUName>AAD Conditional Access</EKUName><EKUOID>1.3.6.1.4.1.311.87</EKUOID>
項目。<EKUName>
和<EKUOID>
項目會告訴 VPN 用戶端將憑證傳遞至 VPN 伺服器時,要從使用者的憑證存放區擷取哪一個憑證。 如果沒有<EKUName>
和<EKUOID>
項目,VPN 用戶端會使用使用者憑證存放區中任何有效的用戶端驗證憑證,且驗證成功。RADIUS 伺服器 (NPS) 尚未設定為只接受包含 AAD 條件式存取物件識別碼 (OID) 的用戶端憑證。
解決方案:使用 PowerShell 來判斷憑證狀態
若要逸出此迴圈,請執行下列動作:
在 Windows PowerShell 中,執行
Get-WmiObject
Cmdlet 來傾印 VPN 設定檔組態。驗證
<TLSExtensions>
、<EKUName>
和<EKUOID>
變數是否存在,且其輸出顯示正確的名稱和 OID。下列程式代碼是 Cmdlet 的
Get-WmiObject
範例輸出。PS C:\> Get-WmiObject -Class MDM_VPNv2_01 -Namespace root\cimv2\mdm\dmmap __GENUS : 2 __CLASS : MDM_VPNv2_01 __SUPERCLASS : __DYNASTY : MDM_VPNv2_01 __RELPATH : MDM_VPNv2_01.InstanceID="AlwaysOnVPN",ParentID="./Vendor/MSFT/VPNv2" __PROPERTY_COUNT : 10 __DERIVATION : {} __SERVER : DERS2 __NAMESPACE : root\cimv2\mdm\dmmap __PATH : \\DERS2\root\cimv2\mdm\dmmap:MDM_VPNv2_01.InstanceID="AlwaysOnVPN",ParentID="./Vendor/MSFT/VP Nv2" AlwaysOn : ByPassForLocal : DnsSuffix : EdpModeId : InstanceID : AlwaysOnVPN LockDown : ParentID : ./Vendor/MSFT/VPNv2 ProfileXML : <VPNProfile><RememberCredentials>false</RememberCredentials><DeviceCompliance><Enabled>true</ Enabled><Sso><Enabled>true</Enabled></Sso></DeviceCompliance><NativeProfile><Servers>derras2.corp.deverett.info;derras2.corp.deverett.info</Servers><RoutingPolicyType>ForceTunnel</RoutingPolicyType><NativeProtocolType>Ikev2</NativeProtocolType><Authentication><UserMethod>Eap</UserMethod><MachineMethod>Eap</MachineMethod><Eap><Configuration><EapHostConfigxmlns="https://www.microsoft.com/provisioning/EapHostConfig"><EapMethod><Typexmlns="https://www.microsoft.com/provisioning/EapCommon">25</Type><VendorIdxmlns="https://www.microsoft.com/provisioning/EapCommon">0</VendorId><VendorTypexmlns="https://www.microsoft.com/provisioning/EapCommon">0</VendorType><AuthorIdxmlns="https://www.microsoft.com/provisioning/EapCommon">0</AuthorId></EapMethod><Configxmlns="https://www.microsoft.com/provisioning/EapHostConfig"><Eap xmlns="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"><Type>25</Type><EapType xmlns="https://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1"><ServerValidation><DisableUserPromptForServerValidation>true</DisableUserPromptForServerValidation><ServerNames></ServerNames></ServerValidation><FastReconnect>true</FastReconnect><InnerEapOptional>false</InnerEapOptional><Eap xmlns="https://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"><Type>13</Type> <EapType xmlns="https://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV1"><CredentialsSource><CertificateStore><SimpleCertSelection>true</SimpleCertSelection></CertificateStore></CredentialsSource><ServerValidation><DisableUserPromptForServerValidation>true</DisableUserPromptForServerValidation><ServerNames></ServerNames><TrustedRootCA>5a 89 fe cb 5b 49 a7 0b 1a 52 63 b7 35 ee d7 1c c2 68 be 4b </TrustedRootCA></ServerValidation><DifferentUsername>false</DifferentUsername><PerformServerValidation xmlns="https://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">true</PerformServerValidation><AcceptServerName xmlns="https://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">false</AcceptServerName><TLSExtensionsxmlns="https://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2"><FilteringInfo xml ns="https://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV3"><EKUMapping><EKUMap><EKUName>AAD Conditional Access</EKUName><EKUOID>1.3.6.1.4.1.311.87</EKUOID></EKUMap></EKUMapping><ClientAuthEKUListEnabled="true"><EKUMapInList><EKUName>AAD Conditional Access</EKUName></EKUMapInList></ClientAuthEKUList></FilteringInfo></TLSExtensions></EapType></Eap><EnableQuarantineChecks>false</EnableQuarantineChecks><RequireCryptoBinding>false</RequireCryptoBinding><PeapExtensions><PerformServerValidation xmlns="https://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2">false</PerformServerValidation><AcceptServerName xmlns="https://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2">false</AcceptServerName></PeapExtensions></EapType></Eap></Config></EapHostConfig></Configuration></Eap></Authentication></NativeProfile></VPNProfile> RememberCredentials : False TrustedNetworkDetection : PSComputerName : DERS2
接下來,執行
Certutil
命令來判斷使用者憑證存放區中是否有有效的憑證:C:\>certutil -store -user My My "Personal" ================ Certificate 0 ================ Serial Number: 32000000265259d0069fa6f205000000000026 Issuer: CN=corp-DEDC0-CA, DC=corp, DC=deverett, DC=info NotBefore: 12/8/2017 8:07 PM NotAfter: 12/8/2018 8:07 PM Subject: E=winfed@deverett.info, CN=WinFed, OU=Users, OU=Corp, DC=corp, DC=deverett, DC=info Certificate Template Name (Certificate Type): User Non-root Certificate Template: User Cert Hash(sha1): a50337ab015d5612b7dc4c1e759d201e74cc2a93 Key Container = a890fd7fbbfc072f8fe045e680c501cf_5834bfa9-1c4a-44a8-a128-c2267f712336 Simple container name: te-User-c7bcc4bd-0498-4411-af44-da2257f54387 Provider = Microsoft Enhanced Cryptographic Provider v1.0 Encryption test passed ================ Certificate 1 ================ Serial Number: 367fbdd7e6e4103dec9b91f93959ac56 Issuer: CN=Microsoft VPN root CA gen 1 NotBefore: 12/8/2017 6:24 PM NotAfter: 12/8/2017 7:29 PM Subject: CN=WinFed@deverett.info Non-root Certificate Cert Hash(sha1): 37378a1b06dcef1b4d4753f7d21e4f20b18fbfec Key Container = 31685cae-af6f-48fb-ac37-845c69b4c097 Unique container name: bf4097e20d4480b8d6ebc139c9360f02_5834bfa9-1c4a-44a8-a128-c2267f712336 Provider = Microsoft Software Key Storage Provider Private key is NOT exportable Encryption test passed
注意
如果簽發者 CN=Microsoft VPN root CA gen 1 的憑證存在於使用者的個人存放區中,但使用者選取 X 以關閉「糟糕」訊息來取得存取權,請收集 CAPI2 事件記錄檔,以確認用來驗證的憑證是否為不是從 Microsoft VPN 根 CA 簽發的有效用戶端驗證憑證。
如果使用者的個人存放區中存在有效的客戶端驗證憑證,且
TLSExtensions
已正確設定 、EKUName
和EKUOID
值,則使用者關閉對話框之後,不應該成功連線。
此時應顯示一則錯誤訊息,指出「找不到可與可延伸驗證通訊協定搭配使用的憑證」。
無法從 [VPN 連線] 索引標籤中刪除憑證
此問題是當您無法在 [VPN 連線] 索引標籤上刪除憑證時發生。
原因
當憑證設定為 [主要] 時,就會發生此問題。
解決方案:變更憑證設定
若要刪除憑證,請執行下列動作:
- 在 [VPN 連線] 索引標籤中選取憑證。
- 在 [主要] 底下選取 [否],然後選取 [儲存]。
- 在 [VPN 連線] 索引標籤中再次選取該憑證。
- 選取刪除。