我有安装了 Openwrt 的桥接模式路由器,我想找到连接到路由器的设备的 IP 地址。由于路由器处于桥接模式,我无法从 DHCP 租约中找到 IP,但我可以找到连接设备的 mac 地址。
首先想到的是向所有网络广播并从 ARP 中查找 IP 地址,但这对我来说不起作用,因为当我向网络广播时,我无法从某些设备获取响应,我认为这可能与我的调制解调器的防火墙设置有关。
所以,我的问题是如何以编程方式从 mac 地址找到设备的 IP 地址?
答案1
将 nmap 安装到你的 OpenWRT 路由器:
opkg update;opkg install nmap
扫描所有网络。例如,网络是:203.120.12.0/24
nmap -v -sn 203.120.12.0/24 --open
它应该显示如下内容:
Nmap scan report for 203.120.12.253
Host is up (0.00016s latency).
MAC Address: 04:18:D6:83:90:07 (Ubiquiti Networks)
然后你可以使用 grep 命令从 MAC 地址获取 IP 地址
答案2
@Nam Pham 的想法是正确的,但是这里是如何将其变成 bash 脚本,以便您可以“以编程方式”执行此操作:
mac=your.mac.here
#Determine local ip address and use to get domain:
ip=`hostname -I | awk '{print $1}'`
domain=`echo $ip | sed 's/\.[^.]*$/.*/'`
nmap -sn $domain | grep $mac -B2 | head -n 1 | sed 's/.* //'
答案3
找出设备 IP 地址的一种方法是使用协议分析器,例如wireshark。如果您从网络接口捕获了足够的流量,您应该会看到网络上几乎每个设备都会生成一些广播流量。然后,您可以过滤源 MAC 与路由器匹配的数据包。
在 wireshark 中,这个过滤器将是eth.src == xx:xx:xx:xx:xx:xx
这种方法的优点是,即使您的路由器使用子网之外的地址,它也能起作用。