如何识别从Linux盒连接到同一交换机的NIC?


15

初始设置

作为Linux管理员,您已经安装了带有6个网卡eth0到eth5的新Linux盒。eth0接口已正确配置,所有其他接口当前都已启动,但没有IP地址。网络人员只需将四根电缆连接到此盒。两根LAN电缆用于将盒子连接到生产网络,两根LAN电缆用于将盒子连接到专用网络。您只知道eth0已连接到生产网络。但是您不知道哪个其他NIC连接到同一交换机,因为存在不同的服务器世代和/或网络人员使用错误的NIC进行连接。

手头的任务

由于此设置是您的基础结构的典型设置,因此您希望自动执行绑定接口的配置。现在,您需要执行任务以检测哪些NIC根本没有连接,以及哪些NIC链接到同一交换机,以便将它们绑定在一起。您只能访问Linux机器,而不能查询交换机。

主意

检测链接状态很容易:

ethtool $device | grep 'Link detected' | cut -d ':' -f 2

但是,如何匹配连接到同一交换机的设备?

在HP-UX中,有一个用于此目的的工具称为linkloop [1]。缺少正式的Linux工具(不过,有一个旧的SourceForce项目)。

我想到的可能解决方案是:

  1. 使用tcpdump侦听所有接口。制作并发送ICMP(广播)数据包。看到该数据包的接口需要连接到同一交换机。->需要一些可能用于此目的的简单工具的建议。我想使用普通的shell命令或Python编写脚本。

  2. 尝试通过一些简单的协议(HTTP?)与外部设备对话,看看是否有响应。->容易出错,并取决于外部盒。

您是否有解决此任务的其他想法或建议?

预先感谢您的所有评论!

[1] http://linux.die.net/man/1/linkloop


1
这真的闻起来像作业-这是您在生产环境中面临的实际问题吗?
voretaq7

2
我可能会补充说真正的问题和烦人的问题。我已经放学了很长时间……
Reiner Rottmann

好的-我问的原因是您表达问题的方式让我想起了我的一本网络教科书的风格:-)
voretaq7 2013年

Answers:


10

交换机可能已经在向您发送所需的信息。如果它们是Cisco交换机,则默认情况下,它们将使用称为CDP(Cisco发现协议)的过程,该过程将为您提供有关交换机所连接位置的信息。

您可以使用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之外,您还可以尝试普通的ICMP(发送到不在ARP表中的主机)并捕获ARP数据包。如果ARP请求是从eth0发送的,并且您在eth1和eth3上收到它,那么您知道它们在同一VLAN中。最简单的命令如下:

tcpdump -i eth0 arp

1
实际上,我采用了该解决方案,并编写了一个小的python脚本,该脚本在后台将tcpdumps作为线程运行,然后发出arp请求,并查看哪个接口从哪个src mac接收arp包。可行,但是随着所有超时时间的流逝,它会花费一些时间。
Reiner Rottmann

我假设您是在谈论ping超时?您可以尝试使用fping或nmap作为将超时减少到一秒钟以下的选项。例如,“ fping -c1 -t200 192.168.0.1”或“ nmap -sP --max-retries = 1 --host-timeout = 200ms 192.168.0.1”。
YLearn

3

如果交换机将使用LLDP与您通信,则您可以运行LLDP并在此处找到更多信息。



1

为什么不下载并构建该linkloop工具呢?还不算老

否则,我将只使用一些将在第2层上广播的工具,并验证您是否通过tcpdump收到了该工具。

发送广播ICMP数据包很容易 ping -b 192.168.1.255


我只是尝试这样做,但它在2016年的Ubuntu 14上失败了,所以是YMMV。
Hack Saw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.