Systemd/networkd: Difference between revisions
imported>Mweinelt |
imported from old wiki |
||
(10 intermediate revisions by 6 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 | [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 | |||
"192.0.2.100/24" | |||
"2001:DB8::2/64" | |||
]; | ]; | ||
routes = [ | routes = [ | ||
# create default routes for both IPv6 and IPv4 | # create default routes for both IPv6 and IPv4 | ||
{ | { Gateway = "fe80::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 | ||
{ | |||
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 | # Disable address autoconfig when no IP configuration is required | ||
networkConfig.LinkLocalAddressing = | #networkConfig.LinkLocalAddressing = "no"; | ||
linkConfig = { | linkConfig = { | ||
# or "routable" with IP addresses configured | # or "routable" with IP addresses configured | ||
Line 343: | Line 343: | ||
"30-lan" = { | "30-lan" = { | ||
matchConfig.Name = "lan"; | matchConfig.Name = "lan"; | ||
address = [ | address = [ "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"; | |||
} | |||
]; | |||
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]] |