systemd.network
systemd
Developer
Tom
Gundersen
teg@jklm.no
systemd.network
5
systemd.network
Network configuration
network.network
Description
Network setup is performed by
systemd-networkd8.
Network files must have the extension
.network; other extensions are ignored.
Networks are applied to links whenever the links appear.
The .network files are read from the
files located in the system network directory
/usr/lib/systemd/network, the volatile
runtime network directory
/run/systemd/network and the local
administration network directory
/etc/systemd/network. All configuration files
are collectively sorted and processed in lexical order, regardless
of the directories in which they live. However, files with
identical filenames replace each other. Files in
/etc have the highest priority, files in
/run take precedence over files with the same
name in /usr/lib. This can be used to
override a system-supplied configuration file with a local file if
needed; a symlink in /etc with the same name
as a configuration file in /usr/lib, pointing
to /dev/null, disables the configuration file
entirely.
[Match] Section Options
The network file contains a [Match]
section, which determines if a given network file may be applied
to a given device; and a [Network] section
specifying how the device should be configured. The first (in
lexical order) of the network files that matches a given device
is applied.
A network file is said to match a device if each of the
entries in the [Match] section matches, or if
the section is empty. The following keys are accepted:
MACAddress=
The hardware address.
Path=
The persistent path, as exposed by the udev
property ID_PATH. May contain shell
style globs.
Driver=
The driver currently bound to the device, as
exposed by the udev property DRIVER
of its parent device, or if that is not set the driver
as exposed by ethtool -i of the
device itself.
Type=
The device type, as exposed by the udev property
DEVTYPE.
Name=
The device name, as exposed by the udev property
INTERFACE. May contain shell style
globs.
Host=
Matches against the hostname or machine ID of the
host. See ConditionHost= in
systemd.unit5
for details.
Virtualization=
Checks whether the system is executed in a virtualized
environment and optionally test whether it is a specific
implementation. See ConditionVirtualization= in
systemd.unit5
for details.
KernelCommandLine=
Checks whether a specific kernel command line option is
set (or if prefixed with the exclamation mark unset). See
ConditionKernelCommandLine= in
systemd.unit5
for details.
Architecture=
Checks whether the system is running on a specific
architecture. See ConditionArchitecture= in
systemd.unit5
for details.
[Link] Section Options
The [Link] section accepts the following keys:
MACAddress=
The hardware address.
MTUBytes=
The maximum transmission unit in bytes to set for the
device. The usual suffixes K, M, G, are supported and are
understood to the base of 1024.
[Network] Section Options
The [Network] section accepts the following keys:
Description=
A description of the device. This is only used for
presentation purposes.
DHCP=
Enables DHCPv4 and/or DHCPv6 support. Accepts
yes, no,
ipv4, or ipv6.
DHCPServer=
A boolean. Enables a basic DHCPv4 server on the
device. Mostly useful for handing out leases to container
instances.
LinkLocal=
Enables link-local address autoconfiguration. Accepts
yes, no,
ipv4, or ipv6. Defaults to
ipv6.
IPv4LLRoute=
A boolean. When true, sets up the route needed for
non-IPv4LL hosts to communicate with IPv4LL-only hosts. Defaults
to false.
LLMNR=
A boolean or resolve. When true, enables
Link-Local Multicast Name Resolution on the link, when set to
resolve only resolution is enabled, but not
announcement. Defaults to true.
LLDP=
A boolean. When true, enables LLDP link receive support.
Address=
A static IPv4 or IPv6 address and its prefix length,
separated by a / character. Specify
this key more than once to configure several addresses.
The format of the address must be as described in
inet_pton3.
This is a short-hand for an [Address] section only
containing an Address key (see below). This option may be
specified more than once.
If the specified address is 0.0.0.0 (for IPv4) or
[::] (for IPv6), a new address range of the requested size
is automatically allocated from a system-wide pool of
unused ranges. The allocated range is checked against all
current network interfaces and all known network
configuration files to avoid address range conflicts. The
default system-wide pool consists of 192.168.0.0/16,
172.16.0.0/12 and 10.0.0.0/8 for IPv4, and fc00::/7 for
IPv6. This functionality is useful to manage a large
number of dynamically created network interfaces with the
same network configuration and automatic address range
assignment.
Gateway=
The gateway address, which must be in the format
described in
inet_pton3.
This is a short-hand for a [Route] section only containing
a Gateway key. This option may be specified more than
once.
DNS=
A DNS server address, which must be in the format
described in
inet_pton3.
This option may be specified more than once.
Domains=
The domains used for DNS resolution over this link.
NTP=
An NTP server address. This option may be specified more than once.
IPForward=
Configures IP forwarding for the network
interface. If enabled incoming packets on the network
interface will be forwarded to other interfaces according to
the routing table. Takes either a boolean argument, or the
values ipv4 or ipv6,
which only enables IP forwarding for the specified address
family.
IPMasquerade=
Configures IP masquerading for the network
interface. If enabled packets forwarded from the network
interface will be appear as coming from the local host.
Takes a boolean argument. Implies
IPForward=yes.
Bridge=
The name of the bridge to add the link to.
Bond=
The name of the bond to add the link to.
VLAN=
The name of a VLAN to create on the link. This
option may be specified more than once.
MACVLAN=
The name of a MACVLAN to create on the link. This
option may be specified more than once.
VXLAN=
The name of a VXLAN to create on the link. This
option may be specified more than once.
Tunnel=
The name of a Tunnel to create on the link. This
option may be specified more than once.
[Address] Section Options
An [Address] section accepts the
following keys. Specify several [Address]
sections to configure several addresses.
Address=
As in the [Network] section. This
key is mandatory.
Peer=
The peer address in a point-to-point connection.
Accepts the same format as the Address
key.
Broadcast=
The broadcast address, which must be in the format
described in
inet_pton3.
This key only applies to IPv4 addresses. If it is not
given, it is derived from the Address
key.
Label=
An address label.
[Route] Section Options
The [Route] section accepts the
following keys. Specify several [Route]
sections to configure several routes.
Gateway=
As in the [Network] section.
Destination=
The destination prefix of the route. Possibly
followed by a slash and the prefixlength. If omitted, a
full-length host route is assumed.
Source=
The source prefix of the route. Possibly followed by
a slash and the prefixlength. If omitted, a full-length
host route is assumed.
Metric=
The metric of the route. An unsigned integer
Scope=
The scope of the route. One of the values global,
link or host. Defaults to
global.
[DHCP] Section Options
The [DHCP] section accepts the following keys:
UseDNS=
When true (the default), the DNS servers received
from the DHCP server will be used and take precedence over
any statically configured ones.
UseMTU=
When true, the interface maximum transmission unit
from the DHCP server will be used on the current link.
Defaults to false.
SendHostname=
When true (the default), the machine's hostname will be sent to the DHCP
server
UseHostname=
When true (the default), the hostname received from
the DHCP server will be used as the transient
hostname.
UseDomains=
When true (not the default), the domain name
received from the DHCP server will be used for DNS
resolution over this link.
UseRoutes=
When true (the default), the static routes will be
requested from the DHCP server and added to the routing
table with metric of 1024.
CriticalConnection=
When true, the connection will never be torn down
even if the DHCP lease expires. This is contrary to the
DHCP specification, but may be the best choice if, say,
the root filesystem relies on this connection. Defaults to
false.
VendorClassIdentifier=
The vendor class identifier used to identify vendor
type and configuration.
RequestBroadcast=
Request the server to use broadcast messages before
the IP address has been configured. This is necessary for
devices that cannot receive RAW packets, or that cannot
receive packets at all before an IP address has been
configured. On the other hand, this must not be enabled on
networks where broadcasts are filtered out.
RouteMetric=
Set the routing metric for routes specified by the
DHCP server.
[Bridge] Section Options
The [Bridge] section accepts the
following keys.
Cost=
Each port in a bridge may have different speed. Cost
is used to decide which link to use. Faster interfaces
should have lower costs
[BridgeFDB] Section Options
The [BridgeFDB] section manages the
forwarding database table of a port and accepts the following
keys. Specify several [BridgeFDB] sections to
configure several static MAC table entries.
MACAddress=
As in the [Network] section. This
key is mandatory.
VLANId=
The VLAN Id for the new static MAC table entry. If
omitted, no VLAN Id info is appended to the new static MAC
table entry.
Example
/etc/systemd/network/50-static.network
[Match]
Name=enp2s0
[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1
/etc/systemd/network/80-dhcp.network
[Match]
Name=en*
[Network]
DHCP=both
/etc/systemd/network/bridge-static.network
[Match]
Name=bridge0
[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1
DNS=192.168.0.1
/etc/systemd/network/bridge-slave-interface.network
[Match]
Name=enp2s0
[Network]
Bridge=bridge0
/etc/systemd/network/ipip.network
[Match]
Name=em1
[Network]
Tunnel=ipip-tun
/etc/systemd/network/sit.network
[Match]
Name=em1
[Network]
Tunnel=sit-tun
/etc/systemd/network/gre.network
[Match]
Name=em1
[Network]
Tunnel=gre-tun
/etc/systemd/network/vti.network
[Match]
Name=em1
[Network]
Tunnel=vti-tun
See Also
systemd1,
systemd-networkd8,
systemd.link5,
systemd.netdev5