Force CentOS 6 to Re-Detect Network Devices

Recently, I began transitioning from VMware ESXi to Proxmox VE and ran into an unexpected issue. After imaging the VM’s running on top of ESXi and redeploying them into blank KVM VM’s, I noticed that even though the new VM’s had network interfaces they had no connectivity. After some investigation, I discovered that CentOS 6 uses udev to deal with all hardware devices; so restoring connectivity was as a quick, two-step process. Before we discuss the solution, though, let’s examine the root cause of the issue.

udev manages hardware, including network interfaces, via .rules files which contain various attributes of a given piece of hardware that are used to match the device against a single device node each time it is connected to the system. When cloning a drive with Clonezilla a bit-for-bit copy of the drive is made, which includes the /etc/udev/rules.d directory and all the .rules files contained within it. The 70-persistnet-net.rules file controls network devices in a system and isn’t updated when a Clonezilla image is deployed onto new hardware. Causing the system to continue trying to use the old MAC address, resulting in non-functional network interfaces.

To force CentOS 6 to re-detect network interfaces and assign them the correct MAC address:

1. Open the configuration file for the network interface you wish to work with in your text editor of choice.

[sourcecode language=”bash”]vi /etc/sysconfig/network-scripts/ifcfg-eth0[/sourcecode]

2. Remove the existing HWADDR line in this file so that it won’t conflict with the new value written to the 70-persistent-net.rules file when the system is rebooted in the final step of this tutorial. When done your file should look similar to the example below:

[sourcecode language=”bash”]

DEVICE=eth0

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

IPV6INIT=no

PEERDNS=yes

NETMASK=255.255.255.0

IPADDR=192.168.0.100

GATEWAY=192.168.0.1

[/sourcecode]

3. Remove the old 70-persistnet-net.rules file with the following command. Removing this file will force udev to probe for network interfaces at boot and create a new 70-persistent-net.rules with the appropriate MAC address (or addresses if your system has multiple network interfaces).

[sourcecode language=”bash”]rm -f /etc/udev/rules.d/70-persistent-net.rules[/sourcecode]

4. Restart the machine and check that your network interface is listed in the newly created 70-persistent-net.rules file along with the correct MAC address.

There you have it, a quick and easy way to restore network connectivity on a Centos/RHEL system after migrating to new hardware.

//J

Note: Given that this tutorial is focused on Linux any number of ways may exist to accomplish the particular task. I have merely provided one method that I have had success with. If you know of a more efficient way of accomplishing this task please don’t hesitate to share in the comments.

Leave a Reply

Your email address will not be published. Required fields are marked *