我试图找到一种可靠的方法来查看本地网络上的所有主机/机器名称,例如“Jim's Ipad”或“Austi's IMac”。目前我能做到的唯一方法是查看通常显示名称的 dhcp 请求日志,尽管我想知道是否有一种方法可以一次简单地列出网络上的所有名称?我试过 nmap -sP 192.168.1.*,它似乎只提供机器的制造商而不是实际的机器/域名:
MAC Address: 00:1D:BA:40:14:31 (Sony)
Host 192.168.1.109 is up (0.00073s latency).
MAC Address: 00:50:94:C8:1C:02 (Pace Micro Technology PLC)
Host 192.168.1.111 is up (0.00011s latency).
MAC Address: 00:24:8C:EA:F0:7D (Asustek Computer)
Host 192.168.1.112 is up (0.0054s latency).
MAC Address: 00:18:71:5C:D2:BA (Hewlett Packard)
Host 192.168.1.117 is up (0.0049s latency).
我也尝试过 nmap -sL 192.168.1.*,它似乎根本不起作用,它只是列出了所有 IP,并说它们没有被扫描,没有其他信息或任何类似的信息。我正在从充当网络路由器/网关的 debian 服务器运行这些命令。任何帮助将不胜感激,谢谢!
如果您没有运行动态 DNS,或者如果您所有的机器都没有 DNS 条目,您的 dhcp 数据库可能就是您将要获得的列表。如果没有反向 DNS,NMAP 将无法解析 hosthames,AFAIK。其他扫描器,如 Angry IP 扫描器,可能会通过 netbios 查询获取 windows/cifs 主机名。
对于 netbios 的快速扫描,只需将 nbtscan 与
nbtscan 192.168.1.0/24
. 这仅在您的网络上只有支持 netbios 的设备(通常是 Windows)时有效。对于偏执(但速度稍慢)的主机发现,您可以对网络节点的所有端口(-p-)进行高级(-A)nmap扫描
nmap -p- -PN -A 192.168.1.0/24
如果您控制路由器,您还可以检查 arp 表,这是发现网络上活动节点列表的最可靠方法。
您可以使用 dnsmasq 作为缓存 DNS 服务器而不是绑定。它还具有内置的 DHCP 服务器。当 dnsmasq 授予租约时,它会存储主机名,以便您能够使用
host
or进行查找nslookup
。要检索完整的主机列表,只需cat /var/lib/dnsmasq/dnsmasq.leases
. 它显示了所有实际的 IP 地址租约和主机名。