windows dns 缓存服务器:以编程方式刷新单个区域的 dns 缓存

windows dns 缓存服务器:以编程方式刷新单个区域的 dns 缓存

在 bind9 中,我可以从 shell 中使用 rndc flushname zone.tld。

在 Windows DNS mmc 中,我可以选择该区域并将其删除。

使用 dnscmd 我可以刷新整个缓存,但我只需要时不时刷新一个区域的缓存。

有可能吗?怎样做?TIA

答案1

DNSCmd.exe 用于显示和更改 DNS 服务器、区域和资源记录的属性。您可以找到详细的语法这里。尽管我很想对此给出适当的参考和解释,但我通过随机谷歌搜索、反复试验找到了它:缓存查找似乎内部存储在名为 ..Cache 的区域中,并且每个缓存区域只是“..Cache”下的一个节点,因此正确的使用开关是/节点删除

dnscmd dnsserver.local /NodeDelete ..Cache whatever.com [/Tree] [/f]

 /tree    Specifies to delete all of the child records.
 /f       Executes the command without asking for confirmation.

不过,如果有人能在 MS 官方文档中找到“..cache”,那就太酷了。

答案2

恐怕从编程角度来说,您必须求助于/clearcache

dnscmd没有内置该功能,并且没有明显的API 规范这表明这种行动已经暴露

您可以从 GUI 执行此操作,但我怀疑这是否有帮助
要从 Windows DNS 服务器查看和删除缓存条目:

  1. 打开 DNS 管理控制台 ( dnsmgmt.msc)
  2. 前往看法菜单,然后选择先进的
  3. 在左侧窗格中展开您的 DNS 服务器条目
  4. 扩张缓存查找
  5. 要删除缓存记录或整个区域,只需右键单击并选择“删除”

对于权威服务器,您可以刷新或重新加载区域数据,具体取决于源类型。
对于从主服务器刷新区域数据的辅助名称服务器:

dnscmd dns1.domain.tld /zonerefresh my.zone.domain.tld

对于活动目录集成区域,从 AD 重新加载区域数据:

dnscmd dns1.domain.tld /zonereload my.zone.domain.tld

假设你的 dns 服务器的 fqdn 是dns1.domain.tld.并且my.zone.domain.tld.是区域的 fqdn

相关内容