|
|
| Zeile 49: |
Zeile 49: |
| </noinclude> | | </noinclude> |
| = TMP = | | = TMP = |
| === Programm-Einstellungen ===
| |
| Die Hauptkonfigurationsdatei '''/etc/systemd/networkd.conf''' dokumentiert primär die bei der Übersetzung des Programms definierte Voreinstellung
| |
| * Man darf diese Datei abändern; dabei sollte man die Kommentare füt die Voreinstellungen erhalten, weil man sonst keine Dokumentation über die Voreinstellung mehr hat
| |
| * Alternativ kann man die hier folgend beschriebenen weiteren Konfigurationsdateien verwenden
| |
|
| |
|
| ; Verzeichnisse
| |
| Nach der Hauptkonfigurationsdatei werden noch alle auf '''.conf''' endenden Dateien in diesen Verzeichnissen (sofern existierend) berücksichtigt
| |
| * '''/usr/lib/systemd/networkd.conf.d/'''
| |
| * '''/usr/local/lib/systemd/networkd.conf.d/'''
| |
| * '''/etc/systemd/networkd.conf.d/'''
| |
|
| |
| Dateien in später genannten Verzeichnissen maskieren gleichnamige Dateien in früher genannten Verzeichnissen und die Dateien werden in lexikographischer Reihenfolge bearbeitet
| |
|
| |
| ; Best Practice
| |
| Eine gute Praxis besteht im Kopieren der Datei '''/etc/systemd/networkd.conf''' in das Verzeichnis '''/etc/systemd/networkd.conf.d/''' (welches man möglicherweise erst anlegen muss) und Bearbeitung der Kopie
| |
|
| |
| ; Dokumentation
| |
| Die Einstellmöglichkeiten sind in der Datei aufgelistet und werden ausführlich in der Manpage erklärt
| |
| man networkd.conf
| |
|
| |
| === Schnittstellen-Einstellungen ===
| |
| Für die Konfiguration von Netzwerkschnittstellen werden Dateien in folgenden Verzeichnissen berücksichtigt
| |
| * '''/usr/lib/systemd/network/'''
| |
| * '''/usr/local/lib/systemd/network/'''
| |
| * '''/run/systemd/network/'''
| |
| * '''/etc/systemd/network/'''
| |
|
| |
| Dateien in später genannten Verzeichnissen maskieren gleichnamige Dateien in früher genannten Verzeichnissen und die Dateien werden in lexikographischer Reihenfolge bearbeitet
| |
|
| |
| In den genannten Verzeichnissen finden sich drei anhand ihrer Endung zu unterscheidenden Arten von Konfigurationsdateien
| |
| * '''.netdev''' zum erstellen virtueller Netzwerk-Schnittstellen
| |
| * '''.link''' konfigurieren Schnittstellen auf Layer 2
| |
| * Dies wird tatsächlich von [https://wiki.ubuntuusers.de/udev/ udev] erledigt
| |
| * '''.network''' konfigurieren Schnittstellen auf Layer 3
| |
|
| |
| Alle Dateien obliegen der [https://wiki.ubuntuusers.de/systemd/networkd/#Links Syntax in Konfigurationsdateien von systemd]
| |
| * Diese ähnelt dem [https://de.wikipedia.org/wiki/Initialisierungsdatei Ini-Format]
| |
|
| |
| man systemd.syntax
| |
|
| |
| Bei den Schlüsselworten für die Abschnittsnamen und die Einstellungsoptionen sind große und kleine Buchstaben bedeutsam
| |
| * Die möglichen Optionen und deren richtige Schreibweise können den Manpages entnommen werden
| |
|
| |
| man systemd.netdev
| |
| man systemd.link
| |
| man systemd.network
| |
|
| |
| Beachte: In den Manpages werden Abschnittsnamen in Versalien geschrieben, wenn sie als Überschrift verwendet werden
| |
| * In den Konfigurationsdateien ist aber durchweg der Abschnittsname in vorgeschriebener Verwendung von Groß-/Kleinbuchstaben zu schreiben
| |
|
| |
| Die nachfolgenden Tabellen listen auszugsweise die Schlüsselworte, soweit sie für das Verständnis der Beispiele in diesem Artikel erforderlich sind. ''Kursiv'' dargestellte Schlüsselworte sind ''Pflichtangaben''
| |
|
| |
| {| class="wikitable options big"
| |
| |-
| |
| | colspan="2" | Optionen für .netdev-Dateien
| |
| |-
| |
| || Schlüsselwort
| |
| || Beschreibung
| |
| |-
| |
| || [Match]
| |
| || Abschnitt optional
| |
| |-
| |
| || Host
| |
| || Hostname oder Maschinen-Kennung (engl: ''machine-id'') des Rechners
| |
| * Effektiv wird die Zeichenfolge mit '''/etc/hostname''' und '''/etc/machine-id''' verglichen
| |
| * Die machine-id kann aber auch beim Hochlauf temporär als Kernel Parameter gesetzt werden
| |
| |-
| |
| || Virtualization
| |
| || Prüft ob und ggf
| |
| * wie das System virtualisiert ist
| |
| * Mögliche Werte: no, yes, vm, container, qemu, kvm, zvm, vmware, microsoft, oracle, xen, bochs, uml, openvz, lxc, lxc-libvirt, systemd-nspawn, docker, rkt und ggf
| |
| * weitere
| |
| * Effektiv wird gegen die Ausgabe von '''systemd-detect-virt''' verglichen
| |
| |-
| |
| || KernelCommandLine
| |
| || Option auf der Kernel-Kommandozeile
| |
| * Vergleicht effektiv, ob '''/proc/cmdline''' die Angabe enthält
| |
| |-
| |
| || KernelVersion
| |
| || Kernel Version
| |
| * Vergleicht effektiv mit '''uname -r''', dabei sind auch Vergleiche auf größer-/kleiner-als und weitere möglich
| |
| |-
| |
| || Architecture
| |
| || Prüfe auf bestimmte Architektur
| |
| * Beispiele: 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
| |
| * Vergleicht effektiv mit '''uname -m'''
| |
| |-
| |
| || ''[NetDev]''
| |
| || Abschnitt obligatorisch
| |
| |-
| |
| || ''Name''
| |
| || Name der Schnittstelle
| |
| * Pflichtangabe
| |
| * Maximal 15 dieser zulässigen Zeichen: a-z, A-Z, 0-9 und Sonderzeichen: <tt>_ = + . -</tt>
| |
| |-
| |
| || ''Kind''
| |
| || Typ der Schnittstelle
| |
| * Pflichtangabe
| |
| * Beispiele: dummy, bridge, tun, wireguard und viele weitere, siehe Manpage
| |
|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable options big"
| |
| |-
| |
| | colspan="2" | Optionen für .link-Dateien
| |
| |-
| |
| || Schlüsselwort
| |
| || Beschreibung
| |
| |-
| |
| || [Match]
| |
| || Abschnitt optional, aber Verwendung dringend empfohlen
| |
| |-
| |
| || Beachte
| |
| || Die unter .netdev angegebenen Prüfungen sind auch hier möglich
| |
| |-
| |
| || Path
| |
| || Eine mit Leerzeichen getrennte Liste mit Werten für die udev-Eigenschaft <tt>ID_PATH</tt>
| |
| * Es wird geprüft, ob der tatsächliche Wert einem dar angegebenen Werten entspricht
| |
| |-
| |
| || Driver
| |
| || Eine mit Leerzeichen getrennte Liste mit Werten für die udev-Eigenschaft <tt>ID_NET_DRIVER</tt>
| |
| * Es wird geprüft, ob der tatsächliche Wert einem dar angegebenen Werten entspricht
| |
| |-
| |
| || Type
| |
| || Eine mit Leerzeichen getrennte Liste mit Werten für den von '''networkctl''' angezeigten Schnittstellentyp. (Achtung: Bei Version 237 sind nur die Werte der udev-Eigenschaft <tt>DEVTYPE</tt> zulässig!) Es wird geprüft, ob der tatsächliche Wert einem dar angegebenen Werten entspricht
| |
| |-
| |
| || Property
| |
| || Eine mit Leerzeichen getrennte Liste mit udev-Eigenschaft=Wert Angaben
| |
| * Es wird geprüft, ob für jede angegebene Eigenschaft tatsächlich der Wert dem hier angegebenen entspricht
| |
| |-
| |
| || MacAddress
| |
| || Eine mit Leerzeichen getrennte Liste mit MAC-Adressen
| |
| * Diese Option darf mehrfach angegeben werden; die Listen werden vereinigt
| |
| * Es wird geprüft, ob die momentan eingestellte Unicast-MAC-Adresse in der Gesamtliste vorkommt
| |
| |-
| |
| || PermanentMACAddress
| |
| || Eine mit Leerzeichen getrennte Liste mit permanenten [https://wiki.ubuntuusers.de/systemd/networkd/#Links EUI-48]
| |
| * Diese Option darf mehrfach angegeben werden; die Listen werden vereinigt
| |
| * Es wird geprüft, ob der Identifizierer der Hardware in der Gesamtliste vorkommt
| |
| |-
| |
| || ''[Link]''
| |
| || Abschnitt obligatorisch
| |
| |-
| |
| || NamePolicy
| |
| || Eine Liste mit Bezeichnern für die zur Benennung dieser Schnittstelle auszuprobierenden Methoden
| |
| * Bekannte Methoden: kernel, database, onboard, slot, path, mac, keep
| |
| |-
| |
| || Name
| |
| || Ein Name für die Schnittstelle
| |
| * Dieser wird verwendet, wenn keine der angegebenen Methoden zu Benennung erfolgreich war
| |
| * Maximal 15 dieser zulässigen Zeichen: a-z, A-Z, 0-9, und Sonderzeichen: <tt>_ = + . -</tt>
| |
| |-
| |
| || MACAddress
| |
| || Eine Unicast-MAC-Adresse, welche der Hardware zugewiesen wird
| |
| |-
| |
| || MTUBytes
| |
| || Die maximale Paketlänge in Bytes wird für Netzwerkebene 2 auf den hier abgegebenen Wert gesetzt Die üblichen Suffixe wie K, M, G dürfen verwendet werden und; sie werden zur Basis 1024 interpretiert
| |
|
| |
| |-
| |
| |}
| |
|
| |
| {| class="wikitable options big"
| |
| |-
| |
| | colspan="2" | Optionen für .network-Dateien
| |
| |-
| |
| || Eintrag
| |
| || Beschreibung
| |
| |-
| |
| || [Match]
| |
| || Abschnitt optional, aber Verwendung dringend empfohlen
| |
| |-
| |
| || Beachte
| |
| || Alle unter .link angegebenen Prüfungen sind auch hier möglich
| |
| |-
| |
| || Name
| |
| || Eine mit Leerzeichen getrennte Liste mit Mustern (Shell-Globs) für die Werte der udev-Eigenschaft <tt>INTERFACE</tt>
| |
| * Es wird geprüft, ob der tatsächliche Wert einem der Muster entspricht
| |
| |-
| |
| || WLANInterfaceType
| |
| || Eine mit Leerzeichen getrennte Liste von Betriebsarten der WLAN-Schnittstelle
| |
| * Beispiele: <tt>ad-hoc</tt>, <tt>station</tt>, <tt>ap</tt>
| |
| * Weitere siehe Manpage
| |
| * Es wird geprüft, ob die Betriebsart der Schnittstelle mit einem Listeneintrag übereinstimmt
| |
| |-
| |
| || [Link]
| |
| || Abschnitt optional
| |
| |-
| |
| || MACAddress
| |
| || Eine Unicast-MAC-Adresse, welche der Hardware zugewiesen wird
| |
| |-
| |
| || MTUBytes
| |
| || Die maximale Paketlänge in Bytes wird auf den hier angegebenen Wert gesetzt Die üblichen Suffixe wie K, M, G dürfen verwendet werden; sie werden zur Basis 1024 interpretiert
| |
| |-
| |
| || Unmanaged
| |
| || Vorgabe ist <tt>no</tt>
| |
| * Kann auf den Wert <tt>yes</tt> gesetzt werden, dann wird der Schnittstelle keine '''.network'''-Datei zugewiesen, weil die Suche nach passenden Dateien an dieser Stelle beendet wird
| |
| |-
| |
| || ''[Network]''
| |
| || Abschnitt obligatorisch
| |
| |-
| |
| || Description
| |
| || Beschreibung der Schnittstelle
| |
| * Dies dient nur der Darstellung
| |
| |-
| |
| || DHCP
| |
| || Mögliche Werte: <tt>yes</tt>, <tt>no</tt>, <tt>ipv4</tt>, <tt>ipv6</tt>
| |
| * Vorgabe ist <tt>no</tt>, d.h
| |
| * kein Start des DHCP-Client
| |
| * Anderer Wert startet den DHCP-Client das angegebene IP-Protokoll bzw. bei <tt>yes</tt> für beide Protokolle
| |
| * Der DHCPv6-Client kann aber auch unbeeinflusst von dieser Einstellung über empfangene Ankündigungen des Routers gestartet werden
| |
| * Wenn man den DHCP-Client einschaltet, kann man in den Abschnitten <tt>[DHCPv4]</tt> bzw. <tt>[DHCPv6]</tt> dessen Verhalten konfigurieren
| |
| |-
| |
| || DHCPServer
| |
| || Standardwert <tt>no</tt>
| |
| * Kann auf <tt>yes</tt> gesetzt werden und startet dann einen DHCPv4-Server
| |
| * Dieser wird im Abschnitt [DHCPServer] konfiguriert
| |
| |-
| |
| || Address
| |
| || Kurzform für einen Abschnitt <tt>[Address]</tt> zur Definition einer IP-Adresse und deren Prefix-Länge für ein Broadcast.Netzwerk
| |
| * Kann verwendet werden, wenn man in einem Abschnitt <tt>[Address]</tt> nur den Schlüssel <tt>Address</tt> benötigt
| |
| * Mehrfache Verwendung dieser Option ist möglich
| |
| |-
| |
| || Gateway
| |
| || Kurzform für einen Abschnitt <tt>[Route]</tt>
| |
| * Kann verwendet werden, wenn man in einem solchen Abschnitt nur den Schlüssel <tt>Gateway</tt> benötigt
| |
| * Erzeugt eine default-Route zur angegebenen IP-Adresse
| |
| * Mehrfache Verwendung dieser Option ist möglich, aber sinnlos
| |
| |-
| |
| || DNS
| |
| || Einstellung für systemd-resolved; systemd-networkd ignoriert diesen Schlüssel
| |
| * IP-Adresse eines DNS-Servers, der für die über diese Schnittstelle erreichbaren Rechner einer DNS-Domain die Namensauflösung erbringt
| |
| * Mehrfache Verwendung dieser Option ist möglich
| |
| |-
| |
| || Domains
| |
| || Einstellung für systemd-resolved; systemd-networkd ignoriert diesen Schlüssel
| |
| * Eine mit Leerzeichen getrennte Liste von DNS-Domänen, für welche der/die DNS-Server an dieser Schnittstellen zuständig sind
| |
| |-
| |
| || [Address]
| |
| || Dieser Abschnitt ist mehrfach zulässig
| |
| |-
| |
| || ''Address''
| |
| || Angabe einer IP-Adresse, optional mit deren Prefix-Länge
| |
| * Zulässig sind für IPv4 beispielsweise <tt>192.0.2.42/28</tt> und <tt>10.0.34.56/255.255.128.0</tt> in diesen Schreibweisen
| |
| * Es müssen stets alle 4 Bytes angegeben werden, auch wenn diese den Wert <tt>0</tt> haben
| |
| * Für IPv6 sind nur die vollständige Angabe oder die Schreibweise wie im Beispiel <tt>fd00::1/64</tt> zulässig
| |
| * Pflichtangabe in diesem Abschnitt und nur genau einmal möglich
| |
| * Es wird die Adresse zugewiesen und für die Schnittstelle (automatisch, aber abschaltbar) eine Route zum Netzwerk eingerichtet
| |
| |-
| |
| || Broadcast
| |
| || Nur sinnvoll, wenn unter <tt>Address</tt> in diesem Abschnitt eine IPv4-Adresse angegeben wurde und man nicht die sich aus dieser Angabe ergebene Broadcast-Adresse, sondern diese IP-Adresse verwenden will
| |
| |-
| |
| || Peer
| |
| || IP-Adresse der Gegenstelle bei einer Punkt-zu-Punkt-Verbindung
| |
| * Zur Definition einer Punkt-zu-Punkt-Verbindung sollte man hier und auch unter <tt>Address</tt> die Prefix-Länge <tt>32</tt> bei IPv4 bzw. <tt>128</tt> bei IPv6 verwenden
| |
| * Bei mehrfacher Verwendung wird nur die letzte Angabe verwendet
| |
| |-
| |
| || [Route]
| |
| || Dieser Abschnitt ist mehrfach zulässig
| |
| |-
| |
| || Type
| |
| || Der Typ der Route
| |
| * Vorgabe ist <tt>unicast</tt>, mögliche Werte sind die üblichen Typen von Routen wie beispielsweise <tt>blackhole</tt>
| |
| |-
| |
| || Destination
| |
| || Der Zielbereich als Netzwerk-Prefix: Es muss eine IP-Adresse und optional deren Prefix-Länge angegeben werden, dabei können nur solche IP-Adressen verwendet werden, bei denen beim Host-Teil alle Bit 0 sind
| |
| * Wenn keine Prefix-Länge angegeben wird, impliziert dies 32 bei IPv4 bzw. 128 bei IPv6 (Host-Route)
| |
| * Wenn diese Option fehlt, dann wird als Zielbereich <tt>0.0.0.0/0</tt> bzw. <tt>::/0</tt> verwendet
| |
| |-
| |
| || Gateway
| |
| || Eine IP-Adresse
| |
| * IP-Pakete mit Zieladressen im Zielbereich dieser Route werden an diese Adresse geschickt
| |
| |-
| |
| || Metric
| |
| || Ganze Zahl ohne Vorzeichen
| |
| * Praktisch nur bedeutsam, wenn es zu einem Zeitpunkt mehrere Routen mit gleichem Ziel hinsichtlich Adresse und Prefix-Länge gibt
| |
| * Diese müssen sich dann in dieser Angabe unterscheiden
| |
| * Der Konflikt wird gelöst durch Auswahl der Route mit der kleinsten Metric
| |
| |-
| |
| |}
| |
|
| |
| === .netdev-Dateien: Schnittstelle anlegen ===
| |
| Dateien mit der Endung auf '''.netdev''' werden bei jedem [https://wiki.ubuntuusers.de/systemd/networkd/#Start-und-Stopp Start von systemd-networkd] ausgewertet
| |
| * Wenn es eine Datei mit Endung auf '''.netdev''' ohne eine dazu passende Schnittstelle gibt, wird die beschriebene Schnittstelle angelegt und konfiguriert
| |
|
| |
| ==== Beispiel: Netzwerkbrücke ====
| |
| Eine [https://wiki.ubuntuusers.de/Netzwerkbrücke/ Netzwerkbrücke] ist eine Realisierung eines Hub/Switch in Software und verbindet mehrere Netzwerkschnittstellen auf Ebene 2
| |
| * Dies kann als einfache Methode für eine [https://wiki.ubuntuusers.de/Internetverbindungsfreigabe/ Internetverbindungsfreigabe] verwendet werden
| |
|
| |
| # /etc/systemd/network/20-bridge.netdev
| |
| [NetDev]
| |
| Kind = bridge
| |
| Name = HUB
| |
|
| |
| [Bridge]
| |
| STP = yes
| |
| HelloTimeSec = 1
| |
| MaxAgeSec = 4
| |
| ForwardDelaySec = 4
| |
|
| |
| Der gesamte Abschnitt <tt>[Bridge]</tt> ist hier optional
| |
| * Abhängig vom Typ (<tt>Kind=</tt>) der Schnittstelle sind weitere Abschnitte zur Ausgestaltung der Schnittstelle zulässig
| |
| * Dies wird hier benutzt, um das Spanning Tree Protokoll einzuschalten und zu parametrieren
| |
| * Details siehe Artikel [https://wiki.ubuntuusers.de/Netzwerkbrücke/ Netzwerkbrücke]
| |
|
| |
| Die Schnittstellen, welche diesem HUB als Ports zugeordnet werden sollen, müssen in ihrer '''.network'''-Datei eine entsprechende Zuweisung erhalten
| |
|
| |
| # /etc/systemd/network/80-HUB-port.network
| |
| [Match]
| |
| Type =! wlan
| |
| Name =! HUB
| |
|
| |
| [Network]
| |
| Description = Interface als Bridge-Port von HUB verwenden
| |
| Bridge = HUB
| |
| LinkLocalAddressing = no
| |
|
| |
| Wie im Beispiel gezeigt, kann man mit =! auch auf Ungleichheit testen
| |
| * Dies wird hier benutzt, damit die Brücke nicht sich selbst als Port hinzugefügt wird
| |
|
| |
| Die Angabe "<tt>LinkLocalAddressing=no</tt>" ist hier optional
| |
| * Sie verhindert, dass per Voreinstellung für jeden Port eine eigene IPv6-Link-Adresse vergeben wird
| |
| * Bei Ubuntu 18.04 mit systemd-Version 237 hat dies den schönen Nebeneffekt, dass die voll funktionsfähige Schnittstelle nicht von networkctl als "<tt>degraded</tt>" angezeigt wird, weil nur Link-Local-Adressen vorhanden sind
| |
|
| |
| systemd-networkd löscht niemals eine Schnittstelle
| |
| * Selbst wenn man die .netdev-Datei löscht, welche zu ihrer Erzeugung gedient hat, interessiert dies systemd-networkd nicht
| |
| * Eine Schnittstelle, welche nicht zu realer Hardware gehört, kann man aber mit dem [https://wiki.ubuntuusers.de/systemd/networkd/#Dienstprogramm-networkctl Dienstprogramm networkctl] vernichten
| |
|
| |
| === .link-Dateien ===
| |
| Die Dateien mit Endung auf '''.link''' dienen zu Konfiguration vorhandener (Hardware- und Software-) Schnittstelle auf Netzwerkebene 2, soweit es sich um statische Konfigurationselemente handelt. (Variable Einstellungen auf Ebene 2 können dagegen in '''.network'''-Dateien erfolgen.) Diese Dateien werden von dem in udev fest eingebauten Modul '''net_setup_link''' bearbeitet
| |
| * Damit sind '''.link'''-Dateien verkappte udev-Regeln, die grundsätzlich auch in der herkömmlichen udev-Syntax formuliert werden könnten und früher war das auch der Fall. (Hierfür wurde z.B '''/etc/udev/rules.d/70-persistent-net.rules''' verwendet.)
| |
|
| |
| Für jede vorhandene Schnittstelle werden nacheinander die '''.link'''-Dateien geprüft, ob alle genannten Selektionskriterien gemeinsam zutreffen
| |
| * Die erste passende Datei wird der Schnittstelle zugewiesen, und die in der Datei aufgeführten Konfigurationsaufgaben werden durchgeführt
| |
| * Selbst wenn dabei ein Fehler auftritt, wird keine weitere Datei beachtet
| |
|
| |
| ==== Beispiel: Schnittstelle umbenennen ====
| |
| # /etc/systemd/network/10-rename-to-radio.link
| |
| [Match]
| |
| Type = wlan wifi
| |
| Path =! pci*usb*
| |
|
| |
| [Link]
| |
| Description = Radio-LAN
| |
| NamePolicy =
| |
| Name = radio
| |
|
| |
| Wenn man das ausprobiert, wird es wahrscheinlich zunächst nicht funktionieren
| |
| * Zu den Gründen und zur Abhilfe siehe [https://wiki.ubuntuusers.de/systemd/networkd/#Umbenennung-einer-Schnittstelle-funktioniert-nicht Problembehebung]
| |
|
| |
| Die hier gezeigte Arbeitsweise ist potentiell unsicher, weil eine Klasse von Objekten auf ein einziges Element (den Namen) abgebildet wird
| |
| * Solange es nur eine passende Schnittstelle gibt, ist das harmlos
| |
| * Aber bei zwei und mehr passenden Objekten wird die Datei auch auf alle angewandt
| |
| * Ab dem zweiten Umbenennungsversuch gibt es natürlich Fehlermeldungen und Fehlfunktionen
| |
| * Sicherer ist in solchen Fällen eine Selektion beispielsweise über <tt>PermanentMACAddress</tt>
| |
|
| |
| Hier wird auf Ungleichheit getestet, um USB/WLAN-Sticks, die leicht als zusätzliche zu den eingebauten Schnittstellen im System auftauchen könnten, von dieser Regel auszuschließen
| |
|
| |
| ==== Beispiel: WLAN ====
| |
| WLAN-Schnittstellen werden auf Ebene 2 nicht von systemd-networkd verwaltet
| |
| * Man muss die Betriebsbereitstellung der Schnittstelle mit anderen Mitteln erledigen, siehe: [https://wiki.ubuntuusers.de/systemd/WLAN_mit_systemd-networkd/ WLAN mit systemd-networkd]
| |
|
| |
| Eine WLAN-Schnittstelle, welche über das externe WLAN-Einrichtungsprogramm bereits auf Ebene 2 als Bridge-Port einer Netzwerkbrücke zugeordnet wurde, bedarf gar keiner weiteren Konfiguration per systemd-networkd
| |
|
| |
| Die Konfiguration einer betriebsbereiten WLAN-Schnittstelle auf Ebene 3 erfolgt dagegen genauso wie bei jeder anderen Schnittstelle
| |
|
| |
| === .network-Dateien ===
| |
| ==== Beispiel: Schnittstelle ignorieren ====
| |
| Die System-Schnittstelle <tt>lo</tt> kann genau wie jede andere Schnittstelle durch Zuweisung einer '''.network'''-Datei konfiguriert werden
| |
| * Dies ist normalerweise gar nicht erforderlich
| |
| * Zur Vermeidung von Fehlfunktionen durch irrtümliche Zuweisung einer unpassenden '''.network'''-Datei kann man beispielsweise diese Datei verwenden
| |
|
| |
| # /etc/systemd/network/00-lo-unmanaged.network</
| |
| [Match]
| |
| Name = lo
| |
|
| |
| [Link]
| |
| Unmanaged = yes
| |
|
| |
| Diese Technik ist auch sinnvoll für andere Schnittstellen, wenn diese nicht durch systemd-networkd konfiguriert werden sollen bzw. wenn ein Konfigurationsversuch ggf
| |
| * nach langer Wartezeit ohnehin scheitern würde
| |
|
| |
| ==== Beispiel: DHCP oder statische Konfiguration ====
| |
| Mit diesem Satz von '''.network'''-Dateien kann man beim Hochlauf des Systems über eine Option auf der Kommandozeile des Kernels den DHCP-Client steuern
| |
|
| |
| # /etc/systemd/network/60-dhcp-all-hardware.network</
| |
| # Alle Hardware-Schnittstellen per DHCP konfigurieren.</
| |
| # Voreinstellung
| |
| * Wird benutzt, wenn "noDHCP" nicht angegeben wird.</
| |
|
| |
| [Match]
| |
| KernelCommandLine =! noDHCP
| |
| Path = pci*
| |
|
| |
| [Network]
| |
| DHCP = ipv4
| |
|
| |
| Zur Selektion der Hardware-Schnittstellen wird <tt>Path</tt> benutzt
| |
| * Auch USB-Geräte schließt "<tt>pci*</tt>" mit ein, weil sie in der Regel über eine PCI/USB-Bridge in das System integriert sind
| |
| * Bei exotischer Hardware kann es ggf
| |
| * anders sein
| |
|
| |
| # /etc/systemd/network/60-dhcp-wlan-only.network</
| |
| # Alle WLAN-Schnittstellen (aber nur solche) per DHCP konfigurieren.</
| |
|
| |
| [Match]
| |
| KernelCommandLine =! noDHCP=*wlan*
| |
| Path = pci*
| |
| Type = wlan
| |
|
| |
| [Network]
| |
| DHCP = ipv4
| |
|
| |
| Wenn man auf der Kernel-Kommandozeile "<tt>noDHCP=wlan</tt>" angibt, passt diese Datei nicht
| |
| * Aber vielleicht die nächste
| |
|
| |
| # /etc/systemd/network/60-dhcp-ethernet-only.network</
| |
| # Alle Ethernet-Hardware-Schnittstellen (aber nur solche) per DHCP konfigurieren.</
| |
| [Match]
| |
| KernelCommandLine =! noDHCP=*ether*
| |
| Path = pci*
| |
| Type = ether
| |
| #Type =! wlan
| |
|
| |
| [Network]
| |
| DHCP = ipv4
| |
|
| |
| Diese Datei setzt voraus, dass <tt>Type=ether</tt> funktioniert, was bei Ubuntu 18.04 mit systemd-Version 237 nicht der Fall ist
| |
| * Alternativ kann man voraussetzen, dass es nur die beiden Typen Ethernet und WLAN gibt, und dann <tt>Type=!wlan</tt> verwenden
| |
|
| |
| Wenn man auf der Kernel-Kommandozeile "<tt>noDHCP=ether</tt>" angibt, passt diese Datei nicht
| |
| * Aber vielleicht die nächste
| |
|
| |
| # /etc/systemd/network/60-uplink-static.network</
| |
| # Nur die Hardware-Schnittstelle mit dem Namen "uplink" statisch konfigurieren.</
| |
| [Match]
| |
| KernelCommandLine = noDHCP=*
| |
| Path = pci*
| |
| Name = uplink
| |
|
| |
| [Network]
| |
| DHCP = no
| |
| Address = 192.168.1.20/24
| |
| Gateway = 192.168.1.1
| |
| DNS = 8.8.8.8
| |
| DNS = 8.8.4.4
| |
|
| |
| Beachte: systemd-networkd ignoriert die Angaben bei <tt>DNS=</tt>! Zur Konfiguration der DNS-Namensauflösung kann man beispielsweise [https://wiki.ubuntuusers.de/systemd/systemd-resolved/ systemd-resolved] starten, welches dann die hier gemachten Angaben für seine Konfiguration benutzt
| |
| [[Kategorie:Systemd/Networkd]] | | [[Kategorie:Systemd/Networkd]] |