我想对特定名称服务器进行批量反向 DNS 查询。
目前,在搜索这里和谷歌之后。我当时使用以下命令使其适用于 1 个条目:
dig @NAMESERVER -x 10.10.10.10 +short
这正是我想要的。但如果我想对多个 IP 地址执行此操作,则会失败。我所做的是列出 2 个 IP 地址来进行测试。
我正在尝试使用以下命令:
dig @NAMESERVER -x -f dnsquery.txt +short
这没有显示任何结果,我做错了什么?
输入文件有 2 行,每行有 1 个 IP 地址:
10.10.10.10
10.10.10.11
答案1
正如thrig所提到的,您可以循环调用dig
。
例如,您可以使用这个小 bash 脚本并将其保存在名为例如的文件中bulkreverse.sh
:
#!/bin/bash
filename='ip_in.txt' # name of file with IPs to handle
nameserver='8.8.8.8' # nameserver to query
for ip in `cat $filename`
do
echo 'Handling reverse DNS for $ip'
dig @$nameserver -x $ip +short
done
该变量filename
指定带有 IP 地址列表的文件名(例如,每行 IP 地址)。nameserver
是要查询的名称服务器。
如果您将脚本保存在名为的文件中,bulkreverse.sh
则需要通过运行使其可执行
chmod +x bulkreverse.sh
之后你可以执行它
./bulkreverse.sh
我希望这有帮助!
答案2
如果有很多,那么 GNU Parallel 可能有助于加快处理速度:
nameserver=80.80.81.81
parallel -j100 --retries 3 dig @$nameserver -x {} +short :::: ip_in.txt
答案3
您可以使用awk
将正向地址转换为反向地址,然后将结果通过管道传输到dig
awk -F. '{printf "%s.%s.%s.%s.in-addr.arpa\n",$4,$3,$2,$1}' dnsqueries.txt |
dig +short ptr @NAMESERVER -f -
答案4
您的原始代码不起作用的原因是因为-x
需要包含在从文件读取的每一行数据中。这在手册页中有记录,但我个人认为它可能更清楚:
-f file
批处理模式:dig
从给定文件中读取要处理的查找请求列表。文件中的每一行的组织方式应与dig
使用命令行界面作为查询呈现的方式相同。
最后一句是解释者,该行必须是“以同样的方式组织它们将作为查询来挖掘“。换句话说,您的示例文件需要包含以下内容:
-x 10.10.10.10
-x 10.10.10.11
假设您的文件是不变的,我们可以使用它sed
来预先添加必要的内容-x
,然后将结果通过管道传输到dig
:
sed 's/^/-x /' dnsquery.txt | dig +short -f -