Is there any way to swap network interfaces (eth1 <-> eth0) after system installation.
My brand new Debian 6.0 install assigned PCI network card as "eth0" and motherboards integrated network device as "eth1" by default. The problem is I want to use the integrated device as default (eth0) network interface.
I already edited :
/etc/udev/rules.d/70-persistent-net.rules
to swap the names and everything seems to be ok and network is working but programs are still trying to use the PCI network card (which is now "eth1") as the default interface. For example iftop now tries to use "eth1" as default device as it used "eth0" before the swap.
Is this purely a software problem as the applications are trying to use the first found device as a default device despite their interface naming or is there any way to fix this by configuring OS?
edit: I wrote a small app to print out iflist and the PCI device (eth1) came up before "eth0". Any ideas how to swap the device order.
edit: I found a thread about the same problem and I tried everything they suggested and none of the solutions are working except for swapping the names "virtually".
Best Answer
I am answering to my own question now because I finally found a workaround for this problem.
I found out that it is possible to reorder the devices by unloading the drivers and then loading them in correct order.
First method (bruteforce):
So the first method I came up with was simple to bruteforce the driver reload with init.d script.
Following init script is tailored for Debian 6.0, but the same principle should work on almost any distribution using proper init.d scripts.
Then the script must be added to proper runlevel directory. This can be done easily on Debian with "update-rc.d" command. For example:
update-rc.d reorder-nics start S
Second method (Better I think):
I also found a bit more elegant way (at least for Debian & Ubuntu systems).
First Make sure that kernel doesn't automatically load the NIC drivers. This can be done by creating a blacklist file in
/etc/modprobe.d/
. I created a file named "disable-nics.conf
". Note that files in/etc/modprobe.d/
must have.conf
suffix. Also naming modules in/etc/modprobe.d/blacklist.conf
do not affect autoloading of modules by the kernel, so you have to make your own file.Then run 'depmod -ae' as root
Recreate your initrd with 'update-initramfs -u'
And finally add the driver names in corrected order into /etc/modules file.
Changes should come in effect after the next boot.
Reboot is not necessary though; it's easy to switch the devices with following command (as root, of course):
Some useful links I found while searching the solution: