Hero Image
DNS 服务器调试日志

这篇文章讲什么? 顾名思义,本文讨论的是 Windows DNS 服务器的调试日志功能。通过阅读本文,您将获得有关如何深入了解您环境中的名称解析过程的信息。这对于故障排除和分析与 DNS 相关的问题非常有帮助。在深入细节之前,让我们首先了解什么是 DNS 服务器调试日志以及它为什么有时是重要的事情和实用的助手。 在许多情况下,DNS 服务器是 Active Directory 环境中域控制器上的一个角色。在任何情况下,DNS 服务器都是网络基础设施的关键组件。名称解析无处不在,是计算机在网络上进行通信的基本部分。 但是,当出现问题时,或者出于某种原因需要接触这个关键组件时会发生什么呢?这可能由于各种原因而发生,例如: 故障排除 - 有人报告名称解析出现问题。偶尔,错误的 IP 地址会返回给客户端,导致应用程序停止工作。 迁移和变更管理 - 服务器可能需要迁移到其他地方。也许是迁移到新的网络段,进入一个超大规模云服务提供商,或者组织决定将 DNS 从 Active Directory 转移到网络设备。在这一点上,客户端可能需要重新配置以指向新的 DNS 服务器。 统计和(安全)分析 - 谁在请求什么?可以观察到什么样的模式?正在发出什么样的请求?是否有可疑活动? 在这种情况下,深入了解名称解析的细节可能是无价的。本文尝试涵盖一些获取这些见解的方法。值得一提的是,当我提到“DNS 客户端”时,我指的是任何请求名称解析的设备,例如工作站、服务器、打印机、IT 基础设施设备,甚至是 IoT 设备。 Windows DNS 服务器洞察的能力 当谈到“如何从 DNS 服务器获取信息?”时,有几种可用的选项。 让我们看看最常见的几种: 能力 - 网络数据包捕获 经典且强大。也许不是长期解决方案,但对于快速故障排除或实时分析,它是非常有价值的。我在上一篇文章中写过 [Capture Network Traffic in Windows][captureNetworkTrafficReference],所以我在这里不再详细讨论。 能力 - 防火墙日志 如果您在网络中实施了分段并且可以访问防火墙日志,您可以从中获取有关谁在进行 DNS 通信(以及所有其他服务)的信息。这不是最详细的信息,因为缺乏粒度和服务特定的细节,但如果已经存在,它可能会很有帮助并且是一个快速的解决方案。 如果您有扁平化的网络,这可能不是一个选项,因为 DNS 客户端和 DNS 服务器之间可能没有防火墙。您仍然可以使用本地 Windows 防火墙,但正如您在接下来的部分中看到的,在这种情况下有更好的选择。 然后不幸的是,还有“组织孤岛”和团队之间“缺乏沟通”的情况,在这种情况下,即使防火墙日志存在,也可能无法获取。

Hero Image
在Windows中捕获网络流量

这是什么? 这经常发生在我身上……有些事情很奇怪或没有按预期工作,心中不禁会问:“发生了什么?为什么客户端或服务器会这样表现?”通常,这些都是与网络相关的问题。 一位安全研究人员曾告诉我:“如果你想了解一个系统是如何工作的,你必须理解网络流量。几乎所有问题都可以在网络层面上进行诊断。” 根据我的经验,这确实是事实。 🥳 不幸的是,我的经验也表明,许多人不知道如何在Windows中捕获网络流量,而唯一的解决方案就是***“让我们安装Wireshark”***。 好吧,即使Wireshark是一个很棒的工具,但它并不是唯一的解决方案,也可能不是快速和一次性捕获的最佳解决方案。尤其是当涉及到你那些安全性极高的服务器时,肯定有更好、更快的解决方案。 关于这种情况的考虑 再说一次,Wireshark是一个强大的工具,或多或少是事实上的网络协议分析标准。你肯定会用它来分析捕获到的内容。但Wireshark的缺点是: 它无法在不安装额外组件的情况下捕获:一个网络驱动程序(WinPcap或Npcap)。 它是一个活跃且复杂的工具,包含许多二进制文件和潜在的漏洞。 在服务器上的每次安装都是一个潜在的攻击向量,并会导致你的服务器变得独特。 这可能不是你想在生产服务器上使用的工具,尤其是当你只想捕获一些流量进行快速分析时。 无论如何,把它放在你的工作站上分析捕获到的内容。你甚至不需要管理员权限就可以使用Wireshark进行分析! Wireshark可以作为便携式安装正常运行,而无需进行任何系统范围的安装。 那么,有什么替代方案? 在Windows中有几种替代方案可以完成这项工作。最棒的是,你不需要在机器上安装任何东西。Windows中有内置工具可以完成这项工作……而且它们非常强大。结合一些PowerShell和PSRemoting功能,这很容易扩展。 1. netsh trace - 老而弥坚 netsh trace 命令是Windows中的一个内置工具,允许你在不需要额外软件的情况下捕获网络流量。它使用Windows事件跟踪(ETW)框架来捕获和记录网络事件。 基本上,它是netsh trace start和netsh trace stop来开始和停止捕获,但还有netsh trace show来显示当前状态,以及netsh trace convert来将捕获的数据转换为更易读的格式。 以下是netsh trace中可用命令的快速概述: 以下命令可用: 在此上下文中的命令: ? - 显示命令列表。 convert - 将跟踪文件转换为HTML报告。 correlate - 将跟踪文件标准化或过滤到新输出文件。 diagnose - 启动诊断会话。 dump - 显示配置脚本。 export - 将场景导出到WPR配置文件。 help - 显示命令列表。 merge - 合并跟踪文件并添加符号元数据。 postreset - show - 列出接口、提供程序和跟踪状态。 start - 开始跟踪。 stop - 停止跟踪。 要查看命令的帮助,请输入命令,后跟空格,然后输入?。 现在,让我们关注start和stop命令,这些是你将用来捕获网络流量的命令。命名是相当自解释的,我想。要开始网络捕获,你需要指定一些额外的参数。基本上,你只需要指定你想捕获流量。这就是参数capture=yes。 即使这就是你所需的绝对最小值,还有一个推荐的参数以提高效率。如果你只关心捕获网络流量,可以通过report=disabled禁用netsh的报告生成行为。这将加快捕获过程并减少捕获文件的大小,因为它不会包含额外的报告数据。 其余参数可以根据你的需要自定义捕获过程。当然,你可以指定保存跟踪的位置和捕获内容,但这不是强制性的。