如何识别从Linux机箱连接到同一交换机的NIC?
初始设置
作为Linux管理员,您已经安装了一个带有6个NIC eth0到eth5的新Linux盒子. 手头的任务 由于此设置是您的基础架构的典型设置,因此您希望自动配置绑定接口.现在您的任务是检测哪些NIC根本没有连接,哪些NIC链接到同一个交换机,以便它们可以绑定.您只能访问Linux机器,无法查询交换机. 思路 检测链接状态很简单: ethtool $device | grep 'Link detected' | cut -d ':' -f 2 但是如何匹配连接到同一交换机的设备? 在HP-UX中,有一个名为linkloop [1]的工具.缺少官方的Linux工具(虽然有一个旧的SourceForce项目). 我已经想到的可能的解决方案是: >使用tcpdump监听所有接口.制作并发送ICMP(广播)数据包.看到该数据包的接口需要连接到同一个交换机. – >需要提供可能用于此的简单工具的建议.我想使用普通的shell命令或Python来编写脚本. 您是否有进一步的想法或建议如何解决此任务? 提前感谢您的所有评论! [1] http://linux.die.net/man/1/linkloop 解决方法
交换机可能已经在向您发送所需信息.如果它们是Cisco交换机,则默认情况下它们将使用称为CDP(思科发现协议)的进程,该进程将为您提供有关其所连接的交换机的信息.
您可以使用tcpdump查看以下信息(替换相应的接口): tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000' 基于标准的CDP版本是LLDP(链路层发现协议).一些供应商默认启用此功能,其他供应商关闭,因此您的里程会有所不同. Linux有一些LLDP实现,但是如果你想要类似于上面的东西,你可以使用它(在Cisco交换机上设置LLDP并测试下面的内容,这与上面的更一致): tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether proto 0x88cc' 除此之外,我会说您提供的选项1的修改可能有效,但是,您可以尝试普通的ICMP(不是ARP表中的主机)并捕获ARP数据包,而不是发送广播ICMP.如果ARP请求发送到eth0并且您在eth1和eth3上收到它,那么您知道它们在同一VLAN上.最简单的命令如下: tcpdump -i eth0 arp (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |