简介
本文档介绍使用FDQN对象时,思科自适应安全设备(ASA)上的域名系统(DNS)的操作。
先决条件
要求
Cisco建议您了解Cisco ASA。
使用的组件
为了明确在模拟生产环境中ASA上配置多个完全限定域名(FQDN)时DNS的运作,设置了一个具有一个面向互联网的接口和一个连接到ESXi服务器上托管的PC设备的ASAv。此模拟使用ASAv临时代码9.8.4(10)。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
网络图
拓扑设置如下所示。
背景信息
在ASA上配置多个完全限定域名对象时,尝试访问FQDN对象中定义的任何URL的最终用户将观察ASA发送的多个DNS查询。本文档旨在更好地理解为什么会观察到此类行为。
配置
为进行DNS解析,客户端PC配置了这些IP、子网掩码和名称服务器。
在ASA上,配置了两个接口:一个安全级别为100的内部接口(PC连接到该接口),另一个外部接口(连接到互联网)。
这里,Gig0/1接口是接口IP为10.197.223.9的外部接口,而Gig0/3接口是接口IP为10.10.10.1的内部接口,并且连接到另一端的PC。
在ASA上配置DNS设置,如下所示:
为www.facebook.com、www.google.com、www.instagram.com和www.twitter.com配置4个FQDN对象。
在ASA外部接口上设置捕获,以捕获DNS流量。然后,从客户端PC尝试从浏览器访问www.google.com。
你观察什么?请看数据包捕获。
此处您会看到,即使您尝试仅解析www.google.com,也会发出针对所有FQDN对象的DNS查询。
现在看看DNS缓存如何用于ASA上的IP,了解为什么会发生这种情况。
- 然后,DNS服务器解析PC请求,并返回表明google.com位于指定位置的IP。
- 然后,PC发起到google.com解析IP地址的TCP连接。但是,当数据包到达ASA时,它没有表明允许或拒绝指定IP的ACL规则。
- 但是,ASA知道它有4个FQDN对象,并且任何FQDN对象都可能解析为相关的IP。
- 因此,ASA会发送所有FQDN对象的DNS查询,因为它不知道哪个FQDN对象可以解析到相关的IP。(这就是观察到多个DNS查询的原因)。
- DNS服务器使用相应的IP地址解析FQDN对象。FQDN对象可以解析为客户端解析的同一公有IP地址。否则,ASA会为客户端尝试到达的不同IP地址创建动态访问列表条目,因此ASA最终丢弃数据包。例如,如果用户将google.com解析为10.0.113.1,并且ASA将其解析为10.0.113.2,则ASA会为10.0.113.2创建新的动态访问列表条目,用户将无法访问网站。
- 下一次当请求到达请求解析特定IP时,如果该特定IP存储在ASA上,它不会再次查询所有FQDN对象,因为此时会存在动态ACL条目。
- 如果客户端担心ASA发送的大量DNS查询,请增加DNS计时器到期时间,并且假设终端主机尝试访问DNS缓存中的目标IP地址。如果PC请求的IP未存储在ASA DNS缓存中,则会发送DNS查询以解析所有FQDN对象。
- 如果要减少DNS查询的数量,一个可能的解决方法是减少FQDN对象的数量或定义要将FQDN解析到的整个公共IP范围,但这首先会破坏FQDN对象的用途。Cisco Firepower威胁防御(FTD)是处理此使用案例的更好解决方案。
验证
要验证每个FQDN对象解析到的ASA DNS缓存中存在哪些IP,可以使用命令ASA# sh dns。
相关信息