Ubuntu 16.10 Yakkety Yak
Ubuntu 16.04 Xenial Xerus
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
systemd-networkd ist der Netzwerkdaemon von systemd. systemd-networkd konfiguriert vorhandene und neu entdeckte Netzwerkschnittstellen, einschließlich virtueller Schnittstellen. Ebenso werden Konfigurationen für Container über systemd-nspawn oder virtuelle Maschinen ermöglicht.
Sowohl systemd-networkd, als auch der zugehörige Dienst systemd-resolved, starten bei Ubuntu nicht standardmäßig mit und müssen manuell aktiviert werden!
Da systemd-networkd derzeit noch nicht vollständig implementiert ist, ist dessen Nutzung als experimentell anzusehen!
systemd-networkd ist auf allen aktuellen (>=15.04) Ubuntu-Installationen bereits vorinstalliert und ein fester Bestandteil von systemd.
Zunächst müssen alle bestehenden Konfigurationen entfernt werden.
sudo apt-get --purge autoremove network-manager network-manager-gnome
Bei KDE kommt plasma-nm
statt network-manager-gnome
zum Einsatz, welches aber durch die Deinstallation automatisch entfernt wird.
Bei der Deinstallation von connman muss der Dienst zunächst manuell beendet, der Service entfernt und dann erst die Pakete deinstalliert werden.
1 2 3 4 5 6 | #deaktivieren von connman sudo killall connmand #beenden und löschen des services sudo systemctl stop connman.service sudo systemctl disable connmann.service #Fehler aus den Runleveln können ignoriert werden |
Die Datei /etc/network/interfaces sollte nur folgende Zeilen enthalten:
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback
Falls man die /etc/resolv.conf verändert hat, so ist diese zu sichern und anschliessend mittels
sudo rm /etc/resolv.conf
zu löschen. Diese wird durch einen Symlink von systemd-resolved ersetzt.
Um systemd-networkd nutzen zu können, müssen zwei Dienste gestartet und aktiviert werden.
systemctl start systemd-networkd.service systemctl start systemd-resolved.service
um die Dienste zu starten,
systemctl enable systemd-networkd.service systemctl enable systemd-resolved.service
um sie beim Start des Systems automatisch zu laden.
systemd-resolved ist dabei für die Namensauflösung zuständig. Wie oben bereits erwähnt muss ein Symlink zur /etc/resolv.conf gesetzt werden, um Abwärtskompatibilität zu gewährleisten.
sudo ln -s /var/run/systemd/resolve/resolv.conf /etc/resolv.conf
Die Konfigurationsdateien liegen unter /usr/lib/systemd/network, während der Laufzeit unter /run/systemd/network und die mit der höchsten Priorität unter /etc/systemd/network. Daher sollten Änderungen immer in letztgenanntem Verzeichnis getätigt werden. Nur diese Konfigurationen bleiben auch bei einem möglichen Upgrade erhalten. Falls eine der Konfigurationsdateien fehlt, so kann man diese aus dem usr-Pfad nach etc kopieren und dort anpassen. Für diese Kopiervorgänge sind root-Rechte[1] nötig.
In den genannten Verzeichnissen finden sich drei Arten von Konfigurationsdateien, die man anhand ihrer Endung unterscheiden kann.
.network konfigurieren ein oder mehrere passende Geräte/Netzwerkschnittstellen.
.netdev zum erstellen virtueller Netzwerke.
.link sind Schnittstellendateien zu udev, welches nach der zuerst zutreffenden Link-Datei sucht.
Alle Dateien obliegen den selben Regeln wie andere systemd-Konfigurationen und folgen dem Ini-Format.
Ein Auszug der Optionen finden sich in der nachfolgenden Tabelle.
Optionen für systemd-networkd | |
Eintrag | Beschreibung |
[MATCH] | |
MacAddress | Die Hardware-Adresse der Schnittstelle. |
Path | Eine mit Leerzeichen getrennte Liste der udev-Eigenschaft "ID_PATH". |
Driver | Eine mit Leerzeichen getrennte Liste der udev-Eigenschaft "DRIVER". |
Type | Eine mit Leerzeichen getrennte Liste der udev-Eigenschaft "DEVTYPE". |
Name | Eine mit Leerzeichen getrennte Liste der udev-Eigenschaft "INTERFACE". |
Host | Hostname (return-Wert von gethostname ) oder MachineID (/etc/machine-id) des hosts. |
Virtualization | Dient zur Prüfung ob das System virtualisiert ist. Verfügbare Liste:qemu, kvm, zvm, vmware, microsoft, oracle, xen, bochs, uml, openvz, lxc, lxc-libvirt, systemd-nspawn, docker, rkt |
KernelCommandLine | Überprüft, ob eine spezifische KernelCommandLine gesetzt wurde. |
Architecture | Prüfe auf bestimmte Architektur. Derzeit unterstützt: x86, x86-64, ppc, ppc-le, ppc64, ppc64-le, ia64, parisc, parisc64, s390, s390x, sparc, sparc64, mips, mips-le, mips64, mips64-le, alpha, arm, arm-be, arm64, arm64-be, sh, sh64, m86k, tilegx, cris |
[LINK] | |
MACAddress | Die Hardware-Adresse der Schnittstelle. |
MTUBytes | Die maximale Übertragungsrate in Bytes. Die üblichen Suffixe wie K, M, G sind unterstützt und nutzen die Basis 1024. |
[NETWORK] | |
Description | Beschreibung der Schnittstelle. Dies dient nur der Darstellung. |
DHCP | DHCP kann hier eingestellt werden. Mögliche Werte: yes, no, ipv4, ipv6 |
Address | Dient zum setzen einer statischen ipv4 oder ipv6-Adresse und ihrer Prefix-Länge. Beispiel für Netmask 255.255.255.0 wäre Address=192.168.1.2/24. |
Gateway | Eine Mehrfachangabe dieser Option ist möglich. Hier kann eine Gateway-Adresse angegeben werden. Mehr Optionen bietet die Sektion [Route]. |
DNS | Der DNS-Server für die Namensauflösung wird hier eingetragen. Eine Mehrfachangabe dieser Option ist möglich. Der systemd-resolved.service nutzt diesen Wert. |
NTP | Hier kann eine NTP-Serveradresse angegeben werden. Eine Mehrfachangabe dieser Option ist möglich. Der systemd-timesyncd.service nutzt diesen Wert. |
DHCPServer | Standardwert no. Falls ein DHCPServer konfiguriert werden soll, findet man weitere Informationen in der [DHCPServer]-Sektion der Manpage von systemd-networkd. |
[ADDRESS] | |
Address | Dient zum setzen einer statischen ipv4 oder ipv6-Adresse und ihrer Prefix-Länge. Beispiel für Netmask 255.255.255.0 wäre Address=192.168.1.2/24. |
Peer | Die Adresse einer point-to-point Verbindung. Diese Adresse hat den selben Aufbau wie Address. |
Broadcast | Dieser Wert ist ausschließlich für ipv4-Verbindungen und legt die Broadcast-Adresse fest. Falls nicht angegeben, wird die Adresse automatisch von Address abgeleitet. |
Label | Ein Bezeichner für die Adresse. |
Weiterführende Informationen zu Sektionen, möglichen Werten und Aufteilungen finden sich in der Manpage, welche über
man systemd.network(5)
angezeigt werden kann.
Alle Konfigurationen werden unter /etc/systemd/network/[Nummer]-[Bezeichnung].network angelegt. Die Bezeichner sind dabei zwar frei wählbar, sollten aber erkennen lassen, wozu sie da sind. Die Priorität wird durch die Nummernfolge festgelegt.
Möglicher Dateiname: /etc/systemd/network/60-dhcp.network
[Match] Name=en* [Network] DHCP=yes
Möglicher Dateiname: /etc/systemd/network/50-dhcp-enp2s0.network
[Match] Name=enp2s0 [Network] DHCP=yes
Möglicher Dateiname: /etc/systemd/network/40-dhcpv6-staticV4.network
[Match] Name=enp2s0 [Network] DHCP=ipv6 Address=192.168.1.20/24 Gateway=192.168.1.1 DNS=8.8.8.8 DNS=8.8.4.4
WLAN-Schnittstellen werden nicht direkt von systemd-networkd verwaltet, so dass eine Grundkonfiguration mit einem anderen Dienst wie wpa_supplicant benötigt wird. Im folgenden Beispiel wird dieser Dienst verwendet.
Die Konfigurationsdatei wird abweichend folgendermaßen benannt: wpa_supplicant-[Schnittstellenname].conf. Damit kann systemd-networkd die unterschiedlichen Konfigurationen separat steuern.
Eine Service-Unit für eine solche WLAN-Schnittstelle wird mittels wpa_supplicant@[Schnittstellename].service verwaltet.
Die Standarddatei /etc/systemd/system/wpa_supplicant@.service ist derzeit (Stand 08/2016) noch manuell mit folgendem Inhalt anzulegen:
[Unit] Description=Mein WPA-Service Wants=network.target Before=network.target BindsTo=sys-subsystem-net-devices-%i.device After=sys-subsystem-net-devices-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ip l set %i up ExecStart=/sbin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant/wpa_supplicant-%i.conf ExecStart=/sbin/dhclient %i ExecStop=/sbin/ip l set %i down [Install] WantedBy=multi-user.target
Durch das %i wird dies zur allgemeinen Service-Unit und ersetzt beim Aufruf wpa_supplicant@[Schnittstellename].service das %i durch die tatsächlich verwendete Schnittstelle.
Diese Dienste müssen wie der Standarddienst ebenfalls erst aktiviert werden. Als Beispiel dient hier die Schnittstelle wlp2s0.
systemctl start wpa_supplicant.service systemctl start wpa_supplicant@wlp2s0.service
um die Dienste zu starten,
systemctl enable wpa_supplicant.service systemctl enable wpa_supplicant@wlp2s0.service
um sie beim Start des Systems automatisch zu laden.
Ob der Service sauber startet, kann wie gewohnt mittels systemctl status wpa_supplicant@wlp2s0.service
erfragt werden.
Die statische IP wird ebenso wie die Kabel-IP als network-Datei angelegt.
Möglicher Dateiname: /etc/systemd/network/40-static-wireless.network
[Match] Name=wlp2s0 [Network] DHCP=no Address=192.168.1.20/24 Gateway=192.168.1.1
Möglicher Dateiname: /etc/systemd/network/10-enp2s0-eth0.network
[Match] MACAddress=12:34:56:78:90:ab [Link] Description=Benutze alten Namen für die Standardschnittstelle. Name=eth0
Alle Netzwerkschnittstellen beginnend mit en werden automatisch per DHCP konfiguriert.
1 2 3 4 5 | #!/bin/bash for service in networkd resolved; do systemctl enable systemd-$service; systemctl start systemd-$service; done rm /etc/resolv.conf; ln -s /var/run/systemd/resolve/resolv.conf /etc/resolv.conf printf "[Match]\nName=en*\n\n[Network]\nDHCP=both" > /etc/systemd/network/default.network systemctl restart systemd-networkd |
Dieses Script muss gemacht[5] und mit root-Rechten[1] gestartet werden.
Falls DNS unter systemd-resolved nicht funktioniert, muss in der Datei /etc/nsswitch.conf noch der Eintrag dns unter hosts: durch resolve ersetzt werden.
Beispiel:
#ALT hosts: files mdns4_minimal [NOTFOUND=return] dns #NEU hosts: files mdns4_minimal [NOTFOUND=return] resolve
Diese Revision wurde am 10. November 2016 18:21 von ChickenLipsRfun2eat erstellt.