Personally, I will use both: On servers with fixed network connections I will tend to use ifupdown; but on my linux laptops I'll use networkmanager or networkd which tend to have nice UI's for joining various forms of wifi networks. On my laptops for some VPN's i"ll use the ifupdown configuration, which lets me setup all sorts of exotic configurations (bridges, vlans, vxlan,, vpns, namespaces, etc.) The linux command line tooling has a litany of functions to check/test/diagnose/tweak networking settings, and they work across all the distros, AND they can reveal the full details of the network, as the kernel sees it. NetworkManager, networkd, connmann, etc, often omit details in the name of simplifying for the most common scenarios.
Selfhosted
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
First thing I do after every server Debian install: remove that old networking, remove chrony, install systemd-networkd, systemd-resolved, systemd-timesyncd. Why? Because 1) you get a way cleaner system that runs less processes to do the same and 2) systemd-* is better.
Thanks for your reply! One thing I'm struggling with networkd is hysteresis. That is, toggling the interface down and then back up does not do what I expect it to. That is, setting the interface down does not clear up the configuration, and setting the interface up does not reconfigure the interface. I have to run reconfigure for that. I was hoping that the declarative approach of networkd would make it easy to predict interface state and configuration.
This does make sense because configuration is not the same as operational state. However, what would the equivalent of ifdown (set interface down and remove configuration) and ifup (set interface up and reconfigure) be using networkd and networkctl? This kind of feature would be useful for me to test config changes, debug networking issues, disconnect part of the network while I'm making some changes, etc.
I get your points and that's a valid issue however, systemd-networkd
is designed for more persistent configurations but you've a few options:
-
systemctl reload systemd-networkd
andnetworkctl reload
. Don't forget that if you change units on the filesystem asystemctl daemon-reload
is required before the previous commands. -
networkctl
commands such asreload
,reconfigure
,up
,down
andrenew
. Read more about them here. -
Temporary / volatile runtime units: manually drop a config under
/run/systemd/network/
it will apply until you reboot the machine. -
Transient scope units: those are kind of supersede temporary units as they are managed through a D-Bus interface so 3rd party applications can manage systemd. They don't seem to work right now for network, but this allows you to change unit options dynamically.
An interesting thing to consider is that in most cases you can have your network configurations in /etc/systemd/network
but only bring them online when required. This for me seems to solve most cases, you've your network all configured and ready to go.
I'm using ifupdown2 and have services depending on the state of virtual network devices (BindsTo=sys-devices-virtual-net-.device).
I hate systemd with a passion, as the refuses to wait for networking when you haven some service specified to be started After networking, but it start when the start of networking actions has sbeen tarted (not after networking is finished bringing up everything)
The only think I let systemd do is monitor the state of the devices and set the interface name, as udev seems to mess these names up in combination with systemd (and there is to much depending on systemd now in Debian to get rid of the junk)
I hate systemd with a passion, as the refuses to wait for networking when you haven some service specified to be started After networking
If you apply what is written at https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#cutthecraphowdoimakesurethatmyservicestartsafterthenetworkisreallyonline it will work.
Systemd-networkd has a learning curve, once you learn it you'll find it superior and more flexible than anything else.
If you apply what is written at https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#cutthecraphowdoimakesurethatmyservicestartsafterthenetworkisreallyonline it will work.
Then I'll need to do a global rewrite of all distrubution delivered service files and replace network.target with network-online.target. Then I don't understand why maintainers all keep using network.target. For every service that needs some kund of netwirj active I alkready have iverrides to link then to the virtual or physical interfaces they actually use.
Systemd-networkd has a learning curve, once you learn it you’ll find it superior and more flexible than anything else.
I still find it a solution desperately looking for a problem to solve. Yes, you can control loads of dependencies, but you could already do that with the init scripts. The main selling point on introduction was 'it is faster'. Why would you want something faster when you use it once every kernel update? When you design your solutions correctly (redundant), you won't even notice a reboot of 1 system in the setup.