Arbitrary VLAN interface name

OMG - it's that easy:

Rename vlan 42 on eth0 to ext2:

ip link set dev eth0.42 name ext2


I didn't have luck with "ip link set dev bond0.10 name ext0". If the interface is up, it gets a BUSY error. If the interface is down, it gets a NOT FOUND error.

What I did have luck with is this: in my base interface definition for bond0,

post-up ip link add name ext0 link bond0 type vlan id 10
pre-down ip link delete dev ext0 type vlan

and

auto ext0
iface ext0 inet static
    address ...

Now I find that "ifup bond0" not only creates the VLAN as seen in /proc/net/vlan/config and creates the ext0 device, but it even ifup's the ext0 device. bond0.10 never comes into existence.


In OpenBSD (and presumably other BSDs) you can set a description of an interface with ifconfig using the aptly named description argument, see ifconfig(8). This is very handy for distinguishing between a bunch of interfaces. But that doesn't help you.

Unfortunately there's no great way to do this in Linux.

In Linux, interfaces are named dynamically with each interface being assigned the first available name. This means that if you pull a NIC and then add another one (say to replace it or upgrade it) there is no guarantee that its interface will remain the same.

Try a program like ifrename which will allow you to manually specify the interface names. It looks primarily designed to assure that NIC0 is always associated with eth0 but I believe you can use it assign names like external and dmz to interfaces instead of eth0 and so on. Udev will also allow you to change interface names using the network.rules file (see here for an examples).

You should be careful to document this as it is not typically done but unlike @MichealHampton I don't see any particular problem with it. I personally make great use of the description field for interfaces in my BSD installs.