我正在做一个创建本地网络地图的小项目,我需要能够确定 XXXX 是路由器还是连接到它的设备。
我最初的策略是使用 nmap 并使用 的结果Device type
来确定设备是路由器还是连接到网络的计算机,但是当我在家里使用路由器作为目标 IP 运行它时,它返回general purpose
而不是router
.
有什么准确的方法可以远程确定XXXX是否是路由器?
我可以更好地使用 nmap 吗?我用过nmap -O -v X.X.X.X
。
我正在做一个创建本地网络地图的小项目,我需要能够确定 XXXX 是路由器还是连接到它的设备。
我最初的策略是使用 nmap 并使用 的结果Device type
来确定设备是路由器还是连接到网络的计算机,但是当我在家里使用路由器作为目标 IP 运行它时,它返回general purpose
而不是router
.
有什么准确的方法可以远程确定XXXX是否是路由器?
我可以更好地使用 nmap 吗?我用过nmap -O -v X.X.X.X
。
ping 路由器组播地址(IPv4:224.0.0.2,IPv6:FF02::2)。对于支持 IPv6 的路由器,这是强制性的,我不确定 IPv4(至少我家里的 Fritbox 不响应 224.0.0.2)。
如果您的设备支持 CDP 和/或 LLDP(或其他网络层发现协议),您应该在协议提供的信息中看到路由功能(注意这仅意味着该设备可以充当路由器,不一定是路由器)。
通过 SNMP 扫描您的网络并解析您获得的信息。这可能包括 CDP 和 LLDP 信息。有几种工具可以做到这一点。
这可能有点“笨手笨脚”,但有时最简单的解决方案是最好的。只需测试它是否像路由器一样工作。(显然,Jens Link 的解决方案最适合 IPv6,但对于 IPv4 来说就不太可靠了。)
将您计算机上的默认网关更改为每个发现的 IP 地址,并对 www.google.com 执行跟踪路由。即使它路由到同一网络上的另一个 IP,它仍然像路由器一样处理流量。非路由器设备应该只是丢弃/拒绝/错误流量。
不过,我建议编写脚本,因为手动执行会非常乏味。
如果您曾经使用过 SNMP,您可以尝试使用 sysObjectID OID 1.3.6.1.2.1.1.2 来获取有关您设备的信息。但是我不确定您的家庭路由器是否能够说 SNMP。
没有准确的方法,但您可以从其他事物中推断出来。除了 Eragon 和 Jens 的想法,您还可以嗅探本地网络上的流量并查找非本地地址。目的MAC是路由器的MAC。