这只是瞎猜,但我想问问以防有人有想法:
我有一个测试场景,其中一些(无 GUI/嵌入式)IPv6 设备将被暂时插入托管以太网交换机的端口,并且控制程序(在单独的 Linux PC 上运行,也连接到交换机)将检测其中一个设备何时出现在 LAN 上,并自动运行测试以确保设备正常工作。
通常会有十几个这样的设备同时连接(因此我们可以并行运行测试),并且设备会由那些不一定了解网络的人定期连接和断开;他们只知道如何插入以太网电缆,然后(几个小时后)查看电脑的屏幕以查看测试是否通过。
当前的问题是如何向测试人员指出某个设备测试失败的情况。一种选择是让错误日志/消息包含设备的 MAC 地址(从其本地链路 IPv6 地址派生而来),这可能在紧急情况下就足够了,但如果测试程序还可以说“连接到端口 #5 的设备无法正常工作,请查看该设备”,那就更好了。这样,测试人员只需沿着以太网电缆找到故障设备,而不必找出每个设备的 MAC 地址,直到找到匹配的 MAC 地址。
我不思考Linux 计算机可以判断特定设备连接到哪个交换机端口(如果我错了请告诉我)。但假设情况确实如此,那么下一个最好的办法就是我可以对交换机进行编程以进行 MAC 地址转换,例如,任何插入端口 #n 的设备(对于 Linux 计算机)总是显示为好像它具有 MAC 地址 foo:bar:baz:n,因此显示为 IPv6 地址 fe80::2foo:bar:baz:n。如果交换机进行这样的 MAC 地址转换,那么控制软件只需查看伪造 MAC 地址的最后一部分即可确定设备连接到哪个端口。
所以我的问题是,这种行为是任何托管以太网交换机都支持的吗?如果是这样,这个功能叫什么(这样我就可以找到一个可以做到这一点的交换机)?如果不是,有没有更好的方法来解决这个问题,我应该看看?
答案1
我从未听说过可以转换 MAC 地址的交换机。但是,大多数好的管理型交换机都允许您通过 SNMP 查询网桥表:标准网桥 MIB 中的 dot1dBridge.dot1dTpFdbTable 看起来是可行的方法。您需要将 MAC 地址转换为十进制并将其附加到 MIB 前缀,然后它会吐出它所学习到的端口。如果您需要处理 VLAN,则需要一些额外的技巧。