我即将切换邮件服务器。我希望能够搜索 Microsoft DNS,其中
MX 服务器 == 'mail.foo.com'
也许
CNAME.name =='mail' 或 CNAME.value =='mail.foo.com'
有谁知道有什么工具可以完成这样的事情?
答案1
以下是一些想法:
如果您使用区域文件来存储区域(即不是 Active Directory 集成区域),那么您只需使用
find
、findstr
或您最喜欢的grep
端口来搜索区域文件(%SystemRoot%\system32\dns
默认存储在)。您可以使用
nslookup
或dig
并对 DNS 服务器执行查询您可以使用命令行
dnscmd
工具转储区域并使用find
、、等进行搜索findstr
。grep
您可以对 DNS 管理控制台管理单元中的列进行排序,以使您要查找的数据出现在已知位置
我不太确定我是否理解了你在寻找什么,但我倾向于前两种想法,认为它们是最好的方法。我确实发现自己时不时地会对 DNS 管理控制台中的列进行排序,以快速查看我是否创建了给定的记录。
编辑:
150,000 个域名。Zow。
你也许可以破解脚本在这个答案中我写道循环遍历您的区域以查找所需的记录。这应该不会太糟糕。
答案2
好吧,这可能与“官方方法”的保留意见不符,但我一直都是这么做的。只要区域文件存储在磁盘上(外部域,而不是 AD),您就可以使用以下 Powershell 脚本在文本区域文件中搜索特定的 IP 地址/主机名/记录类型。
Param ([String]$searchPattern)
$resultsFormat = @{Expression={$_.Filename};Label="File"},
@{Expression={$_.LineNumber};Label="Line"},
@{Expression={$_.Line};Label="Text"}
$searchResults = Get-ChildItem -Filter "*.dns" | Select-String -Pattern $searchPattern | ft $resultsFormat -AutoSize
If ($searchResults) {$searchResults} Else {Write-Host "`nNo search results`n"}
将此脚本保存到“C:\Windows\System32\DNS”文件夹并将其命名为“query.ps1”。然后从 Powershell 运行它,方法是切换到该目录并输入“query.ps1”。
我在所有 DNS 服务器上共享此文件夹(仅供管理员使用),然后将驱动器映射到该文件夹。这样,我就可以通过从映射驱动器执行脚本来从我的工作站运行它。非常简单。
例子:
查找所有包含“192.168.1.1”的 DNS 条目
.\query.ps1 192.168.1.1
查找所有包含“www”的 DNS 条目
.\query.ps1 www
查找所有包含“mx”的 DNS 条目
.\query.ps1 mx
答案3
nslookup
set type=mx
domain.com
当您按下回车键时,DNS将解析有关该特定域的所有邮件类型记录。
答案4
- 安装赛格威。
- 浏览至
C:\Windows\System32\dns
- 使用
grep
。
与任何 Microsoft 问题一样,使用 Linux 工具集的 Cygwin 端口可以最轻松地解决该问题。