在我的 debian 机器中,我创建了一个热点 (hostapd),并且一些设备使用 Wi-Fi 连接。如何ex: xyz iphone, apple tv, john pc
从命令行获取已连接设备的名称?
笔记:目前我正在使用以下命令获取 MAC 和 IP 地址arp
,但不是设备名称。
答案1
快速提醒所涉及的层:LAN 和 WLAN 使用 MAC 地址进行通信(OSI 级别 2)。 ARP 协议告诉您哪个 MAC 地址属于哪个 IP 地址(OSI 级别 3)。机器的名称由 DNS 处理。通常,您的家庭路由器运行 DNS 服务器,您可以在其中输入哪个名称属于哪个 MAC 地址,或者它会自动使用由 DHCP 提供的名称。
所以:
使用 获取连接站的 MAC
iw wlan0 station dump
,其中wlan0
是您的热点的 IF。这比arp缓存更可靠,因为arp缓存可能不包括全部连接的机器,它还可能包括其他其他 LAN 上的机器等arp-scan
也不太可靠,因为它会尝试通过 WLAN 获取 ARP 响应,但热点已经确切知道哪个机器已连接。对于每个 MAC,找到相应的 IP 地址。我能想到的唯一命令行工具是
arping
,但可能有更好的方法。对于每个 IP,对您的家庭路由器进行 DNS 反向查找,例如
host <ip-addr>
。
是的,就是这么难,想要做好,就不能走捷径。可能有一些工具可以为您做到这一点,但我不知道,所以您必须编写脚本。