在FreeBSD中,如何从逻辑接口到设备正在使用的底层网卡的接口?


1

在FreeBSD中,如果IP设备所在的接口恰好是物理网卡,那么我可以使用查找物理网卡的接口arp -a

但是,如果它是在桥接或其他逻辑接口上,那么从已知设备的IP地址到接口的最简单方法是什么?我可以从ARP获得其逻辑接口,但它只显示ARP中的桥接接口,而不是实际的外部接口。

我想要识别的是代表IP正在使用的真实外部NIC的接口,因此我可以连接/断开正确的线路,错误检查相应的网络交换机等等。为简单起见,假设没有多路径,聚合/失败转移连接或防火墙问题,并且我可以将外部NIC与其驱动程序(em,re等)区分开来

我怎么能得到它?

例子:

  • (最常见的情况)系统有em0em1em2em3和他们进行桥接由bridge0具有指定的IP地址。我将一台笔记本电脑插入一个连接到emo- 中的一个的开关em3。当我使用时,arp -a我得到了设备 - 但它列出了接口bridge0,这在逻辑上是正确的,但在物理上无益。
  • (不常见的情况)笔记本电脑通过VPN连接到连接到桥接的交换机。列出的实际接口是VPN的接口,而不是网桥或交换机的NIC。
  • (到目前为止不常见的情况)设备配置错误,静态IP与接口子网不匹配。也许它正在发送和接收广播,如果是这样我们就会收到广播。它没有ARP条目,因为ARP who-has是在接口上为预期的非实际子网发送的。但它会who-has通过正确的NIC 响应具有静态IP或ARP的数据包。

注 - 还有其他情况(VPN等),其中可能存在多层堆叠的逻辑接口,直到一个层到达所使用的实际物理接口。所以问题通常是关于检测具有非物理接口的设备并递归到代表它所连接的物理NIC的底层接口。

Answers:


0

桥接接口就像一个交换机,所以它使用它需要的任何接口,以便与它想要的以太网地址通信。因此,举例来说,如果em0直接连接到MAC地址aa.bb.cc.dd.ee.ff,并a1.bb.cc.dd.ee.ff同时em1直接连接到MAC地址aa.cc.bb.dd.ee.ffa1.cc.bb.dd.ee.ff,你已经知道要寻找什么接口。tcpdump在这种情况下也非常有用,如果你把它传递给-e交换机,它也会显示以太网地址。其他情况通常可以通过查看路由表来解决,如果不是实际接口,则从那里推断,至少是最可能的接口。tcpdump被证明是这种情况下最好的助手。

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.