如何解决使用工具时域名解析行为异常的问题
在排查很多虚拟机网络问题的过程中,经常需要测试域名解析。 大多数人首先想到的就是使用系统自带的工具。 为什么? 命令简单易用,无需安装,节省时间。
本文我们将通过一个小问题来研究一下使用该命令进行DNS解析的过程。
问题描述
用户使用虚拟机时,出现应用程序运行错误,日志记录无法解析远程地址。
经过检查分析,用户发现DNS存在问题。 分析很明显,但它返回......
问题分析
用户私网的AD域。 公网域中没有该记录,用户想在公网中解析该域名。
DNS服务器有问题吗? 通过抓包分析,发现客户端发起的请求已经是.,但是服务端并没有解析。 然后发起解析.的请求,服务器解析成功并返回结果。
至此,我们发现解决这个问题的关键是如何配置不带域名后缀的客户端DNS请求。
使用组策略指定 DNS 后缀文档提到组策略可能会影响 DNS 后缀,但这里我们没有在我们的环境中配置任何组策略。
在TCP/IP高级设置中,我们没有配置强制添加DNS后缀。 这里的DNS选项只影响域名的解析。
通过命令查看,发现DNS List中指定了要搜索的DNS后缀。 这个选项会影响行为吗?
虽然添加的 DNS 后缀没有在 TCP/IP 高级设置中配置,但域中的机器将默认将其域配置为 List。
以下配置不添加任何域(Azure中的虚拟机会断开连接,需要重新启动才能恢复连接)。
再次查看 DNS 列表,它是空的。 这时候我们发现终于返回了我们想要的解析结果。
通过上面的分析,我们可以大致判断是DNS List影响了解析行为。
那么,接下来的问题是为什么其他AD域没有这样的情况呢?
同样,抓包的结果给出了明确的线索:第一个DNS请求带来了DNS List中的后缀,但服务器没有解析它。 然后客户端发起请求解析.azure.lqi,但是没有结果; 并再次发送解析请求并得到回复。
也就是说,能否返回预期的结果取决于以下两点:
DNS 发送的查询是否包含额外的 DNS 后缀? DNS服务器能否正常解析该后缀的域名。
我们发送了解决请求 .azure.lqi 和 . 分别到第三台服务器上的公共 DNS 服务器。
发现可以解析。
进一步了解域名的组织结构后,我们就可以合理解释不同情况下表现不同的原因。
最准确的域名格式是 . (末尾有一个点,代表根域)。
当您输入不带点的域名(例如)时,它将被视为子域名,并向 DNS 列表中定义的后缀的 DNS 发起查询(这里是示例)。
根据环境中的DNS设置,DNS请求过程可能只在内网进行,但也可能进入公网。 该请求将继续,直到 DNS 服务器返回成功或失败。
如果失败,如果勾选了DNS选项,则会执行查询(); 如果不勾选,则直接查询用户输入的域名。
查询到一定级别成功后,将返回结果,不再继续; 如果所有查询都失败,则返回未找到的域。
上述情况下,该域名存在于公网上,因此解析以该结尾的域名将会返回结果; 而如果azure.lqi是不存在的域名,则会继续解析不带后缀的域名。
更改DNS列表会影响无域名短名称的解析,因此不建议使用此方法。
如果您在故障排除过程中需要解析域名,这里有两个建议:
全局域名前面有一个句点。
结合dig等第三方工具综合分析。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。