我有一台带有 2 个桥接 NICS 的计算机,我需要一种方法来区分连接到 eth0 的机器和连接到 eth1 的机器。
我希望使用类似“arp -a”命令。但是,当 NICS 桥接时,arp 表始终为空。我相信这是正确的,因为第 2.1.1 节。地址解析协议概述 [http://linux-ip.net/html/ether-arp.html],提到“由于交换机、集线器和桥梁由于以太网帧是操作对象,所以它们不知道这些帧所携带的高层数据”。
是否有人知道我可以使用的其他工具,即使 NIC 已桥接,也可以在特定的 NIC 上维护 arp 表?
答案1
您不会通过这种方式获取 IP 地址,但您可以看到网桥已学习到哪些 MAC:
# brctl showmacs br0
port no mac addr is local? ageing timer
1 00:16:3e:aa:bb:cc no 3.02
1 00:16:3e:ab:bb:cc no 30.37
1 00:16:3e:ac:bb:cc no 90.66
2 fe:ff:ff:ff:ff:ff yes 0.00
注意该port
列,它告诉您port
数据包从哪个接口( )进入网桥。如果不清楚哪个是哪个,请运行brctl show
。
如果您也需要 IP 地址,则必须为网桥分配一个网络地址并启动 ping 扫描:
ip addr add X.X.X.X/yy dev br0
nmap -T5 -sP X.X.X.Z/yy
arp -a
ip addr del X.X.X.X/yy dev br0
答案2
尽管上述答案是正确的并且可以起作用,但我希望得到比进行 ping 扫描更安静一点的东西。
我仍然有点困惑为什么标准 arp 命令不起作用。我确信我可能错过了一些配置。
但是我当前的解决方案是使用 arpwatch [http://en.wikipedia.org/wiki/Arpwatch]与“brctl showmacs”结合使用。
Arpwatch 生成不同的输出文件,将 IP 地址映射到 MAC 地址。“brctl showmacs”提供 MAC 地址到物理端口的映射。有了这两个工具,我就有了所需的一切。
[编辑] 此外,arpalert 具有非常相似的功能,并且工作起来更简单一些。
感谢所有发表评论的人。