使用java查找网络设备的物理端口号

使用java查找网络设备的物理端口号

我想找出一系列设备连接到的路由器的物理端口号(连接器本身!)。查找它们的 IP 和 MAC 根本不是问题。比如说,找出例如 IP 或 MAC xxx 的设备连接到其路由器的插头 #03。

我的拓扑是一个私有局域网:一台计算机(运行 Java 程序并安装 Windows 7)连接到一个路由器,最多可连接 10 台设备。

我读到了一些关于激活 SNMP + 协议并在路由器上安装 NMS 服务器的信息,然后执行“show mac address-table address xxxx.xxxx.xxxx”,但由于路由器可能来自不同的制造商,如果可能的话,最好有一个解决方案,它不需要在路由器站点配置或安装任何东西。有什么想法或观点吗?

提前谢谢大家!

答案1

一些网络交换机和路由器通常会发送数据包,允许识别电缆另一端的设备所连接的交换机/路由器端口,但这只会让查询设备找到自己的端口,而不是任何其他设备的端口。对此,有各种供应商的原始解决方案,如思科的 CDP 协议和较新的 IEEE802.1AB 链路层发现协议 (LLDP)。

除此之外,物理端口的映射还需要路由器或交换机的配合。不幸的是,目前还没有一个通用的标准。即使有,也可能存在网络管理员希望对端口号保密的情况,因此即使存在合适的协议,这些信息也不一定能在没有某种身份验证的情况下自由获取。

在更大规模上,有主动探测(类似于 traceroute)和路由协议信息分析等技术,但这些在单个网络段内不是很有用。

幸运的是,SNMP 是一种成熟的管理协议,尤其是在交换机和路由器等设备中。如果您的路由器支持 SNMP,它很可能为您提供其 MAC 地址表的列表,其中包含与每个 MAC 地址关联的某种端口标识符。

根据路由器的品牌和型号,可能无法在其上安装任何东西。我认为映射服务适合企业类型的情况,即有多个交换机为路由器供电:在这种情况下,路由器上的映射服务必须访问(映射兼容的)交换机以提供全面的映射:“MAC 地址 X 位于边缘交换机 A 端口 B,该端口通过核心交换机 C 端口 D 连接到路由器端口 E。”

但是对于单个路由器和最多 10 个直接连接的设备,您只需要对路由器的 MAC 地址表进行基本的只读 SNMP 访问 - 这实际上是我所知道的解决您的问题的唯一方法,而无需去那里物理查看电缆。

相关内容