I just installed RHEL 6.3 on a Dell 1950 server.
This server as two GBit ports, Gb0 and Gb1.
For some obscure reason, udev chose to name Gb0 eth1 and Gb1 eth0.
This is definitly not a good find for me and just gives confusion.
So I modified the configuration in /etc/udev/rules.d/70-persistent-net.rules:
# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:20:19:52:d3:c0",
ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:20:19:52:d3:be",
ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
I just changed the “NAME” field on the file in order to reflect what I want.
I rebooted the server and it didn’t worked.
In the dmesg log I can read the following :
udev: renamed network interface eth1 to rename5 udev: renamed network interface eth0 to eth1 udev: renamed network interface rename5 to eth0
Any idea on what is wrong here?
Why is udev switching like this? I have another similar server, where I do not have this issue.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
In my case, the issue is coming from the fact that the mac address for each interface was set in three files :
/etc/udev/rules.d/70-persistent-net.rules /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
We need consistency between ifcfg file and net.rules for the mac address.
Method 2
While this is rather late, I fixed my issue by removing the
KERNEL="eth*",
part of the rule in /etc/udev/rules.d/70-persistent-net.rules file. This works because, once UDEV has renamed the device to “rename*”, this part will stop the rule matching. So, removing it allows the correct name to be assigned to the correct device regardless of what UDEV has called it in the meantime.
Method 3
I was able to resolve this by simply deleting /etc/udev/rules.d/70-persistent-net.rules and rebooting.
Method 4
have you tried creating a blank /etc/udev/rules.d/80-net-name-slot.rules ?
since Udev v197, udev has implemented predictable network interface names, by creating a blank file in that path then rebooting, you should have your interface names back to what they were.
i answered a similar question at : Creating eth0 with consistent network device naming
Method 5
It also might happen because eth0, eth1, wlan0, wlan1 etc. are standard kernel names (in case of non-persistent scheme naming). In udev documentation it’s said:
NAME
The name to use for a network interface. See systemd.link(5) for a higher-level mechanism for setting the interface name. The name of a device node cannot be changed by udev, only additional symlinks can be created.
So never use eth*, wlan* etc. names for udev rules.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0