使用网络桥接时如何捕获 arp 表?

使用网络桥接时如何捕获 arp 表?

我有一台带有 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 具有非常相似的功能,并且工作起来更简单一些。

感谢所有发表评论的人。

相关内容