如何查找连接到同一以太网桥的设备的 MAC 或 IP 地址?

如何查找连接到同一以太网桥的设备的 MAC 或 IP 地址?

我有以下拓扑:

DeviceX ------
              |
 DeviceX bridge with two Ethernet cards 
      (created with bridge-utils) ---------------- router 
              |                                      |
              |                                      |
DeviceY ------                                       |
                                                     |
                                     other devices on the same network 
                                       (switches, PCs, WiFi devices)

我可以完全控制 DeviceX - 它是一台 Linux PC,有两个以太网适配器,它们与 Linux 桥接,bridge-utils为 DeviceX 和 DeviceY 提供 LAN 访问。

DeviceY也是一台Linux PC,但我无法控制它。我只知道它使用的是通过 DeviceX 上的网桥从路由器接收到的 DHCP IP 地址。 DeviceY 可能随时被另一个物理设备替换,因此我不能只查看一次其 MAC 地址并保留它 - 我需要在每次 DeviceX 启动或检测到其两个以太网连接之一时确定 MAC 地址已重置(电缆断开并再次连接等)。

始终保证只有这两个设备会连接到 DeviceX 上的网桥,而不会再连接到其他设备。

可能还有许多其他设备连接到路由器,但我只需要 DeviceY 的地址,它始终直接连接到两个以太网端口之一。

如果我还获得了路由器本身的地址,那么它可能不会破坏交易 - 它会事先知道,并且我可以将其过滤掉,只要我只有两个设备的地址 - 路由器和 DeviceY。

现在的问题是: 从 DeviceX 中,如何可靠地找到 DeviceY 的 MAC 或 IP 地址?

更多信息:我在 DeviceX 上使用bridge-utils,因为 DeviceY 应该与 LAN 中的所有其他设备位于同一 LAN 中。从 DeviceX 到 DeviceY 的自定义路由不是一个选项,因为它会创建一个新的子网,并且需要 NAT 以及无法使 DeviceY 按预期工作的内容。 Bridge-utils 是最简单的解决方案。

答案1

网桥或交换机是桥接广播域的两个网段并隔离单播流量的设备。

为此,网桥维护一个转发表,记录哪个端口到达给定的 Mac 地址。当收到带有新以太网源地址的新数据包时,该表就会被填充,并且一段时间内未见过的 MAC 地址将被删除。

当网桥/交换机收到针对给定 MAC 地址的帧时,如果该 MAC 地址在其转发表中,则它仅在相应端口上发送该帧,否则发送到所有端口。

Linux 的实现也不例外。

可以使用以下命令查询转发表

 brctl showmacs <bridge-name>

并且可以以/sys/class/net/<bridge-name>/brforward(二进制)形式提供。

您可以使用以下命令获取端口号和接口名称之间的映射:

 grep . /sys/class/net/vmbr0/brif/*/port_no

iproute2或者,如果在具有最新版本的 Linux 新网络实用程序套件的系统上,您可以使用以下命令获取带有接口名称的转发表:

 bridge fdb show br <bridge-name>

或者了解通过给定接口或网桥可到达的所有 MAC 地址,例如eth0

 bridge fdb show br <bridge-name> brport <interface-name>

答案2

该命令arp将显示所有 IP 及其 MAC,因为您的网络中只有两台计算机和路由器,因此很容易识别出既不是您的 IP 也不是路由器的 IP,并且具有来自您的网络的 IP 的计算机。

相关内容