排查 Microsoft Intune 中的 VPN 配置文件问题

原始产品版本: Microsoft Intune
原始 KB 数: 4519426

简介

本指南可帮助你了解和排查在使用 intune Microsoft时可能发生的 VPN 配置文件问题。

本指南中的示例对配置文件使用简单证书注册协议(SCEP)证书身份验证。 这些示例还假定受信任的根和 SCEP 配置文件在设备上正常工作。 在示例中,受信任的根和 SCEP 配置文件按如下所示命名:

配置文件类型 Android iOS Windows
受信任的根配置文件 AndroidRoot iOSRoot WindowsRoot2
SCEP 配置文件 AndroidSCEP iOSSCEP WindowsSCEP2

VPN 配置文件概述

虚拟专用网络(VPN)使用户能够安全地远程访问组织的网络。 设备使用 VPN 连接配置文件启动与 VPN 服务器的连接。 在 Intune 中,VPN 配置文件将 VPN 设置分配给组织中的用户和设备。 然后,用户可以轻松安全地连接到组织网络。

例如,如果要将所有 iOS 设备配置为使用所需的设置连接到组织网络上的文件共享,则可以创建包含这些设置的 VPN 配置文件,并将此配置文件分配给拥有 iOS 设备的所有用户。 之后,用户可以在可用网络列表中看到 VPN 连接,并尽量少地进行连接。

可以使用不同的 VPN 连接类型创建 VPN 配置文件。

注意

在使用分配给设备的 VPN 配置文件之前,必须为配置文件安装适用的 VPN 应用。

如何创建 VPN 配置文件

若要创建 VPN 配置文件,请按照“创建设备配置文件”中的步骤操作。

有关示例,请参阅以下屏幕截图:

注意

在示例中,Android 和 iOS VPN 配置文件的连接类型为 Cisco AnyConnect,Windows 10 的连接类型为“自动”。 VPN 配置文件链接到 SCEP 配置文件。

显示如何为 Android 创建 VPN 配置文件的屏幕截图。

如何分配 VPN 配置文件

创建 VPN 配置文件后, 将配置文件 分配给所选组。

注意

组类型部署(用户组或设备组)非常重要,并且必须跨涉及此资源策略的所有策略(受信任的证书、SCEP 和 VPN)保持一致。 这取决于要部署的证书类型。 如果要部署用户证书,则所有部署都应是用户组,反之亦然。 如果部署的证书是设备类型 1,请使用设备组。

有关示例,请参阅以下屏幕截图:

显示如何分配配置文件的屏幕截图。

成功的 VPN 配置文件的外观

此方案使用注册为个人拥有的工作配置文件的 Android 设备。 由于设备上已安装受信任的根和 SCEP 配置文件,因此不会提示你安装 SCEP 证书。

  1. 你会收到安装公司 VPN 配置文件的通知:

    显示用于安装 VPN 配置文件的通知的屏幕截图。

    如果未收到通知,请点击 “更改设置” 按钮,在 AnyConnect 应用中启用 “外部控制 ”选项。 然后,你将收到通知。

    显示“更改设置”按钮的屏幕截图。

    显示“外部控件”选项的屏幕截图。

    显示“外部控制”选项已启用的屏幕截图。

  2. 在 AnyConnect 应用中选择 SCEP 证书:

    显示用于选择证书的页面的屏幕截图。

    注意

    使用设备管理员管理的 Android 设备时,可能会有多个证书,因为证书在更改或删除证书配置文件时不会吊销或删除。 在此方案中,选择最新的证书。 它通常是列表中显示的最后一个证书。

    Android Enterprise 和 Samsung Knox 设备上不会发生这种情况。 有关详细信息,请参阅使用 Intune 管理 Android 工作配置文件设备,并在 Microsoft Intune 中删除 SCEP 和 PKCS 证书。

  3. 已成功创建 VPN 连接。

    显示已成功创建 VPN 连接的屏幕截图。

成功部署 VPN 配置文件的公司门户日志

在 Android 设备上, Omadmlog.log 文件记录在设备上处理 VPN 配置文件的详细活动。 根据安装公司门户应用的时间,最多可以有五个Omadmlog.log文件,最后一次同步的时间戳可以帮助你找到相关的条目。

以下示例使用 CMTrace 读取日志并搜索 android.vpn.client

显示使用 CMTrace 读取日志并搜索 android.vpn.client 的示例的屏幕截图。

示例日志:

<Date Time>    INFO    com.microsoft.omadm.platforms.android.vpn.client.IntentVpnProfileProvisionStateMachine    13229    00622    Notifying to provision vpn profile 'AnyConnect'.
<Date Time>    INFO    com.microsoft.omadm.platforms.android.vpn.client.IntentVpnProfileProvisionStateMachine    13229    00622    VPN Profile "AnyConnect" state changed from RECEIVED to PENDING_USER_INSTALL
<Date Time>    VERB    com.microsoft.omadm.platforms.android.vpn.client.VpnClient    13229    00002    Creating VPN Provision Intent: anyconnect://create/?host=VPN.contoso.com&name=AnyConnect&usecert=true&keychainalias=UserID
<Date Time>    INFO    com.microsoft.omadm.platforms.android.vpn.client.IntentVpnProfileProvisionStateMachine    13229    00002    Vpn profile 'AnyConnect' provisioned and complete.
<Date Time>    INFO    com.microsoft.omadm.platforms.android.vpn.client.IntentVpnProfileProvisionStateMachine    13229    00002    VPN Profile "AnyConnect" state changed from PENDING_USER_INSTALL to PROVISIONED

常见问题疑难解答

问题 1:VPN 配置文件未部署到设备

  1. 验证 VPN 配置文件是否已分配给正确的组。

    在 Intune 门户中,选择“设备配置文件>”,然后选择配置文件,然后选择“分配以验证所选组。

    显示适用于 Android 的组的分配 VPN 配置文件的屏幕截图。

  2. 通过检查“故障排除”窗格上的“上次签入时间”,验证设备是否可以与 Intune 同步。

    显示 Android 的“故障排除”窗格上的“上次签入时间”的屏幕截图。

  3. 如果 VPN 配置文件链接到受信任的根配置文件和 SCEP 配置文件,请验证这两个配置文件是否已部署到设备。 VPN 配置文件依赖于这些配置文件。

    如果设备上未安装受信任的根配置文件和 SCEP 配置文件,公司门户日志文件中会显示以下条目(Omadmlog.log):

    <Date Time> INFO com.microsoft.omadm.platforms.android.vpn.client.IntentVpnProfileProvisionStateMachine 14210 00948 Waiting for required certificates for vpn profile 'androidVPN'.

    注意

    即使受信任的根和 SCEP 配置文件在设备上且符合要求,VPN 配置文件仍然不在设备上,也有可能。 当来自公司门户应用的提供程序找不到与指定条件匹配的证书时CertificateSelector,会出现此问题。 特定条件可以位于证书模板或 SCEP 配置文件中。 如果未找到匹配的证书,则会排除设备上的证书。 因此,将跳过 VPN 配置文件,因为它没有正确的证书。 在此方案中,你将在公司门户日志文件中看到以下条目(Omadmlog.log):

    Waiting for required certificates for vpn profile 'androidVPN'.

    以下示例日志显示证书已排除,因为 指定了“任何用途 扩展密钥使用情况”(EKU)条件。 但是,分配给设备的证书没有 EKU:

    <Date Time>    VERB     com.microsoft.omadm.utils.CertUtils      14210    00948    Excluding cert with alias User<ID1> and requestId <requestID1> as it does not have any purpose EKU.
    <Date Time>    VERB     com.microsoft.omadm.utils.CertUtils      14210    00948    Excluding cert with alias User<ID2> and requestId <requestID2> as it does not have any purpose EKU.
    <Date Time>    VERB     com.microsoft.omadm.utils.CertUtils      14210    00948    0 cert(s) matched criteria:
    <Date Time>    VERB     com.microsoft.omadm.utils.CertUtils      14210    00948    2 cert(s) excluded by criteria:
    <Date Time>    INFO     com.microsoft.omadm.platforms.android.vpn.client.IntentVpnProfileProvisionStateMachine       14210     00948    Waiting for required certificates for vpn profile '<profile name>'.
    

    以下示例显示 SCEP 配置文件具有指定的任何用途 EKU 选项。 但是,它未在证书颁发机构(CA)的证书模板中指定。 若要解决此问题,请将“任何用途”选项添加到证书模板,或者从 SCEP 配置文件中删除“任何用途”选项。

    显示如何添加“任何用途”选项的屏幕截图。

    显示“任何用途”选项的屏幕截图。

  4. 验证是否 启用了 AnyConnect 的外部控制 选项。

    必须先启用外部控件选项,然后才能创建配置文件。 将配置文件推送到设备时,系统会提示用户启用 “外部控制 ”选项。

    显示如何检查外部控件选项的屏幕截图。

    显示已启用“外部控制”选项的屏幕截图。

  5. 验证完整证书链中的所有必需证书是否都位于设备上。 否则,将在公司门户日志文件中看到以下条目(Omadmlog.log):

    Waiting for required certificates for vpn profile 'androidVPN'.

    有关详细信息,请参阅 缺少中间证书颁发机构

问题 2:VPN 配置文件部署到设备,但设备无法连接到网络

通常,此连接问题不是 Intune 问题,并且可能存在许多原因。 以下项目可以帮助你了解并解决问题:

  • 是否可以使用 VPN 配置文件中具有相同条件的证书手动连接到网络?

    如果可以,请检查在手动连接中使用的证书的属性,并更改 Intune VPN 配置文件。

  • 对于 Android 和 iOS 设备,VPN 客户端应用程序日志是否显示设备尝试连接到 VPN 配置文件?

    通常,连接错误记录在 VPN 客户端应用程序日志中。

  • 对于 Windows 设备,Radius 服务器日志是否显示设备尝试连接到 VPN 配置文件?

    通常,连接错误记录在 Radius 服务器日志中。

如何在 AnyConnect 应用中查看日志

若要查看日志,请参阅以下两个 Android 和 iOS 设备示例。

示例 1:查看 Android 设备上的日志

  1. 选择“菜单>诊断”。

    显示诊断函数的屏幕截图。

  2. 若要查看证书,请选择“ 证书管理”。

    显示证书管理功能的屏幕截图。

    显示证书信息的屏幕截图。

  3. 若要查看日志以分析 AnyConnect 问题,请选择“日志记录”并系统信息>Debug。

    显示日志记录和系统信息函数的屏幕截图。

    显示调试信息的屏幕截图。

  4. 若要发送日志,请选择“菜单>向管理员发送日志>报告”。

    显示发送日志函数的屏幕截图。

    显示“向管理员报告”功能的屏幕截图。

  5. 获取调试日志后,请检查 debug_logs_unfiltered.txt 文件,了解配置文件的创建和连接信息。

用于创建 VPN 的示例日志:

<Date Time> I/AnyConnect(14530): URIHandlerActivity: Received command: anyconnect://create?host=VPN.Contoso.com&name=AnyConnect&usecert=true&keychainalias=UserID
<Date Time> I/AnyConnect(14530): VpnService: VpnService is being created.

VPN 连接失败的示例日志:

<Date Time> I/vpnapi  (14530): Message type information sent to the user: Contacting VPN.Contoso.com.
<Date Time> I/vpnapi  (14530): Initiating VPN connection to the secure gateway https://VPN.Contoso.com
<Date Time> I/acvpnagent(14592): Using default preferences. Some settings (e.g. certificate matching) may not function as expected if a local profile is expected to be used. Verify that the selected host is in the server list section of the profile and that the profile is configured on the secure gateway.
<Date Time> I/acvpnagent(14592): Function: processConnectNotification File: MainThread.cpp Line: 14616 Received connect notification (host VPN.Contoso.com, profile N/A)
<Date Time> W/acvpnagent(14592): Function: getHostIPAddrByName File: SocketSupport.cpp Line: 344 Invoked Function: ::getaddrinfo Return Code: 11 (0x0000000B) Description: unknown 
<Date Time> W/acvpnagent(14592): Function: resolveHostName File: HostLocator.cpp Line: 710 Invoked Function: CSocketSupport::getHostIPAddrByName Return Code: -31129588 (0xFE25000C) Description: SOCKETSUPPORT_ERROR_GETADDRINFO 
<Date Time> W/acvpnagent(14592): Function: ResolveHostname File: HostLocator.cpp Line: 804 Invoked Function: CHostLocator::resolveHostName Return Code: -31129588 (0xFE25000C) Description: SOCKETSUPPORT_ERROR_GETADDRINFO failed to resolve host name VPN.Contoso.com to IPv4 address
<Date Time> I/vpnapi  (14530): Message type warning sent to the user: Connection attempt has failed.
<Date Time> E/vpnapi  (14530): Function: processIfcData File: ConnectMgr.cpp Line: 3399 Content type (unknown) received. Response type (DNS resolution failed) from VPN.Contoso.com: DNS resolution failed
<Date Time> I/vpnapi  (14530): Message type warning sent to the user: Unable to contact VPN.Contoso.com.
<Date Time> E/vpnapi  (14530): Function: processIfcData File: ConnectMgr.cpp Line: 3535 Unable to contact VPN.Contoso.com DNS resolution failed
<Date Time> I/vpnapi  (14530): Message type error sent to the user: The VPN connection failed due to unsuccessful domain name resolution.

示例 2:查看 iOS 设备上的日志

  1. 若要查看用户证书,请选择“诊断>证书”。

    显示导入的证书的屏幕截图。

  2. 若要查看日志消息,请选择“诊断”,启用“VPN 调试日志”选项以启用日志记录,然后选择“日志”。

    • 若要显示服务调试日志消息,请选择“ 服务”。
    • 若要显示应用程序调试日志消息,请选择“ 应用”。

    显示“VPN 调试日志”选项的屏幕截图。

  3. 若要发送日志,请在“诊断”窗口中选择“共享日志”,输入有关问题的信息,然后选择“发送”。

    显示“共享日志”函数的屏幕截图。

  4. 获取调试日志后,请检查文件,了解配置文件的创建和连接信息。

    显示包含调试日志文件的文件夹的屏幕截图。

显示 VPN 配置文件的AnyConnect_App_Debug_Logs.txt文件的示例日志

[<Date Time>] Info: Function: SaveSettings File: AppleVpnConfig.mm Line: 198 SaveSettings {type = mutable dict, count = 3, entries => 0 : {contents = "RemoteAddress"} = {contents = "Contoso.com"} 1 : {contents = "AuthenticationMethod"} = {contents = "Certificate"} 2 : {contents = "LocalCertificate"} = <69646e74 00000000 000002d3> }
[<Date Time>] Info: Function: GetSettings File: AppleVpnConfig.mm Line: 175 GetSettings { AuthenticationMethod = Certificate; LocalCertificate = <69646e74 00000000 000002d3>; RemoteAddress = "Contoso.com"; }
[<Date Time>] Info: Function: -[AppleVpnConfigBatch startBatchSaveToSystem] File: AppleVpnConfigBatch.mm Line: 43 Invoking save to system with 0x28202fd60
[<Date Time>] Info: Function: saveToSystem_block_invoke File: AxtVpnConfig.mm Line: 222 Successfully saved profile for Contoso.com
[<Date Time>] Info: Function: -[AppleVpnConfigBatch startBatchSaveToSystem] File: AppleVpnConfigBatch.mm Line: 36 completed!.

显示 VPN 连接失败的AnyConnect_Messages.txt文件的示例日志

[<Date Time>] [VPN] - Contacting Contoso.com.
[<Date Time>] [VPN] - Connection attempt has failed.
[<Date Time>] [VPN] - Unable to contact CoolBreeze.com.
[<Date Time>] [VPN] - Connection attempt has timed out. Please verify Internet connectivity.

显示 VPN 连接失败的AnyConnect_Plugin_Debug_Logs.txt文件的示例日志

[<Date Time>] Info: Message type information sent to the user: Contacting Contoso.com.
[<Date Time>] Info: Initiating VPN connection to the secure gateway https://Contoso.com
[<Date Time>] Info: Function: NoticeCB File: AnyConnectAuthenticator.cpp Line: 2116 Sending notice Contacting Contoso.com. to App
[<Date Time>] Error: Function: SendRequest File: CTransportCurlStatic.cpp Line: 2046 Invoked Function: curl_easy_perform Return Code: -29949904 (0xFE370030) Description: CTRANSPORT_ERROR_TIMEOUT 28 : Error
[<Date Time>] Error: Function: TranslateStatusCode File: ConnectIfc.cpp Line: 3169 Invoked Function: TranslateStatusCode Return Code: -29949904 (0xFE370030) Description: CTRANSPORT_ERROR_TIMEOUT Connection attempt has timed out. Please verify Internet connectivity.
[<Date Time>] Error: Function: doConnectIfcConnect File: ConnectMgr.cpp Line: 2442 Invoked Function: ConnectIfc::connect Return Code: -29949904 (0xFE370030) Description: CTRANSPORT_ERROR_TIMEOUT 
[<Date Time>] Info: Message type warning sent to the user: Connection attempt has failed.
[<Date Time>] Error: Function: processIfcData File: ConnectMgr.cpp Line: 3407 Content type (unknown) received. Response type (host unreachable) from Contoso.com: 
[<Date Time>] Info: Message type warning sent to the user: Unable to contact Contoso.com.
[<Date Time>] Info: Function: NoticeCB File: AnyConnectAuthenticator.cpp Line: 2116 Sending notice Connection attempt has failed. to App
[<Date Time>] Error: Function: processIfcData File: ConnectMgr.cpp Line: 3543 Unable to contact Contoso.com 
[<Date Time>] Info: Function: NoticeCB File: AnyConnectAuthenticator.cpp Line: 2116 Sending notice Unable to contact Contoso.com. to App
[<Date Time>] Info: Message type error sent to the user: Connection attempt has timed out. Please verify Internet connectivity.

详细信息

如果仍在查找相关问题的解决方案,或者想要详细了解 Microsoft Intune,请将问题发布到 Microsoft Intune 论坛。 许多支持工程师、MVP 和开发团队的成员参观了论坛。 因此,有一个很好的机会可以找到具有所需信息的人。

若要向 Microsoft Intune 产品支持团队提出支持请求,请参阅 如何获取对 Microsoft Intune 的支持。

有关 Intune 中的 VPN 配置文件的详细信息,请参阅以下文章:

有关所有最新新闻、信息和技术提示,请访问官方博客: