[systemd-devel] Network Interface Names: solution for a desktop OS

Xen list at xenhideout.nl
Sun Apr 10 16:22:39 UTC 2016


I just want to present my conclusion here succintly.

https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

Was introduced to safeguard against a rare occasion where an important
network computer in a critical environment would suffer from the kernel
anomaly that assigned network interface names may be unreliable.

In any system not configured by the system administrator to cater to
this issue, even simply forgetting to do it could result in some
security breach.

This is how I read the issue today. The designers wanted to create
something that would never fail, and never cause this scenario to happen.

But now all desktop users pay the price of having incomprehensible names
for their network devices, and all server administrators who like
writing scripts or defining firewalls have to deal with names that are
going to change from system to system.

There is a solution to map the original hardware devices (not the new
names) to more meaningful names by manual choice. However, this is not
usually implemented and I do not know of any distribution that does this
by default.

The solution requires the user to either know about the way to find help
(man systemd.link) or to look it up on the web (and know that systemd
causes it). Then he or she needs to create multiple files for each
interface containing either the hardware address (MAC) that is easy to
find, or the PCI bus address according to udev that is less easy to find.

While many people would probably like a more comprehensible naming
scheme, the burden is now on each individual user to create it, while a
consensus on a regular scheme would not be hard to reach.

For instance, calling wired internet devices "ethernet0" while wireless
ones would be called "wireless0" would not be an odd thing to do at all.

So what I am simply calling for is for distributions to make a choice in
the names they want, and then to configure it by default.

PCI hardware names can be mapped to predictable names, most likely. MAC
addresses could equally be used.

The only thing to decide upon is the actual naming scheme. As said,
"ethernet#" and "wireless#" would be obvious.

It wouldn't take more for a distribution's installer than to find these
devices and create mapping files based on them.

The configuration with multiple files in /dev/systemd/network is not
easy, but for an installer that would not be an issue. The configuration
is not easily discoverable by any user traversing the filesystem, nor is
it intuitive to use multiple files for a single configuration but a
likelihood of a user needing to change it, would be very low.

If you want systemd to make sense, you must make it easier for users.

The names I propose would be easy to understand and contain no risk for
the scenario I described unless hardware is removed from a system (but
not put back).

And it might not even have that issue.

Comprehensibility increases legibility and it could even reduce the risk
of some administrator making mistakes.

What it would create on a desktop OS is user-friendly names while having
scarcely any implication, or not at all, for the risk situation
described. PCI bus addresses could be used by default, or MAC addresses
if that was an issue. The kernel-based reordering as described would
never happen.

And all it requires is for the current system to create a default
mapping that requires the installer of the system to do some work.

And not much.

So what I vouch for is a default mapping, that is all.

A default mapping to names such as "wireless0" "ethernet0". People could
also think about renaming "lo" to "loopback".


More information about the systemd-devel mailing list