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?
Maybe someone will find those informations useful: First of all in RHEL7 you dont need to reinstall your system to change interface naming convention.
Note: Boot params required:
Example:
And in case of main topic: When you need to adjust order of all interfaces procedure is easy:
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:If not you can use a similar syntax with your own MAC addresses to force persistent device naming.
The supported way to do this, for RHEL 6 and in the future, is consistent network device naming. This ensures that all interfaces get a meaningful name which is based on the hardware and remains the same throughout the life of the system (if you don't change the hardware, anyway, and usually even if you do).
(Note that in RHEL 7, a different naming format is used.)
To switch to it on RHEL 6, you need to reinstall the system, and when you install, you must pass the kernel command line option
biosdevname=1
when starting the installation media, and every time you boot the system.As suggested by RedHat documentation you can specify
HWADDR=MAC-address
parameter in your interface configuration file.As mentionned by HBruijn, the ordering in rhel6 is /etc/udev/rules.d/70-persistent-net.rules. This file is writen by /lib/udev/write_net_rules.
If for some reason you need an arbitrary and pre-determined ordering of your network interfaces, you may replace this script by your own one, to create the 70-persistent-net.rules file. This makes sure it won't be overwriten.
You may obtain device information to do so using
to get the list of devices
to get the MAC-addr of each one (correlate PCI @ / MAC @).