Linux Networking – How to Control the Ordering of Network Interfaces

centos6linuxnetworkingredhat

I'm attempting to configure a machine with 3 NICs, the first two are built-in GbE controllers, the third is a 10GbE controller. Via NetworkManager, I've configured the 'first' GbE NIC (which at the time was eth0) to use a static IP address. The second GbE NIC will be configured on a separate private network and the 10GbE NIC is not being used right now.

When I reboot the machine, the ordering of eth0, eth1, eth2, etc appears to be random. Occasionally eth0 will pick up the static ip address, other times it is recognized as eth1 and grabs a DHCP address. In this case, I need to swap the cables before it reconfigures properly.

How can I control the ordering so that a particular physical NIC always comes up as eth0 or eth1 without changing next reboot?

Best Answer

The method still supported in RHEL 6 is via udev device rules.

There should be an automatically generated /etc/udev/rules.d/70-persistent-net.rules which forces consistent naming:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:30", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10c9 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

If not you can use a similar syntax with your own MAC addresses to force persistent device naming.

Related Topic