此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍对 OpenDNS (Umbrella) 漫游模块进行安装、配置和故障排除的具体步骤。在 AnyConnect 4.3.X 及更高版本中,OpenDNS 漫游客户端可作为集成模块提供。该模块也称为云安全模块,既可以使用 AnyConnect 安装程序预部署到终端,也可以通过网络部署从自适应安全设备 (ASA) 下载。
Cisco 建议您了解以下主题:
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令或配置的潜在影响。
要使 OpenDNS 漫游模块正常运行,必须从 OpenDNS 控制面板下载 OrgInfo.json 文件,或者在使用模块前从 ASA 推送该文件。在首次下载时,此文件会保存到特定的路径(视操作系统而定)。
对于 Mac OS X,OrgInfo.json 会下载到 /opt/cisco/anyconnect/Umbrella。
对于 Microsoft Windows,OrgInfo.json 会下载到 C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Umbrella。
{
"organizationId" : "XXXXXXX",
"fingerprint" : "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"userId" : "XXXXXXX"
}
如图所示,此文件使用 UTF-8 编码格式,包含组织 ID、指纹和用户 ID。组织 ID 显示当前登录 OpenDNS 控制面板的用户所在组织的信息。对于每个组织,组织 ID 是由 OpenDNS 生成的唯一静态标识。指纹用于在设备注册过程中验证 Orginfo.json 文件;用户 ID 显示登录用户的唯一 ID。
当漫游模块启动后,在 Windows 系统中,OrgInfo.json 文件会被复制到 Umbrella 目录下的数据目录,作为工作副本。在 MAC OS X 系统中,此文件中的信息会被保存到 Umbrella 目录下的数据目录中的 updater.plist 文件。漫游模块成功读取 OrgInfo.json 文件的信息后,会尝试使用云 API 注册到 OpenDNS。通过此注册操作,OpenDNS 会为尝试注册的设备分配一个唯一的设备 ID。如果设备已经具有以前注册时分配的设备 ID,则会跳过注册过程。
注册完成后,漫游模块会执行同步操作,以检索终端的策略信息。设备必须拥有设备 ID,才能执行同步操作。同步数据包括syncInterval、内部旁路域和IP地址等。同步间隔是模块再次同步之前所应等待的分钟数。
成功完成注册和同步后,漫游模块会向本地解析器发送域名系统 (DNS) 探测请求。这些 DNS 请求中包含对 debug.opendns.com 的 TXT 查询。根据响应结果,客户端可以确定网络中是否存在本地 OpenDNS 虚拟设备 (VA)。
如果网络中存在虚拟设备 (VA),客户端将切换至“VA 优先”模式,终端上不会执行 DNS 强制操作。客户端会通过 VA 在网络级别执行 DNS 强制操作。
如果网络中不存在 VA,客户端会通过 UDP/443 端口向 OpenDNS 公共解析器 (208.67.222.222) 发送 DNS 请求。
如果得到肯定响应,则表示可以进行 DNS 加密。如果得到否定响应,客户端会通过 UDP/53 端口向 OpenDNS 公共解析器发送 DNS 请求。
如果此查询得到肯定响应,则表示可以获得 DNS 保护。如果得到否定响应,客户端会在几秒后重新尝试发送请求。
如果多次收到否定响应,客户端将切换至“失效开放”状态。“失效开放”状态意味着无法进行 DNS 加密和/或 DNS 保护。漫游模块成功转换到受保护和/或加密状态后,本地搜索域和内部绕行域之外的搜索域的所有DNS查询都将发送到OpenDNS解析器以进行名称解析。在启用加密状态时,所有 DNS 事务都将通过 dnscrypt 进程加密。
注意:如图所示,当 VPN 隧道配置为“全部使用隧道”时,漫游模块的默认行为是禁用 DNS 保护。要在 AnyConnect 配置为“全部使用隧道”时启用漫游模块,必须在 OpenDNS 门户上取消选择禁用“在完全隧道 VPN 会话处于活动状态时漫游客户端”选项。要启用此功能,必须具有 OpenDNS 的高级订用级别。以下信息假定已启用通过漫游模块的 DNS 保护。
内部旁路列表的查询域部分
允许隧道适配器发起 DNS 请求,这些请求会通过 VPN 隧道发送至隧道 DNS 服务器。如果隧道 DNS 服务器无法解析查询请求,请求将保持未解析状态。
查询域不属于内部旁路列表
允许隧道适配器发起 DNS 请求,这些请求会由漫游模块代理传输至 OpenDNS 公共解析器,并通过 VPN 隧道发送。对于 DNS 客户端,这些请求会表现为已通过 VPN DNS 服务器进行名称解析。如果 OpenDNS 解析器未能成功进行名称解析,漫游模块会故障切换至本地配置的 DNS 服务器,第一个目标是 VPN 适配器(隧道处于正常状态时的首选适配器)。
注意:隧道建立后,所有拆分DNS域都会自动添加到漫游模块内部旁路列表。完成此设置以便在 AnyConnect 和漫游模块之间提供一致的 DNS 处理机制。请确保在分离 DNS 配置下(对分离包括项进行隧道传输),OpenDNS 公共解析器未包括在分离包括项网络中。
注意:在 Mac OS X 系统中,如果对两种 IP 协议(IPv4 和 IPv6)都启用分离 DNS,或者仅对其中一种协议启用分离 DNS,而且没有为另一种协议配置地址池,则会强制执行类似于 Windows 的真正的分离 DNS。
如果只对一种 IP 协议启用分离 DNS,并且为另一种 IP 协议分配了客户端地址,则只会强制对分离隧道执行 DNS 回退。这意味着 AnyConnect 仅允许通过隧道来传输与分离 DNS 域匹配的 DNS 请求(其他请求会由 AnyConnect 做出拒绝响应,以强制故障切换至公共 DNS 服务器),但是无法强制规定不允许通过公共适配器发送与分离 DNS 域匹配的明文请求。
查询域内部旁路列表的一部分和拆分DNS域的一部分
允许隧道适配器发起 DNS 请求,这些请求会通过 VPN 隧道发送至隧道 DNS 服务器。来自其他适配器的所有对匹配域的请求会由 AnyConnect 驱动程序做出“无此名称”响应,以实现真正的分离 DNS(阻止 DNS 回退)。 在这种情况下,只有不通过隧道传输的 DNS 流量会受漫游模块保护。
查询域是内部绕行列表的一部分,但不是拆分DNS域的一部分
允许物理适配器发起 DNS 请求,这些请求会从 VPN 隧道外部发送至公共 DNS 服务器。来自隧道适配器的所有对匹配域的请求会由 AnyConnect 驱动程序做出“无此名称”响应,以阻止通过 VPN 隧道发送这些请求。
查询域不属于内部旁路列表或拆分DNS域
允许物理适配器发起 DNS 请求,这些请求会从 VPN 隧道外部代理传输至 DNS 公共解析器。对于 DNS 客户端,这些请求会表现为已通过公共 DNS 服务器进行名称解析。如果 OpenDNS 解析器未能成功进行名称解析,漫游模块会故障切换至本地配置的 DNS 服务器(VPN 适配器上配置的 DNS 服务器除外)。来自隧道适配器的所有对匹配域的请求会由 AnyConnect 驱动程序做出“无此名称”响应,以阻止通过 VPN 隧道发送这些请求。
内部旁路列表的查询域部分
操作系统原生解析器根据网络适配器的顺序执行 DNS 解析;当启用 VPN 时,AnyConnect 是首选适配器。DNS 请求将首先由隧道适配器发起,并通过 VPN 隧道发送至隧道 DNS 服务器。如果隧道 DNS 服务器无法解析查询请求,操作系统解析器将尝试通过公共 DNS 服务器来解析请求。
查询域不属于内部旁路列表
操作系统原生解析器根据网络适配器的顺序执行 DNS 解析;当启用 VPN 时,AnyConnect 是首选适配器。DNS 请求将首先由隧道适配器发起,并通过 VPN 隧道发送至隧道 DNS 服务器。如果隧道 DNS 服务器无法解析查询请求,操作系统解析器将尝试通过公共 DNS 服务器来解析请求。
如果 OpenDNS 公共解析器属于分离包括项列表(或不属于分离排除项列表),被代理的请求会通过 VPN 隧道发送。
如果 OpenDNS 公共解析器不属于分离包括项列表(或属于分离排除项列表),被代理的请求会从 VPN 隧道外部发送。
如果 OpenDNS 解析器未能成功进行名称解析,漫游模块会故障切换至本地配置的 DNS 服务器,第一个目标是 VPN 适配器(隧道处于正常状态时的首选适配器)。 如果漫游模块未能成功返回最终响应(并通过代理回退到本地 DNS 客户端),本地客户端将尝试向其他 DNS 服务器(如果有)发送请求。
要将 OpenDNS 漫游模块集成到 AnyConnect VPN 客户端,可通过预部署或网络部署两种方式安装漫游模块:
预部署方法只能以手动方式安装 OpenDNS 漫游模块,并将 OrgInfo.json 文件复制到用户设备。大规模部署通常可以使用企业软件管理系统 (SMS) 来实现。
在安装 AnyConnect 软件包的过程中,选择 AnyConnect VPN 和 AnyConnect Umbrella 漫游安全模块:
要下载 OrgInfo.json 文件,请完成以下步骤:
文件下载后,必须将其保存在以下其中一个路径中,具体取决于操作系统。
Mac OS X:/opt/cisco/anyconnect/Umbrella
Windows: C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Umbrella
从思科网站下载 Anyconnect 安全移动客户端 (ASDM) 软件包(即 anyconnect-win-4.3.02039-k9.pkg),然后将其上传到 ASA 的闪存中。上传后,在 ASDM 中,依次选择组策略 > 高级 > AnyConnect 客户端 > 要下载的可选客户端模块,然后选择 Umbrella 漫游安全。
等效的 CLI 命令
group-policy <Group_Policy_Name> attributes
webvpn
anyconnect modules value umbrella
1.从OpenDNS控制面板下载OrgInfo.json文件,并将其上传到ASA的闪存。
2.配置ASA,将OrgInfo.json文件推送到远程终端。
webvpn
anyconnect profiles OpenDNS disk0:/OrgInfo.json
!
!
group-policy <Group_Policy_Name> attribute
webvpn
anyconnect profiles value OpenDNS type umbrella
注意:此配置只能通过 CLI 执行。要使用 ASDM 来执行此任务,必须在 ASA 上安装 ASDM 版本 7.6.2 或更高版本。
通过上述任何一种方法安装 Umbrella 漫游客户端后,即可看到其作为集成模块显示在 AnyConnect GUI 中(如图所示):
只有在 Orginfo.json 部署到终端上的正确位置后,Umbrella 漫游模块才会执行初始化。
本节显示在各种 AnyConnect 隧道模式下操作 OpenDNS 漫游模块所需的 CLI 配置代码片段示例。
!--- ip local pool for vpn
ip local pool vpn_pool 198.51.100.1-198.51.100.9 mask 255.255.255.224
!--- Optional NAT Hairpin configuration to reach OpenDNS servers through VPN tunnel
object network OpenDNS
subnet 198.51.100.0 255.255.255.0
nat (outside,outside) source dynamic OpenDNS interface
!
same-security-traffic permit intra-interface
!--- Global Webvpn Configuration
webvpn
enable outside
anyconnect image disk0:/anyconnect-win-4.3.01095-k9.pkg 1
anyconnect profiles Anyconnect disk0:/anyconnect.xml
anyconnect profiles OpenDNS disk0:/OrgInfo.json
anyconnect enable
tunnel-group-list enable
!--- split-include Configuration
access-list Split_Include standard permit <host/subnet>
group-policy OpenDNS_Split_Include internal
group-policy OpenDNS_Split_Include attributes
wins-server none
dns-server value 198.51.100.11
vpn-tunnel-protocol ssl-client ssl-clientless
split-tunnel-policy tunnelspecified
split-tunnel-network-list value Split_Include
split-dns value(Optional Split-DNS Configuration)
webvpn
anyconnect profiles value AnyConnect type user
anyconnect profiles value OpenDNS type umbrella
!
tunnel-group OpenDNS_Split_Include type remote-access
tunnel-group OpenDNS_Split_Include general-attributes
address-pool vpn_pool
default-group-policy OpenDNS_Split_Include
tunnel-group OpenDNS_Split_Include webvpn-attributes
group-alias OpenDNS_Split_Include enable
!--- Split-exclude Configuration
access-list Split_Exclude standard permit <host/subnet>
group-policy OpenDNS_Split_Exclude internal
group-policy OpenDNS_Split_Exclude attributes
wins-server none
dns-server value 198.51.100.11
vpn-tunnel-protocol ssl-client ssl-clientless
split-tunnel-policy excludespecified
split-tunnel-network-list value Split_Exclude
webvpn
anyconnect profiles value AnyConnect type user
anyconnect profiles value OpenDNS type umbrella
!
tunnel-group OpenDNS_Split_Exclude type remote-access
tunnel-group OpenDNS_Split_Exclude general-attributes
address-pool vpn_pool
default-group-policy OpenDNS_Split_Exclude
tunnel-group OpenDNS_Split_Exclude webvpn-attributes
group-alias OpenDNS_Split_Exclude enable
!--- Tunnelall Configuration
group-policy OpenDNS_Tunnel_All internal
group-policy OpenDNS_Tunnel_All attributes
wins-server none
dns-server value 198.51.100.11
vpn-tunnel-protocol ssl-client ssl-clientless
split-tunnel-policy tunnelall
webvpn
anyconnect profiles value AnyConnect type user
anyconnect profiles value OpenDNS type umbrella
!
tunnel-group OpenDNS_Tunnel_All type remote-access
tunnel-group OpenDNS_Tunnel_All general-attributes
address-pool vpn_pool
default-group-policy OpenDNS_Tunnel_All
tunnel-group OpenDNS_Tunnel_All webvpn-attributes
group-alias OpenDNS_Tunnel_All enable
当前没有可用于此配置的验证过程。
对 AnyConnect OpenDNS 相关问题进行故障排除的步骤如下:
Windows:C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\UmbrellaDiagnostic.exe
对于Mac OSX:/opt/cisco/anyconnect/bin/UmbrellaDiagnostic