Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Is there a way to get the original MAC addresses for eth0 and eth1?

A large array of servers have bonding interfaces managing backup switch connections and one is misbehaving. With bond0 active both MAC addresses are replaced and reported identically by ifconfig.

I want to search the server array for a MAC address I found in a Cisco device.

I would use dmesg(1) or /var/log/messages, but they have been rolled over for hundreds of days for most of the array.

share|improve this question
I think nobody else actually understood your question correctly, but I thing I do. I'll see if I can find something and report back. –  Yanick Girouard Feb 28 '12 at 1:24

8 Answers 8

up vote 3 down vote accepted

I'm still searching for a more "official" explanation, but according to this blog, the file /proc/net/bonding/${bonding name} will provide the actual mac address for each NIC in the bond (eth0, eth1, etc..), so that might be more useful.

Hope this will help!

share|improve this answer
Here's where I would look for it –  Petter H Feb 12 at 20:49

try the /sys filesystem:

$ cat /sys/class/net/eth?/address
share|improve this answer
This information seems to be overwritten with the current value of the interface. That is to say if you are in a bond the bond's value. –  Tarrant Feb 25 '14 at 21:53
Right, to elaborate, for an eth0+1 bond this will have the eth0 mac address for both eth0/address and eth1/address –  DigitalRoss Mar 25 at 18:14

The OS should keep a list of physical NIC details within the file:


Here is mine as an example:

# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:23:54:95:74:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Notice the "ATTR{address}==" section?

share|improve this answer
This works also. –  DigitalRoss Mar 25 at 18:15

On RHEL/CentOS 6:

# ethtool -P <if>

Permanent address: 00:11:22:33:44:55
share|improve this answer
This also works. –  DigitalRoss Mar 25 at 18:16

There's a few ways both for SATA and NET devices. Commands like udevadm info will do it as well. ifconfig and netstat as well. And the list goes on. Check some of the old links for above for the full set.

share|improve this answer

You can use arp to find a MAC address

To find the manufactors MAC the IEEE Registration Authority keeps a list of brand names that belong and there MAC addresses, the first six in a MAC address are the brand name followed by type and serialnumber

Search the Public OUI/'company_id' Listing

share|improve this answer
A bonded interface intentionally does not behave that way. The OP seems to be looking for the MAC address that was burned into the EEPROM of his physical hardware that is part of such bonded interface. This MAC exits the layer 2 stage when bonding is set up. –  rackandboneman May 21 '12 at 19:21

If you are not sure of the interface name (happens with CentOS 7) try: ip addr

and just pick the interface from the list

share|improve this answer
I get the impression you didn't actually read the question. It clearly states: With bond0 active both MAC addresses are replaced and reported identically by ifconfig. –  kasperd Mar 24 at 21:05

dmesg | grep eth0 && dmesg | grep eth1

You can grab the reported hardware addresses for any interface prior to the bond being established.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.