The best way to rename Ethernet devices is through udev. It is the device manager for the Linux kernel. Primarily, it manages device nodes in /dev. It is the successor of devfs and hotplug, which means that it handles /dev directory and all user space actions when adding/removing devices, including firmware load.
| Tutorial details | |
|---|---|
| Difficulty | Intermediate (rss) |
| Root privileges | Yes |
| Requirements | Linux + udev Reboot required |
The order of the network interfaces may be unpredictable under certain configurations. Between reboots it usually stays the same, but often after an upgrade to a new kernel or the addition or replacement of a network card (NIC) the order of all network interfaces changes. For example, what used to be rl0 now becomes wlan0 or what used to be eth0 now becoems eth2 or visa versa.
Step #1: Find out the MAC address of the Ethernet device
Type the following command:
# ifconfig -a | grep -i --color hwaddr
Sample outputs:
eth0 Link encap:Ethernet HWaddr b8:ac:6f:65:31:e5 pan0 Link encap:Ethernet HWaddr 4a:71:40:ed:5d:99 vmnet1 Link encap:Ethernet HWaddr 00:50:56:c0:00:01 vmnet8 Link encap:Ethernet HWaddr 00:50:56:c0:00:08 wlan0 Link encap:Ethernet HWaddr 00:21:6a:ca:9b:10
Note down the MAC address.
Step #2: Rename eth0 as wan0
To rename eth0 as wan0, edit a file called 70-persistent-net.rules in /etc/udev/rules.d/ directory, enter:
# vi /etc/udev/rules.d/70-persistent-net.rules
The names of the Ethernet devices are listed in this file as follows:
# PCI device 0x14e4:0x1680 (tg3) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:ac:6f:65:31:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Locate and identify the line with the NIC from step 1 (look for the MAC address). It may look like above. In this example, the interface eth0 will be renamed to wan0 (change NAME="eth0" to NAME="wan0"):
# PCI device 0x14e4:0x1680 (tg3) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:ac:6f:65:31:e5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wan0"
Save and close the file. Reboot the system to test changes:
# reboot
Verify new settings:
# ifconfig -a
# ifconfig wan0
# ifconfig -a | less
# ip addr show
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop












{ 8 comments… read them below or add one }
Can i change the MAC address of a using udev rule. Actually i am getting random MAC for a Ethernet interface on my device. So i can’t rename that interface as in this rule MAC address is comparing.
Hi Rahul,
Probably you are looking for this. On my ubuntu (10.04-LTS) system. Its like.
root@ubuntu:/etc/udev/rules.d#cat 70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x10ec:0×8139 (8139cp)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”64:63:62:61:10:02″, ATTR{dev_id}==”0×0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″
Change here what you want.
Thanks for your reply. :-)
In my case ATTR{address}==”xx:xx:xx:xx:xx:xx″ is random, it changed on every reboot, so i can’t compare this.
I need to make it static first, is there any way to do this?
looks like you’re using some virtualization software, In that case, its the Virtualization software whether its Xen, KVM, Hyper-V, VMWare or any other, has the option to put the static MAC address. You’ll have to look out for the options..
Thanks Balvinder,
I am working on a embedded self designed card and i have only one option to put the static MAC by using kernel. But i don’t want to change the kernel again. So looking for udev alternate, if it is possible. Like i can change the device name, can i change the MAC as well?
Add this entry into your rc.local file
ifconfig eth0 down hw ether 00:C1:26:10:30:C5 up
udev rule initiate before rc.local execution, so i don’t think that will work.
Hi,
Thanks a lot