In the Nanog email list, the following was posted as a summary of current tooling use for network management in Debian:
Linux has a bunch of different possible ways to administer all of this stuff.
- The most comprehensive CLI mechanism is iproute2 (the “ip” command and some related constructs).
- The most comprehensive and capable persistent configuration database mechanism is systemd-networkd.
Other persistent mechanisms include:
- Netplan (YAML based configurations that now days mostly get parsed into systemd-networkd files and then executed).
- Debian Traditional (the /etc/network/interfaces file and/or interfaces.d directory, ifup/ifdown/etc.). Lacks many features, but most can be worked around with iproute2 shell commands added to triggers in the file.
- Debian Traditional can be supplemented with ifupdown2 - ifupdown replacement from Cumulus Networks
- NetworkManager (semi-capable, but any capabilities it lacks are just hard to cope with).
My strong recommendation is take the time to learn systemd-networkd and use it. It’s a bit of a pain and some of the syntax can be arcane and frustrating. It’s also annoying the way it dithers the configuration for a given interface across a multitude of files in some cases. However, when I think the obvious corner cases through and consider the alternatives, I usually find myself realizing that they’ve probably made as good a choice as any for what needs to be done.
Overall, it’s a pretty comprehensive interface and provides good logs for troubleshooting in most circumstances.


