使用通配符进行DNS搜索?


8

有什么喜欢nslookupdig提供基于名称中包含的内容进行搜索的功能,例如通配符搜索或其他功能?

我正在尝试为我们的帮助台团队使用GUI包装器编写一个小脚本。理想情况下,我希望他们能够搜索用户的姓氏(DNS记录中始终存在的名字),然后在下拉列表中填充可能的选项。

我无法找到一种有效的方法来解决nslookup *miller*……

Name: sf-jacobmiller.localdomain.com
Address: 10.10.10.121

Name: sf-justinmiller.localdomain.com
Address: 10.10.10.144

..然后我可以将其解析为下拉菜单,以供他们选择。

我尚未研究可用的功能,ldapsearch哪些功能可以满足我的需求。我唯一的要求是,它已内置在OSX中,不需要安装其他任何东西,否则,我欢迎您提供的任何解决方案。谢谢

Answers:


11

您可以通过区域传输获得该区域中条目的完整列表。您需要为DNS服务器中的授权系统允许此权限。

完成后,您可以运行传输并grep结果:

dig axfr localdomain.com | grep -i miller

正如我所希望的那样简单而直接。谢谢
TryTryAgain

我想编辑您的答案以使其包括grep -i大小写,以便区分大小写,否则我意识到大小写会引起太多问题。不过,我无法进行如此小的编辑。再次感谢您提供如此精致的解决方案,正是我想要的。
TryTryAgain

6

名称服务器在设计上不会让您搜索区域或查询其权威区域。除了减少攻击向量的显而易见的原因(如果您不知道主机的名称,就不能向主机发出HTTP / 1.1请求)之外,还有一个很好的理由:区域本身可以包含通配符,因此询问在这样一个区域中的每个主机就像被零除。

如果您操作要搜索其记录的名称服务器,则可以将区域转移到本地名称服务器并直接搜索记录。您仍将需要以任何文本格式解析文本记录,因为本地名称服务器不会做出任何不同的响应。


6

您只能询问DNS服务器是否具有特定记录。因此,没有针对DNS的此类工具。

编辑

如果可用,则当然可以进行区域传输。


就像我预期的那样,您似乎被证明是错误的。
TryTryAgain

3
@TryTryAgain实际上,在一般情况下,他是非常正确的:记下您接受的答案中的关键词:need to allow this for authorized systems in your DNS server。例如,如果您尝试将区域转移serverfault.com(或实际上几乎是您不控制的任何区域,或者您尚未与DNS管理员进行安排的区域转移),则不会获得任何结果。
voretaq7

4
@TryTryAgain措词也有些粗鲁。如果答案像您说的那样显而易见,那么您就不必发布问题了。通常我们都是在这里互相帮助。
安德鲁B

1

同意检查后的答案,我认为对于没有授权进行区域转移的人来说,for循环可能是另一种选择。如果您知道IP范围:

name="mthebeau"
net="123.45.67."
for ip in $( seq 1 255 ); do {
    sleep 1; # be kind to the server, unauthorized user
    text="$( nslookup $net$ip 2>&1 | grep "$name" )";
    if [ -z "$text" ]; then continue; fi;
    echo "$text";
}; do

我查找了此答案,因为我想向我不知道IP和计算机名称的本地用户打开桌面。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.