Systemd/networkd: Difference between revisions

imported>Mweinelt
imported from old wiki
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Systemd/breadcrumb}}
{{DISPLAYTITLE:systemd-networkd}}
{{DISPLAYTITLE:systemd-networkd}}
[https://www.freedesktop.org/software/systemd/man/systemd-networkd.html systemd-networkd] is the network[[Category: Networking]] configuration component of the [[systemd]][[Category:systemd]] software suite. It is well integrated into NixOS below {{Nixos:option|systemd.network}} and should be preferred over {{Nixos:option|networking.interfaces}} options for most use cases, since it receives far superior maintenance.
[https://www.freedesktop.org/software/systemd/man/systemd-networkd.html systemd-networkd] is the network configuration component of the [[systemd]][[Category:systemd]] software suite. It is well integrated into NixOS below {{Nixos:option|systemd.network}} and should be preferred over {{Nixos:option|networking.interfaces}} options for most use cases, since it receives far superior maintenance.


Configuration for networkd is split into three sections.
Configuration for networkd is split into three sections.
Line 28: Line 29:
These use cases are better served by [[NetworkManager]] and its various frontends, that provides a better integrated user experience for various desktop systems.
These use cases are better served by [[NetworkManager]] and its various frontends, that provides a better integrated user experience for various desktop systems.


{{Note|Both systemd-networkd and NetworkManager can exist in parallel on the same machine,
{{Note|Both systemd-networkd and NetworkManager can exist in parallel on the same machine, when they manage a distinct set of interfaces. If upstream connectivity is managed by NetworkManager (for example, NM handles wifi and networkd does VM networking), set {{Nixos:option|systemd.network.wait-online.enable}} to false so that boot isn't blocked on connectivity that networkd will never provide.}}
when they manage a distinct set of interfaces.}}


=== Enabling ===
=== Enabling ===
Line 177: Line 177:
     matchConfig.Name = "enp1s0";
     matchConfig.Name = "enp1s0";
     address = [
     address = [
        # configure addresses including subnet mask
      # configure addresses including subnet mask
        "192.0.2.100/24"
      "192.0.2.100/24"
        "2001:DB8::2/64"
      "2001:DB8::2/64"
     ];
     ];
     routes = [
     routes = [
       # create default routes for both IPv6 and IPv4
       # create default routes for both IPv6 and IPv4
       { routeConfig.Gateway = "fe80::1"; }
       { Gateway = "fe80::1"; }
       { routeConfig.Gateway = "192.0.2.1"; }
       { Gateway = "192.0.2.1"; }
       # or when the gateway is not on the same network
       # or when the gateway is not on the same network
       { routeConfig = {
       {
         Gateway = "172.31.1.1";
         Gateway = "172.31.1.1";
         GatewayOnLink = true;
         GatewayOnLink = true;
       }; }
       }
     ];
     ];
     # make the routes on this interface a dependency for network-online.target
     # make the routes on this interface a dependency for network-online.target
Line 278: Line 278:
       # Configure the bridge for its desired function
       # Configure the bridge for its desired function
       "40-br0" = {
       "40-br0" = {
         matchConfig.Name ="br0";
         matchConfig.Name = "br0";
         bridgeConfig = {};
         bridgeConfig = {};
         # Disable address autoconfig when no IP configuration is required
         # Disable address autoconfig when no IP configuration is required
Line 343: Line 343:
       "30-lan" = {
       "30-lan" = {
         matchConfig.Name = "lan";
         matchConfig.Name = "lan";
         address = [
         address = [ "2001:db8:1122:3344::1/64" ];
          "2001:db8:1122:3344::1/64"
        ];
         networkConfig = {
         networkConfig = {
           IPv6SendRA = true;
           IPv6SendRA = true;
         };
         };
         ipv6Prefixes = [ {
         ipv6Prefixes = [
          # Announce a static prefix
          {
          ipv6PrefixConfig.Prefix = "2001:db8:1122:3344::/64";
            # Announce a static prefix
         } ];
            ipv6PrefixConfig.Prefix = "2001:db8:1122:3344::/64";
          }
         ];
         ipv6SendRAConfig = {
         ipv6SendRAConfig = {
           # Provide a DNS resolver
           # Provide a DNS resolver
Line 359: Line 359:
         };
         };
       };
       };
    };
   };
   };
</syntaxhighlight>
</syntaxhighlight>
Line 376: Line 377:


* [https://gist.github.com/mweinelt/b78f7046145dbaeab4e42bf55663ef44 NixOS 22.11 VDSL Router (VLANs on top of Bonding, IPv6 Prefix-Delegation, pppd Integration)] by [https://github.com/mweinelt mweinelt]
* [https://gist.github.com/mweinelt/b78f7046145dbaeab4e42bf55663ef44 NixOS 22.11 VDSL Router (VLANs on top of Bonding, IPv6 Prefix-Delegation, pppd Integration)] by [https://github.com/mweinelt mweinelt]
[[Category:systemd]]
[[Category:Networking]]