当我运行这两个命令时,我得到了相同的结论性(准确)结果:44 台主机处于启动状态
sudo nmap -Pn 10.2.16.0/24
sudo nmap -sn 10.2.16.0/24
当我同时使用这两个命令进行扫描时,我得到了一个不准确的结果:256 台主机处于启动状态
sudo nmap -Pn 10.2.16.0/24
从我谷歌搜索的结果来看,我猜想发生的事情是 nmap 假设所有 256 台主机都已启动,并尝试对主机进行反向 DNS 解析,从而尝试枚举主机的名称。我不明白的是,为什么当 -Pn 和 -sn 同时运行时,它会假设所有 256 台主机都已启动,而单独运行时却不会。
此外,通过这两种扫描,我都没有收到任何设备的主机名。我只得到了 IP 地址、MAC 地址和制造商名称。这是因为我的 resolv.conf 文件吗?
答案1
得到不准确结果的原因是因为运行nmap -Pn -sn
没有任何意义。
-Pn
告诉 nmap 将每个主机视为启动状态,并-sn
告诉 nmap 跳过端口扫描并仅判断主机是否启动。
因此,您组合起来说“告诉我主机是否已启动。另外,每个主机都应被视为已启动。” nmap 会告诉您“所有主机都已启动”。
当您运行 时-sn
,它将运行 ping 扫描并报告 44 台主机处于启动状态。这是否正确尚不清楚。可能有 50 台主机处于启动状态,但其中 6 台配置为不响应 ping。但它看起来就像一个明智的答案。
当您只运行-Pn
nmap 时,它会告诉您所有主机都已启动,但许多主机根本没有开放端口。这是因为 nmap 无法区分已关闭的主机和未响应您的主机。
至于您的主机名:这取决于 DNS 服务器是否允许反向解析。通常,DNS 通过查询主机名并接收 IP 地址来工作。反向查询会查询 IP 地址并请求关联的主机名。
某些 DNS 服务器会禁用此功能,因此,如果该功能对您不起作用,则该 DNS 可能配置为不允许反向查询