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

原始产品版本:Microsoft Intune
原始 KB 编号: 4519426

简介

本指南可帮助你了解和排查使用Microsoft Intune时可能发生的 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的连接类型为 Automatic。 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 问题,请选择“ 日志记录和系统信息>调试 ”。

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

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

  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 配置文件的详细信息,请参阅以下文章:

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