简介
本文介绍如何排除ASA防火墙阻止DNScrypt功能的故障。
概述
Cisco ASA防火墙可以阻止Umbrella虚拟设备提供的DNScrypt功能。这会导致此Umbrella Dashboard警告:

在ASA防火墙日志中也可以看到以下错误消息:
Dropped UDP DNS request from inside:192.168.1.1/53904 to outside-fiber:208.67.220.220/53; label length 71 bytes exceeds protocol limit of 63 bytes
DNSCrypt加密旨在保护DNS查询的内容,因此也可以阻止防火墙执行数据包检测。
原因
这些错误不能导致任何用户面临DNS解析的影响。
虚拟设备发送测试查询以确定DNScrypt的可用性,而阻止的正是这些测试查询。但是,这些错误消息确实表明虚拟设备不会通过加密您公司的DNS流量来增加额外的安全性。
分辨率
我们建议对虚拟设备和Umbrella的DNS解析器之间的流量禁用DNS数据包检测。虽然这会禁用ASA上的日志记录和协议检查,但它通过允许DNS加密来增强安全性。
注意:这些命令仅供参考,建议在对生产环境进行任何更改之前咨询思科专家。
还要注意ASA上的此缺陷 可能会影响TCP上的DNS,这也会导致DNSCrypt出现问题:
CSCsm90809 DNS检测支持TCP上的DNS
数据包检测例外 — IOS命令
- 创建名为“dns_inspect”的新ACL,其中包含的规则用于拒绝发往208.67.222.222和208.67.220.220的流量。
access-list dns_inspect extended deny udp host <Appliance IP> host 208.67.220.220 eq domain
access-list dns_inspect extended deny tcp host <Appliance IP> host 208.67.220.220 eq domain
access-list dns_inspect extended deny udp host <Appliance IP> host 208.67.222.222 eq domain
access-list dns_inspect extended deny tcp host <Appliance IP> host 208.67.222.222 eq domain
access-list dns_inspect extended permit udp any any eq domain
access-list dns_inspect extended permit tcp any any eq domain
For VA 2.2.0, please also add our 3rd and 4th resolver IPs which are also enabled for encryption. This will not be needed for 2.2.1+
access-list dns_inspect extended deny udp host <Appliance IP> host 208.67.220.222 eq domain
access-list dns_inspect extended deny tcp host <Appliance IP> host 208.67.220.222 eq domain
access-list dns_inspect extended deny udp host <Appliance IP> host 208.67.222.220 eq domain
access-list dns_inspect extended deny tcp host <Appliance IP> host 208.67.222.220 eq domain
- 删除ASA上的当前DNS检测策略。例如:
ciscoasa(config)# policy-map global_policy
ciscoasa(config-pmap)# class inspection_default
ciscoasa(config-pmap-c)# no inspect dns
- 创建与步骤1中创建的ACL匹配的类映#1:
class-map dns_inspect_cmap
match access-list dns_inspect
- 在global_policy下配置策略映射。这必须与步骤10中创建的类映射匹#3。启用DNS检测。
policy-map global_policy
class dns_inspect_cmap
inspect dns
- 启用后,您可以通过运行以下命令来验证流量是否正在达到例外情况:
sh access-list dns_inspect
数据包检测例外 — ASDM接口
- 首先禁用任何DNS数据包检测(如果适用)。此操作在Configuration > Firewall > Service Policy Rules中完成。

- 在本示例中,DNS检测在Global Policy和“inspection_default”类下启用。突出显示它并单击Edit。在新窗口中,取消选中“Rule Action”(规则操作)选项卡下的“DNS”(DNS)复选框。

- 现在,您可以重新配置DNS检测,此次额外免除流量。单击Add > Add Service Policy Rule...

- 选择“全局 — 应用于所有接口”,然后单击下一步(如果需要,您也可以将此功能应用于特定接口)。

- 为类映射指定名称(例如“dns-cmap”),并选中选项“源和目标IP地址(使用ACL)”。单击“下一步”.

- 首先使用“不匹配”操作配置您不希望检查的流量。
对于Source,您可以使用“any”选项免除发往Umbrella的DNS服务器的所有流量。或者,您可以在此处创建网络对象定义,以仅免除特定虚拟设备IP地址。

- 单击Destination字段上的……。在下一个窗口中,单击Add > Network Object,并创建IP地址为“208.67.222.222”的对象。 重复此步骤,创建IP地址为“208.67.220.220”的对象。


- 将两个Umbrella网络对象添加到Destination字段,然后单击OK。

- 在下一个窗口中,选中“DNS”复选框,然后单击Finish。

- ASA现在显示“dns-cmap”的新全局策略。 现在,您需要配置由ASA检查的剩余流量。这可以通过右键点击“dns-cmap”并选择选项“Insert After..”来完成。 创建一个新规则。

- 在第一个窗口中单击Next,然后选中“Add rule to existing traffic class:”单选按钮。从下拉菜单中选择“dns-cmap”,然后单击Next。

- 将Action保留为Match。 选择接受DNS检查的流量的源、目标和服务。例如,在此处,我们将匹配来自任何客户端的流量传输到任何TCP或UDP DNS服务器。单击 Next。

- 选中“DNS”选项,然后单击Finish。
- 单击窗口底部的Apply。

更多信息
如果您希望禁用DNScrypt而不是配置ASA免除,请联系Umbrella支持。