How do I Control the Ordering of Network Interfaces?

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.


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:

a) With no parameters or net.ifnames=1 used, the names will use systemd Predictable Network Interface Names
b) With biosdevname=1 used, the names will be managed by udev (technically systemd-udev) using Consistent Network Device Naming
c) With net.ifnames=0 and biosdevname=0 both specified, traditional ("kernel names") ethX names will be used; if udev rules are also added they can rename the interfaces to anything except eth

Example:

Edit /etc/default/grub
append selected params eg.
biosdevname=0 net.ifnames=0
grub2-mkconfig -o /boot/grub2/grub.cfg

And in case of main topic: When you need to adjust order of all interfaces procedure is easy:

mv /etc/udev/rules.d/70-persistent-net.rules /root/ 
(New udev rules will be generated at next boot)

Adjust configuration files in
/etc/sysconfig/network-scripts/ifcfg-eth*
[Edit device name, connection name, HWADDR etc.] 

Reboot and then udev will generate rules basing on configuration files - if you did it properely.

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.