Share via


VPN Always On 疑難解答

本文提供驗證 VPN 部署 Always On 疑難解答的指示。

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows 10

如果您 Always On 虛擬專用網 (VPN) 設定未將用戶端連線到內部網路,您可能遇到下列其中一個問題:

  • VPN 憑證無效。
  • 網路原則伺服器 (NPS) 原則不正確。
  • 用戶端部署文稿或路由和遠端訪問的問題。

針對 VPN 連線進行疑難解答和測試的第一個步驟是瞭解 Always On VPN 基礎結構的核心元件。

您可以透過數種方式針對連線問題進行疑難解答。 針對客戶端問題和一般疑難解答,用戶端電腦上的應用程式記錄非常有價值。 針對驗證特定問題,位於 NPS 伺服器上的 NPS 記錄檔可協助您判斷問題的來源。

Always On VPN 連線問題的一般疑難解答

Always On VPN 用戶端在建立連線之前,會先進行數個步驟。 因此,有數個地方可以封鎖連線,有時很難找出問題所在。

如果您遇到問題,以下是您可以採取的一些一般步驟,以了解發生什麼情況:

  • 執行 whatismyip 掃描,以確定您的範本電腦未外部連線。 如果計算機有不屬於您的公用IP位址,則您應該將IP變更為私人IP。
  • 移至 控制台>Network>特網網路 Connections,開啟 VPN 配置檔的屬性,然後檢查以確定 [一般] 索引卷標的值可以透過 DNS 公開解析。 否則,無法解析為IP位址的遠端存取伺服器或 VPN 伺服器可能是問題的原因。
  • 開啟因特網控制訊息通訊協定 (ICMP) 至外部介面,然後從遠端用戶端偵測 VPN 伺服器。 如果 Ping 成功,您可以移除 ICMP 允許規則。 如果沒有,則無法存取您的 VPN 伺服器可能會造成問題。
  • 檢查 VPN 伺服器上內部和外部 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 連線事件詳細數據。

當您針對 VPN Always On 進行疑難解答時,請尋找標示為 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 作業事件記錄檔會記錄這些事件。

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來判斷憑證狀態

若要逸出此迴圈:

  1. 在 Windows PowerShell 中Get-WmiObject,執行 Cmdlet 以傾印 VPN 配置檔組態。

  2. 確認、 <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
    
  3. 接下來,執行 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 根 CA gen 1 存在於使用者的個人存放區中,但使用者透過選取 X 來關閉 Oops 訊息來取得存取權,請收集 CAPI2 事件記錄檔,以確認用來驗證的憑證是有效的客戶端驗證憑證,而該憑證不是從 Microsoft VPN 根 CA 發出。

  4. 如果使用者的個人存放區中有有效的客戶端驗證憑證,且 TLSExtensionsEKUNameEKUOID 值已正確設定,則在使用者關閉對話框之後,連線就不應該成功。

應該會出現錯誤訊息,指出「找不到可與可延伸驗證通訊協定搭配使用的憑證」。

無法從 [VPN 連線能力] 索引標籤刪除憑證

此問題是當您無法刪除 [VPN 連線能力] 索引標籤上的憑證時。

原因

當憑證設定為 [ 主要] 時,就會發生此問題。

解決方案:變更憑證設定

若要刪除憑證:

  1. 在 [ VPN 連線能力] 索引標籤 中,選取憑證。
  2. 在 [ 主要] 底下,選取 [否],然後選取 [ 儲存]
  3. [VPN 連線能力] 索引標籤 中,再次選取憑證。
  4. 選取 [刪除]