Fedora 10, and perhaps Fedora 9 as I did not use it, have some interesting changes to how networking is configured and its relationship with udev. The udev daemon is a relatively new kernel device manager which allegedly provides consistent and persistent device naming for all devices including removable mass storage devices. It is also used to match network device names, i.e., eth0, to the MAC address on the NIC. This has caused me some strange problems which took a while to identify the source.
I ran into the problem when I removed the hard drive from one working computer and installed it in another. It came up and ran, including the network, but I could no longer SSH to or ping the computer from one of my other computers. A list of the symptoms was pretty strange. The computer’s host name is test1.
- I could not connect to test1 from any other box.
- I could connect to any other box from test1 which indicates that the network is really working.
- An ifconfig showed the IP address had been taken from my DHCP pool and the NIC name was eth1 rather than eth0.
- Manually restarting with the CLI command, service network restart, gives an error indicating that eth0 is not present.
- No changes I made to /etc/sysconfig/network-scripts/ifcfg-eth0 made any change in the symptoms.
The computer in question no longer had the address I expected, which would have been the one associated with the computer on the hard drive. It was, instead of eth0, now eth1 and used an IP address that it had obtained from my DHCP server rather than the static IP which I desired.
The root cause of this problem is changes to network configuration, which has been more automated using the Network Manager and the udev “universal device” manager. See the section, Network Manager, in this DataBook.
I posit that what happened was that the network startup sequence determined that eth0 was not present based on the MAC address, which is different for the new computer than for the old one. It threw the error and then udev created an entry for the new NIC in /etc/udev/rules.d/70-persistent-net.rules but did not remove the old rule.
Fixing the Problem
To resolve this, edit the file /etc/udev/rules.d/70-persistent-net.rules and remove the incorrect MAC address from the rule line for eth0 and replace it with the correct MAC address. You can then remove the unneeded rule for eth1.
Please leave a comment if you have additional information regarding this or related udev problems.