Jer*_*eld 1 domain-name-system bind nmap
我的目标是让 nmap 在没有 --system-dns 标志或 --dns-servers 选项的情况下将 IP 解析为主机名。
当我在没有 --system-dns 标志或 --dns-servers 选项的情况下发出以下 nmap 命令时,192.168.0.16 被解析为主机名 server1.example.com。192.168.0.17 未解析为主机名。我知道这是因为根据https://nmap.org/book/host-discovery-dns.html,“Nmap 使用自定义存根解析器”,这意味着 nmap 有它自己的 DNS 解析器,而不是我们的本地 DNS 服务器. 有趣的。
[root@client1]# nmap -sn 192.168.0.0/24 -vvv
Initiating Parallel DNS resolution of 256 hosts. at 11:22
Completed Parallel DNS resolution of 256 hosts. at 11:22, 0.02s elapsed
DNS resolution of 18 IPs took 0.02s. Mode: Async [#: 2, OK: 5, NX: 13, DR: 0, SF: 0, TR: 18, CN: 0]
Nmap scan report for server1.example.com (192.168.0.16)
Host is up (0.00063s latency).
Nmap scan report for 192.168.0.17
Host is up (0.00059s latency).
Run Code Online (Sandbox Code Playgroud)
--system-dns使用标志时不会发生此问题。
[root@client1]# nmap -sn 192.168.0.0/24 --system-dns
Nmap scan report for server1.example.com (192.168.0.16)
Host is up (0.00029s latency).
Nmap scan report for server2.example.com (192.168.0.17)
Host is up (0.00026s latency).
Run Code Online (Sandbox Code Playgroud)
当该--dns-servers选项用于声明应使用我们的主 DNS 服务器 (192.168.0.6)时,不会发生此问题。
[root@client1]# nmap -sn 192.168.0.0/24 --dns-servers 192.168.0.6
Nmap scan report for server1.example.com (192.168.0.16)
Host is up (0.00039s latency).
Nmap scan report for server2.example.com (192.168.0.17)
Host is up (0.00036s latency).
Run Code Online (Sandbox Code Playgroud)
nslookup 显示两个 IP 都可以解析为其适当的主机名。
[root@client1]# nslookup 192.168.0.16
16.0.168.192.in-addr.arpa name = server1.example.com.
[root@client1]# nslookup 192.168.0.17
17.0.168.192.in-addr.arpa name = server2.example.com.
Run Code Online (Sandbox Code Playgroud)
我们使用 CentOs 7 作为我们的操作系统。/etc/resolv.conf包含以下内容,这意味着 192.168.0.6 是我们的主要 DNS 服务器。
[root@client1]# cat /etc/resolv.conf
nameserver 192.168.0.6
nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
192.168.0.6(我们的主要 DNS 服务器)正在使用 Bind 版本 9 作为 DNS 服务。
[root@dns1]# named -v
BIND 9.9.4-RedHat-9.9.4-51.el7 (Extended Support Version)
Run Code Online (Sandbox Code Playgroud)
这是/var/named/forward.example.com.
[root@dns1]# cat /var/named/forward.example.com
$ORIGIN example.com.
$TTL 1D
@ IN SOA ns1.example.com. hostmaster.example.com. (
2016032200 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ; minimum
)
;name used for the nameserver
IN NS ns1.example.com.
;ip address of the nameserver
ns1 IN A 192.168.0.6
;hostname to ip address resolutions
server1 IN A 192.168.0.16
server2 IN A 192.168.0.17
Run Code Online (Sandbox Code Playgroud)
这是/var/named/reverse.example.com.
[root@client1]# cat /var/named/reverse.example.com
$TTL 1D
@ IN SOA ns1.example.com. root.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ; minimum
)
0.168.192.in-addr.arpa. IN NS ns1.example.com.
@ IN NS ns1.example.com.
ns1 IN A 192.168.0.6
16 IN PTR server1.example.com.
17 IN PTR server2.example.com.
Run Code Online (Sandbox Code Playgroud)
您的问题的根源在于您/etc/resolv.conf以及 nmap 如何解析它。
Run Code Online (Sandbox Code Playgroud)# /etc/resolv.conf nameserver 192.168.0.6 nameserver 8.8.8.8
只有第一个名称服务器条目才有资格回答对本地域和网络的查询。
第二个名称服务器是公共解析器,它无法响应私有 IP 范围的反向 DNS 查询。
与系统解析器不同,系统解析器默认使用第一个名称服务器条目,/etc/resolv.conf并且仅在第一个名称服务器不响应时才使用下一个, Nmap 使用并行找到的所有名称服务器条目/etc/resolv.conf(隐含假设它们都是相等的)。
由于在您的情况下,不同的名称服务器并不等效,因此只有一些反向 DNS 查询成功,并且您会看到一些 IP 地址被解析为主机名(当您的第一个名称服务器被查询时)而其他的则不是(当您的第二个名称服务器被使用时) )。
删除或注释掉第二个名称服务器,nmap -sn 192.168.0.0/24 -vvv应该得到与nmap -sn 192.168.0.0/24 -vvv --system-dns和相同的结果nmap -sn 192.168.0.0/24 -vvv --dns-servers 192.168.0.6
| 归档时间: |
|
| 查看次数: |
2984 次 |
| 最近记录: |