109.2 Lektion 2
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
109 Netzwerkgrundlagen |
Lernziel: |
109.2 Persistente Netzwerkkonfiguration |
Lektion: |
2 von 2 |
Einführung
Linux unterstützt praktisch jede Netzwerktechnologie zur Verbindung von Servern, Containern, virtuellen Maschinen, Desktops und mobilen Geräten. Die Verbindungen zwischen all diesen Netzwerkknoten können dynamisch und heterogen sein und erfordern daher eine entsprechende Verwaltung durch das jeweils darauf laufende Betriebssystem.
In der Vergangenheit entwickelten die Distributionen ihre eigenen maßgeschneiderten Lösungen für die Verwaltung dynamischer Netzwerkinfrastrukturen. Heute bieten Tools wie NetworkManager und systemd umfassendere und integrierte Funktionen, die allen spezifischen Anforderungen gerecht werden.
NetzwerkManager
Die meisten Linux-Distributionen nutzen den Daemon NetworkManager zur Konfiguration und Steuerung der Netzwerkverbindungen des Systems. Aufgabe von NetworkManager ist es, die Netzwerkkonfiguration so einfach und automatisch wie möglich zu gestalten. Beim Einsatz von DHCP beispielsweise kümmert sich NetworkManager um Routenänderungen, das Abrufen von IP-Adressen und die Aktualisierung der lokalen Liste von DNS-Servern, falls erforderlich. Wenn sowohl Kabel- als auch drahtlose Verbindungen verfügbar sind, gibt NetworkManager standardmäßig der kabelgebundenen Verbindung den Vorrang. NetworkManager versucht, wenn immer möglich, mindestens eine Verbindung ständig aktiv zu halten.
Note
|
Eine DHCP-Anfrage (Dynamic Host Configuration Protocol) wird normalerweise über die Netzwerkverbindung gesendet, sobald die Verbindung zum Netzwerk hergestellt ist. Der im Netz aktive DHCP-Server antwortet mit den Einstellungen (IP-Adresse, Netzmaske, Standardroute usw.), die der Anfragende dann für die Kommunikation über das IP-Protokoll verwenden muss. |
Standardmäßig kontrolliert der NetworkManager-Daemon die Netzwerkschnittstellen, die nicht in der Datei /etc/network/interfaces
aufgeführt sind, um andere Konfigurationsmethoden, die möglicherweise ebenfalls vorhanden sind, nicht zu stören. Er ändert daher auch nur die nicht überwachten Schnittstellen.
Der NetworkManager-Dienst läuft im Hintergrund mit Root-Rechten und löst die notwendigen Aktionen aus, um das System online zu halten. Normale Benutzer können Netzwerkverbindungen mit Client-Anwendungen erstellen und ändern, die zwar selbst keine Root-Rechte haben, aber mit dem zugrundeliegenden Dienst kommunizieren, um die angeforderten Aktionen durchzuführen.
Client-Anwendungen für NetworkManager gibt es sowohl für die Befehlszeile als auch für die grafische Umgebung. Bei letzterer sind sie Zubehör zur Desktopumgebung (unter Namen wie nm-tray, network-manager-gnome, nm-applet oder plasma-nm) und normalerweise über ein Symbol in der Ecke der Desktopleiste oder über das Systemkonfigurationsprogramm zugänglich.
Auf der Befehlszeile bietet der NetworkManager selbst zwei Clientprogramme: nmcli
und nmtui
. Beide Programme haben die gleichen Grundfunktionen, aber nmtui
hat eine Curses-basierte Schnittstelle, während nmcli
umfassender ist und auch in Skripten eingesetzt werden kann. Der Befehl nmcli
unterscheidet alle netzwerkbezogenen Eigenschaften, die NetworkManager kontrolliert, in Kategorien, sogenannte Objekte:
general
-
Allgemeiner Status und Betrieb von NetworkManager.
networking
-
Allgemeine Netzwerkkontrolle.
radio
-
NetworkManager-Funkschalter.
connection
-
NetworkManager-Verbindungen.
device
-
Von NetworkManager verwaltete Geräte.
agent
-
NetworkManager Secret- oder Polkit-Agent.
monitor
-
Änderungen von NetworkManager überwachen.
Der Objektname ist das Hauptargument für den Befehl nmcli
. Um etwa den gesamten Verbindungsstatus des Systems anzuzeigen, geben Sie das Objekt general
als Argument an:
$ nmcli general STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
Die Spalte STATE
gibt an, ob das System mit einem Netz verbunden ist oder nicht. Ist die Verbindung aufgrund externer Fehlkonfigurationen oder Zugangsbeschränkungen eingeschränkt, erscheint in der Spalte CONNECTIVITY
nicht der Status full
. Wenn in der Spalte CONNECTIVITY
der Eintrag Portal
erscheint, bedeutet dies, dass zusätzliche Authentifizierungsschritte (in der Regel über den Webbrowser) erforderlich sind, um den Verbindungsvorgang abzuschließen. Die übrigen Spalten geben den Status der drahtlosen Verbindungen (falls vorhanden) an, entweder WIFI
oder WWAN
(Wide Wireless Area Network, d.h. Mobilfunknetze). Das Suffix HW
zeigt an, dass sich der Status auf das Netzwerkgerät und nicht auf die Netzwerkverbindung des Systems bezieht, also ob die Hardware aktiviert oder deaktiviert ist, um Strom zu sparen.
Neben dem Objektargument benötigt nmcli
auch ein Befehlsargument zur Ausführung. Der Befehl status
ist der Default, wenn kein Befehlsargument gegeben ist, so dass nmcli general
als nmcli general status
interpretiert wird.
Wenn die Netzwerkschnittstelle über Kabel direkt mit dem Zugangspunkt verbunden ist, sind meist keine weiteren Eingriffe notwendig. Drahtlose Netzwerke erfordern hingegen zusätzliche Schritte, um neue Teilnehmer zu akzeptieren. nmcli
erleichtert den Verbindungsprozess und speichert die Einstellungen, um sich in Zukunft automatisch zu verbinden. Daher ist es sehr hilfreich für Laptops oder andere mobile Geräte.
Bevor eine Verbindung zum WLAN hergestellt wird, ist es sinnvoll, zunächst die verfügbaren Netzwerke vor Ort aufzulisten. Verfügt das System über einen funktionierenden WLAN-Adapter, wird das Objekt device
diesen nutzen, um die verfügbaren Netzwerke mit dem Befehl nmcli device wifi list
zu scannen:
$ nmcli device wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 90:F6:52:C5:FA:12 Hypnotoad Infra 11 130 Mbit/s 67 ▂▄▆_ WPA2 10:72:23:C7:27:AC Jumbao Infra 1 130 Mbit/s 55 ▂▄__ WPA2 00:1F:33:33:E9:BE NETGEAR Infra 1 54 Mbit/s 35 ▂▄__ WPA1 WPA2 A4:33:D7:85:6D:B0 AP53 Infra 11 130 Mbit/s 32 ▂▄__ WPA1 WPA2 98:1E:19:1D:CC:3A Bruma Infra 1 195 Mbit/s 22 ▂___ WPA1 WPA2
Die meisten Benutzer werden wahrscheinlich über Namen in der Spalte SSID
das gewünschte Netz identifizieren. Zum Beispiel stellt der Befehl nmcli
eine Verbindung zum Netzwerk mit dem Namen Hypnotoad
über das Objekt device
her:
$ nmcli device wifi connect Hypnotoad
Wenn Sie den Befehl in einem Terminalemulator in der grafischen Umgebung ausführen, erscheint ein Dialogfeld, das die Passphrase für das Netzwerk abfragt. In einer reinen Textkonsole geben Sie das Passwort zusammen mit den anderen Argumenten an:
$ nmcli device wifi connect Hypnotoad password MyPassword
Wenn das WLAN seinen SSID-Namen verbirgt, stellt nmcli
mit dem zusätzlichen Argument hidden yes
trotzdem eine Verbindung her:
$ nmcli device wifi connect Hypnotoad password MyPassword hidden yes
Hat das System mehr als einen WLAN-Adapter, geben Sie den gewünschten mit ifname
an — um etwa eine Verbindung mit dem Adapter wlo1
herzustellen:
$ nmcli device wifi connect Hypnotoad password MyPassword ifname wlo1
Wurde die Verbindung erfolgreich hergestellt, benennt NetworkManager sie nach der entsprechenden SSID (wenn es sich um eine WLAN-Verbindung handelt) und behält diese für zukünftige Verbindungen bei. Die Verbindungsnamen und ihre UUIDs sehen Sie mit dem Befehl nmcli connection show
:
$ nmcli connection show NAME UUID TYPE DEVICE Ethernet 53440255-567e-300d-9922-b28f0786f56e ethernet enp3s5 tun0 cae685e1-b0c4-405a-8ece-6d424e1fb5f8 tun tun0 Hypnotoad 6fdec048-bcc5-490a-832b-da83d8cb7915 wifi wlo1 4G a2cf4460-0cb7-42e3-8df3-ccb927f2fd88 gsm --
Zu erkennen sind der Typ jeder Verbindung — das kann ethernet
, wifi
, tun
, gsm
, bridge
usw. sein — sowie das verbundene Device. Um Aktionen für eine bestimmte Verbindung durchzuführen, geben Sie deren Namen oder UUID an. Um zum Beispiel die Verbindung Hypnotoad
zu deaktivieren:
$ nmcli connection down Hypnotoad Connection 'Hypnotoad' successfully deactivated
Ebenso stellen Sie mit dem Befehl nmcli connection up Hypnotoad
die Verbindung wieder her, da NetworkManager sie nun gespeichert hat. Über den Schnittstellennamen trennen Sie die Verbindung auch wieder, aber in diesem Fall über das Objekt device
:
$ nmcli device disconnect wlo2 Device 'wlo1' successfully disconnected.
Der Schnittstellenname dient Ihnen auch dazu, die Verbindung wiederherzustellen:
$ nmcli device connect wlo2 Device 'wlo1' successfully activated with '833692de-377e-4f91-a3dc-d9a2b1fcf6cb'.
Beachten Sie, dass sich die UUID bei jedem Verbindungsaufbau ändert, so dass der Name vorzuziehen ist.
Wenn ein Funkadapter vorhanden, aber ungenutzt ist, schalten Sie ihn aus, um Strom zu sparen — dieses Mal über das Objekt radio, das Sie an nmcli
übergeben:
$ nmcli radio wifi off
Natürlich können Sie das drahtlose Gerät mit dem Befehl nmcli radio wifi on
wieder einschalten.
Sobald die Verbindungen hergestellt wurden, ist künftig keine manuelle Interaktion mehr erforderlich, da NetworkManager verfügbare bekannte Netzwerke erkennt und automatisch eine Verbindung herstellt. Falls erforderlich, verfügt NetworkManager über Plugins, die seine Funktionen erweitern, wie z.B. das Plugin zur Unterstützung von VPN-Verbindungen.
systemd-networkd
Systeme mit systemd nutzen optional eingebaute Daemons zur Verwaltung der Netzwerkkonnektivität: systemd-networkd
zur Kontrolle der Netzwerkschnittstellen und systemd-resolved
zur Verwaltung der lokalen Namensauflösung. Diese Dienste sind abwärtskompatibel mit den alten Linux-Konfigurationsmethoden, aber insbesondere die Konfiguration der Netzwerkschnittstellen hat Eigenschaften, die Sie kennen sollten.
Die Konfigurationsdateien, die systemd-networkd zum Einrichten von Netzwerkschnittstellen verwendet, befinden sich in einem der folgenden drei Verzeichnisse:
/lib/systemd/network
-
Netzwerkverzeichnis des Systems
/run/systemd/network
-
Flüchtiges Netzwerkverzeichnis zur Laufzeit
/etc/systemd/network
-
Netzwerkverzeichnis der lokalen Verwaltung
Die Dateien werden in lexikografischer Reihenfolge verarbeitet. Es empfiehlt sich daher, die Namen der Dateien mit Nummern zu beginnen, um die Reihenfolge leichter zu lesen und einzustellen.
Dateien in /etc
haben die höchste Priorität, während Dateien in /run
Vorrang vor Dateien gleichen Namens in /lib
haben. Das bedeutet, dass systemd-networkd die Dateien mit der niedrigeren Priorität ignoriert, wenn Konfigurationsdateien in verschiedenen Verzeichnissen den gleichen Namen haben. Die Trennung der Dateien auf diese Weise ist eine Möglichkeit, die Schnittstelleneinstellungen zu ändern, ohne die Originaldateien zu modifizieren: Sie nehmen Änderungen in /etc/systemd/network
vor, um jene in /lib/systemd/network
zu überschreiben.
Der Zweck der einzelnen Konfigurationsdateien hängt von ihrem Suffix ab. Dateinamen, die auf .netdev
enden, dienen systemd-networkd dazu, virtuelle Netzwerkgeräte zu erstellen, wie z.B. bridge oder tun Geräte. Dateien, die auf .link
enden, legen Low-Level-Konfigurationen für die entsprechende Netzwerkschnittstelle fest. systemd-networkd erkennt und konfiguriert Netzwerkgeräte automatisch, sobald diese auftauchen — und ignoriert auch Geräte, die bereits auf andere Weise konfiguriert wurden --, so dass es in den meisten Fällen nicht notwendig ist, diese Dateien hinzuzufügen.
Das wichtigste Suffix ist .network
. Dateien mit dieser Endung dienen der Einrichtung von Netzwerkadressen und Routen. Wie bei den anderen Konfigurationsdateitypen definiert der Name der Datei die Reihenfolge, in sie verarbeitet wird. Die Netzwerkschnittstelle, auf die sich die Konfigurationsdatei bezieht, wird im Abschnitt [Match]
in der Datei definiert.
Zum Beispiel wird die Ethernetschnittstelle enp3s5
in der Datei /etc/systemd/network/30-lan.network
durch den Eintrag Name=enp3s5
im Abschnitt [Match]
wie folgt ausgewählt:
[Match] Name=enp3s5
Eine Liste von durch Leerzeichen getrennten Namen wird ebenfalls akzeptiert, um mehrere Netzwerkschnittstellen mit derselben Datei abzugleichen. Die Namen können Shell-ähnliche Globs enthalten, wie beispielsweise en*
. Andere Einträge bieten verschiedene Match-Regeln, wie die Auswahl eines Netzwerkgeräts anhand seiner MAC-Adresse:
[Match] MACAddress=00:16:3e:8d:2b:5b
Die Einstellungen für das Gerät finden sich im Abschnitt [Network]
der Datei. Für eine einfache statische Netzwerkkonfiguration sind nur die Einträge Address
und Gateway
erforderlich:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] Address=192.168.0.100/24 Gateway=192.168.0.1
Um DHCP anstelle statischer IP-Adressen zu verwenden, sollte der Eintrag DHCP
gesetzt sein:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] DHCP=yes
Der Dienst systemd-networkd wird versuchen, sowohl IPv4- als auch IPv6-Adressen für die Netzwerkschnittstelle zu erhalten. Um nur IPv4 zu verwenden, setzen Sie DHCP=ipv4
. Ebenso wird DHCP=ipv6
die IPv4-Einstellungen ignorieren und nur die angegebene IPv6-Adresse verwenden.
Passwortgeschützte drahtlose Netzwerke konfiguriert systemd-networkd ebenfalls, aber der Netzwerkadapter muss bereits im Netzwerk authentifiziert sein, bevor systemd-networkd ihn konfigurieren kann. Die Authentifizierung führt WPA supplicant durch, ein Programm zur Konfiguration von Netzwerkadaptern für passwortgeschützte Netzwerke.
Der erste Schritt besteht darin, die Anmeldedaten mit dem Befehl wpa_passphrase
zu erstellen:
# wpa_passphrase MyWifi > /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
Der Befehl entnimmt die Passphrase für das drahtlose Netzwerk MyWifi
aus der Standardeingabe und speichert ihren Hash in der Datei /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
. Beachten Sie, dass der Dateiname den Namen der drahtlosen Schnittstelle enthalten sollte, daher das wlo1
im Dateinamen.
Der systemd-Manager liest die WPA-Passphrasendateien in /etc/wpa_supplicant/
und erstellt den entsprechenden Dienst, um den WPA-Supplicant auszuführen und die Schnittstelle zu aktivieren. Die Passphrasendatei im Beispiel hat dann eine entsprechende Service Unit namens wpa_supplicant@wlo1.service
. Der Befehl systemctl start wpa_supplicant@wlo1.service
verbindet den Wireless-Adapter mit dem Remote Access Point. Der Befehl systemctl enable wpa_supplicant@wlo1.service
sorgt dafür, dass die Verbindung beim Booten automatisch hergestellt wird.
Schließlich muss eine .network
-Datei, die zur wlo1
-Schnittstelle passt, in /etc/systemd/network/
vorhanden sein, da systemd-networkd diese Datei verwendet, um die Schnittstelle zu konfigurieren, sobald der WPA-Supplicant die Zuweisung zum Zugangspunkt beendet hat.
Geführte Übungen
-
Was bedeutet das Wort
Portal
in der SpalteCONNECTIVITY
in der Ausgabe des Befehlsnmcli general status
? -
Wie nutzt ein normaler Benutzer in einem Konsolenterminal den Befehl
nmcli
, um sich mit dem drahtlosen NetzwerkMyWifi
zu verbinden, das durch das PasswortMyPassword
geschützt ist? -
Mit welchem Befehl schalten Sie den Wireless-Adapter ein, wenn er zuvor vom Betriebssystem deaktiviert wurde?
-
In welchem Verzeichnis sollten benutzerdefinierte Konfigurationsdateien abgelegt werden, wenn systemd-networkd die Netzwerkschnittstellen verwaltet?
Offene Übungen
-
Wie führen Sie den Befehl
nmcli
aus, um eine nicht verwendete Verbindung namensHotel Internet
zu löschen? -
NetworkManager scannt WLAN-Netzwerke in regelmäßigen Abständen, und der Befehl
nmcli device wifi list
listet nur die Zugangspunkte auf, die bei der letzten Suche gefunden wurden. Wie führen Sie den Befehlnmcli
aus, um NetworkManager aufzufordern, alle verfügbaren Zugangspunkte sofort erneut zu scannen? -
Welcher
name
-Eintrag sollte im[Match]
-Abschnitt einer systemd-networkd-Konfigurationsdatei stehen, um alle Ethernetschnittstellen zu matchen? -
Wie führen Sie den Befehl
wpa_passphrase
aus, damit das als Argument angegebene Passwort verwendet und nicht von der Standardeingabe eingelesen wird?
Zusammenfassung
Diese Lektion befasst sich mit den gängigen Werkzeugen, die unter Linux zur Verwaltung heterogener und dynamischer Netzwerkverbindungen zur Verfügung stehen. Obwohl die meisten Konfigurationsmethoden keinen Benutzereingriff erfordern, ist dieser manchmal notwendig, und Werkzeuge wie NetworkManager und systemd-networkd reduzieren diesen Aufwand auf ein Minimum. In dieser Lektion werden die folgenden Themen behandelt:
-
Wie Sie NetworkManager und systemd-networkd in das System integrieren.
-
Wie Sie mit NetworkManager und systemd-networkd interagieren.
-
Grundlegende Schnittstellenkonfiguration mit NetworkManager und systemd-networkd.
Die behandelten Konzepte, Befehle und Verfahren sind:
-
Die Client-Befehle von NetworkManager:
nmtui
undnmcli
. -
Scannen und Verbinden mit drahtlosen Netzwerken unter Verwendung der entsprechenden Befehle von
nmcli
. -
Dauerhafte WiFi-Netzwerkverbindungen mit systemd-networkd.
Lösungen zu den geführten Übungen
-
Was bedeutet das Wort
Portal
in der SpalteCONNECTIVITY
in der Ausgabe des Befehlsnmcli general status
?Es bedeutet, dass zusätzliche Authentifizierungsschritte (in der Regel über den Webbrowser) erforderlich sind, um den Verbindungsprozess abzuschließen.
-
Wie nutzt ein normaler Benutzer in einem Konsolenterminal den Befehl
nmcli
, um sich mit dem drahtlosen NetzwerkMyWifi
zu verbinden, das durch das PasswortMyPassword
geschützt ist?In einem reinen Textterminal lautet der Befehl:
$ nmcli device wifi connect MyWifi password MyPassword
-
Mit welchem Befehl schalten Sie den Wireless-Adapter ein, wenn er zuvor vom Betriebssystem deaktiviert wurde?
$ nmcli radio wifi on
-
In welchem Verzeichnis sollten benutzerdefinierte Konfigurationsdateien abgelegt werden, wenn systemd-networkd die Netzwerkschnittstellen verwaltet?
Im Netzwerkverzeichnis der lokalen Verwaltung:
/etc/systemd/network
.
Lösungen zu den offenen Übungen
-
Wie führen Sie den Befehl
nmcli
aus, um eine nicht verwendete Verbindung namensHotel Internet
zu löschen?$ nmcli connection delete "Hotel Internet"
-
NetworkManager scannt WLAN-Netzwerke in regelmäßigen Abständen, und der Befehl
nmcli device wifi list
listet nur die Zugangspunkte auf, die bei der letzten Suche gefunden wurden. Wie führen Sie den Befehlnmcli
aus, um NetworkManager aufzufordern, alle verfügbaren Zugangspunkte sofort erneut zu scannen?Der Root-Benutzer führt
nmcli device wifi rescan
aus, um NetworkManager zu veranlassen, die verfügbaren Zugangspunkte erneut zu scannen. -
Welcher
name
-Eintrag sollte im[Match]
-Abschnitt einer systemd-networkd-Konfigurationsdatei stehen, um alle Ethernetschnittstellen zu matchen?Der Eintrag
name=en*
, daen
das Präfix für Ethernetschnittstellen in Linux ist und systemd-networkd Shell-ähnliche Globs akzeptiert. -
Wie führen Sie den Befehl
wpa_passphrase
aus, damit das als Argument angegebene Passwort verwendet und nicht von der Standardeingabe eingelesen wird?Das Passwort sollte direkt nach der SSID angegeben werden, wie in
wpa_passphrase MyWifi MyPassword
.