如何在 Java 中的 linux 接口绑定过程中找到原始 MAC 地址?

Bla*_*ker 4 java mac-address network-interface

interface-bounding:Linux 绑定驱动程序提供了一种将多个网络接口聚合为单个逻辑绑定接口的方法。逻辑有界接口将只有一个 MAC 地址,它与原始接口之一有界。ifconfig将显示所有具有相同 MAC 地址的原始接口。

现在,我要在 Java 中找到每个接口的原始 MAC 地址。如何?

我已经确认我无法找到它们NetworkInterface.getInterfaceAddresses()并且NetworkInterface.getSubInterfaces()

还有其他方法吗?

更新:

边界前: 在此处输入图片说明

在将 eth1 和 eth2 绑定到 bound0 之后: 在此处输入图片说明

java代码显示接口信息:

ALL interfaces:[name:bond0 (bond0), name:eth0 (eth0), name:lo (lo)]
they are [{netIf bond0,host 192.168.122.38,mac 525400F801B9,ip 192.168.122.38}, {netIf eth0,host hatest02,mac 5254008C5B48,ip 192.168.10.38}]
Run Code Online (Sandbox Code Playgroud)

Col*_*nux 5

cat /proc/net/bonding/bond0
Run Code Online (Sandbox Code Playgroud)

将向您展示两个绑定接口的原始 mac

完整输出,以下私人数据较少:

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eno49
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno49
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 28:80:23:xx:xx:ec
Slave queue ID: 0

Slave Interface: eno50
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 28:80:23:xx:xx:ed
Slave queue ID: 0*
Run Code Online (Sandbox Code Playgroud)


bre*_*ttw -1

网络接口没用,恕我直言。我从未从中获得过可靠的信息。执行ifconfig并解析输出,这是你最好的选择。

更新:太棒了,有人投了反对票。因此,发布一个答案并展示什么有效,因为我坚持 NetworkInterface 不可靠的断言。ifconfig能够显示粘合信息的现代替代方案是ip link show type bond