From 5e37e1f309cf1d7306f44d3418744bd8ffd93881 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 21 Aug 2025 21:31:13 -0500 Subject: [PATCH] (new-post): from systemd-networkd to NetworkManager --- _imgs/networkmanager.jpg | Bin 0 -> 39274 bytes ...from-systemd-networkd-to-networkmanager.md | 88 ++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 _imgs/networkmanager.jpg create mode 100644 _posts/2025-08-21-from-systemd-networkd-to-networkmanager.md diff --git a/_imgs/networkmanager.jpg b/_imgs/networkmanager.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3b1c58a401ccf95f725968a46b5d41a4da1530a7 GIT binary patch literal 39274 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 /var/run/xl2tpd/l2tp-control +# Give xl2tpd some time to establish the connection +sleep 5 +for route in ${ROUTES[@]}; do + ip route add "$route" via "$GATEWAY_IP" dev ppp0 +done +``` + +Then I had to simply start the vpn service and everything was set up automatically. It worked fine for many time, where I had 2/3 VPNs to manage, but recently I needed to connect to more VPNs, a total of 7. Things got complicated quickly, and modifying every service and script became a hassle. As I couldn't easily change the route metric per VPN, because the VPN devices are randomly assigned at the moment of the connection, I decided to look for alternatives, which obviously led me to NetworkManager. + +A special mention, is that my wireless setup was `iwd` + `systemd-networkd`, which required me to manually run `iwctl`, scan, see available networks, and connect to them. I do some wireless testing for work which requires me to frequently change networks and configurations, so this was not ideal as well. + +## NetworkManager + +It's almost the de-facto standard for managing network connections on Linux desktops. Almost every desktop environment or window manager integrates with it, directly like Gnome does, or indirectly through various applets and tools. I use [Gnome + Wayland as my DE](https://www.edu4rdshl.dev/posts/my-move-to-wayland-it-s-finally-ready/), so the integration with NetworkManager is seamless. Here are the things that I love from NetworkManager: + +- **Ease of use**: The CLI/TUI and graphical interfaces make it easy to manage connections without diving into configuration files. This is because the rich D-Bus API allows for dynamic updates and changes. +- **VPN management**: NetworkManager has built-in support for various VPN technologies, and community plugins extend this support even further. It makes configuring and managing VPN connections much simpler. +- **Dynamic routing**: It can automatically adjust routes based on the type of active connections, simplifying the management of complex networking setups. +- **Sane defaults**: NetworkManager comes with sensible default configurations that work for most users, reducing the need for manual adjustments. For example, it does default to a route metric of 50 for VPNs and 100 for regular connections. +- **Wireless management**: Wireless management is greatly simplified with NetworkManager. It can handle scanning, connecting, and managing Wi-Fi networks without the need for manual intervention. You can choose between the `iwd` and `wpa_supplicant` backends, depending on your preference. +- **Integration with systemd**: NetworkManager integrates very well with systemd, allowing you to use systemd-resolved for DNS resolution. This aligns with my existing setup. + +It took me a few minutes to migrate all my VPN connections to NetworkManager. No more manual routing (due to the dynamic route-metric handling), one-click activation, and everything just works. Do I want to add a new VPN? Just a few clicks in the GUI, and I'm done. + +### Tips and tricks + +- **Use the CLI**: NetworkManager's command-line interface (`nmcli`) is powerful and allows for scripting and automation. Familiarize yourself with it to make the most of your VPN connections. Understanding the options available in `nmcli` can help you fine-tune your setup. +- **Explore plugins**: NetworkManager supports various plugins for different VPN technologies. Explore these to enhance your VPN experience. +- **Use the dispatcher system**: NetworkManager's dispatcher system allows you to run scripts in response to network events. This can be useful for automating tasks when a connection is established or disconnected. +- **For systemd-resolved**: Make sure to not set global DNS servers in `/etc/systemd/resolved.conf{,.d}`, as this can interfere with NetworkManager's DNS management. The same applies for options such as `DNSOverTLS=`/`DNSSEC=`, if your current VPN DNS doesn't support them, you will end up with connectivity issues. +- **Set ipv4.route-metric/ipv4.dns-priority**: You can fine-tune the routing and DNS settings for each connection by adjusting the `ipv4.route-metric` and `ipv4.dns-priority` properties. +- **Check the documentation**: NetworkManager has extensive documentation available. If you encounter issues or need to configure advanced settings, refer to the official documentation for guidance. I recommend checking `man nm-settings` and the [NetworkManager Docs](https://networkmanager.dev/docs/). + +## Conclusion + +Migrating from systemd-networkd to NetworkManager has significantly improved my network management experience on my desktop (I will still use systemd-networkd for my server). The dynamic routing capabilities, ease of use, and seamless integration with my desktop environment have made it a worthwhile transition. Thank you, systemd-networkd for your service, but I think I will be sticking with NetworkManager for the foreseeable future. + +Happy networking! \ No newline at end of file