Ubuntu: Netzwerk im Terminal konfigurieren – für Einsteiger

LAN und WLAN im Terminal einrichten, Tipps, Troubleshooting, Tools

Ubuntu geht mit Netplan einen eigenen Weg bei der Netzwerkkonfiguration – und der funktioniert eigentlich ziemlich gut, kann aber gerade Einsteiger auch zu Tode nerven. Das liegt auch am YAML-Format, das doch allen Ernstes unsichtbare Zeichen als Steuerzeichen interpretiert … Wie Ihr mit Netplan arbeitet, LAN und WLAN mit dynamischen oder statischen IP-Adressen ausstattet, Informationen auslest und mit YAML klar kommt, lest Ihr hier.

Was gibt’s hier?

Da der Artikel etwas länger ist, hier zunächst, was Ihr bekommt: Zunächst gibt es ein paar grundsätzliche Worte zur Ubuntu-Netzwerkkonfiguration mit Netplan und dessen YAML-Config-Dateien – damit Ihr einen Überblick habt, was das alles überhaupt soll. Dann folgen ein paar konkrete Konfigurationen für LAN und WLAN.

Anschließend folgt noch ein Kapitel mit ein paar Tipps drumherum: Wie findet man den Namen von Netzwerkschnittstellen? Wie lässt sich der Netzwerkdienst starten und stoppen? Was tun bei Fehlern? Wie lässt sich die YAML-Syntax testen? Nützlicher Kleinkram eben, der Euch hoffentlich davon entbindet noch ein Dutzend anderer Artikel zu Rate ziehen zu müssen.

Etwaige IP-Beispiele orientieren sich an der Fritzbox – die ist hierzulande nunmal Quasistandard. Es gibt Beispiele für dynamische und fixe IP-Adressen sowie für zwei Netze auf einem Rechner. Wenn Ihr nach Lösungen für komplexe Netzwerk-Designs mit Profi-Switchen, VLANs, Zugriffsrechten und so weiter sucht, seid Ihr hier fehl am Platz, hier geht es um Einsteiger-Basics. Das volle Netzwerkprogramm findet Ihr bei Administrator.de auch auf Deutsch.

Vorgehen mit Netplan

Die Idee hinter Netplan ist nett: Unter Linuxen, auch unter Ubuntu, lassen sich meist diverse Dienste für die Bereitstellung des Netzwerks nutzen, mit Konfigurationen in meist mehreren Dateien. Netplan hingegen erlaubt die Konfiguration in nur einer Datei und kann dabei derzeit mit den Netzwerkdiensten systemd-networkd (Ubuntu Server)oder NetworkManager (Ubuntu Desktop) arbeiten. Diese Backends werden normalerweise über eigene config-Dateien unterhalb von /etckonfiguriert – und trotz Netplan funktioniert das nach wie vor, die Netplan-Konfiguration wird dann einfach übergangen.

Aber die Konfiguration in nur einer Datei, unabhängig vom eigentlichen Netzwerk-Backend, hat eben ihren Reiz. Grundsätzlich ist die ganze Konfiguriererei auch ziemlich simpel: Man gibt den Namen der Netzwerkschnittstelle an, also den Namen des (W)LAN-Adapters, dazu Infos zur IP-Adresse, zum WLAN-Namen, Passwort und so weiter. Für Einsteiger wird es aber dennoch schnell unkomfortabel: Wie lautet denn der Name des WLAN-Interfaces? Was gebe ich als Gateway an? Was ist ein Nameserver, was DHCP4? Und warum zum Teufel funktioniert die verdammte YAML-Datei trotzdem nicht?

Was ist und warum nervt YAML?

YAML steht für Yet Another Markup Language. Diese YA-Formulierung findet Ihr ziemlich häufig, immer dann wenn ein Produkt entsteht, das es eigentlich schon x-mal gibt und dies dem Erfinder auch völlig klar ist. Eine Markup Language (Auszeichnungssparache) ist im Grunde einfach ein Konstrukt, um irgendwelche Eigenschaften (Textformatierungen, App-Konfigurationen etc.) in einer simplen Textdatei in menschenlesbarer Form und möglichst einfach zu hinterlegen. Ein bekanntes Beispiel ist Markdown, dass zum Beispiel mit zwei Sternchen vor und nach einem Wort dafür sorgt, dass Ihr es letztlich fett seht. (Nun, heute heißt YAML eigentlich „YAML Ain’t Markup Language“ und möchte eine Datenserialisierungssprache sein … whatever.)

YAML hat nun eine Besonderheit, die wohl allenfalls eingefleischte Coder wirklich toll finden: Die Einrückung der Zeilen gehört zur Syntax! Normalerweise dienen Einrückungen nur der Lesbarkeit. Und selbst das führt seit Dekaden (!) zu Diskussionen: Einrücken mit TABs oder Leerzeichen? Bei YAML wird mit Leerzeichen eingerückt – aber ein Leerzeichen zu viel oder zu wenig und schon gibt es nur Fehlermeldungen.

Noch schlimmer: Ihr findet im Netz Netplan-Beispiele mit mal 4, mal 2 Leerzeichen Einrückung – 4 sind außerhalb von Netplan-YAML üblich, hier scheint 2 die Zauberziffer zu sein. Gut möglich, dass es auch einfach konsistent sein muss, vielleicht könntet Ihr auch mit 12 Zeichen einrücken … Ihr merkt schon, ich bin kein Fan davon. Leerzeichen sind nun mal in der Regel unsichtbar, folglich hagelt es Fehler. Das Internet ist voll von Netplan-YAML-Config-Fragen, die immer wieder auf falsche Einrückungen hinauslaufen – darum hier auch drei Absätze zu diesem elendigen Feature. Später kommt noch ein YAML-Syntax-Test-Tool hinzu 😉

Konfiguration 1: Standard-LAN und -WLAN

Die Netplan-YAML-Config-Dateien findet Ihr unter /etc/netplan/ und zwar in der Form 99-irgendwas.yaml oder 22-blabla.yaml und so weiter – es beginnt also immer mit einer Zahl, die Dateien werden dann der Reihenfolge nach abgearbeitet. Ihr könnt die vorhandene Standarddatei verändern oder – besser! – eine neue Konfiguration anlegen, etwa 99-meinekonfig.yaml. Anlegen und bearbeiten könnt Ihr die Dateien mit einem beliebigen Texteditor, also zum Beispiel mitsudo nano /etc/netplan/99-irgendwas.yaml sudo vi /etc/netplan/99-irgendwas.yaml

Nun habt Ihr in den meisten Rechnern, die Ihr im Netzwerk im Terminal konfigurieren wollt, gleich zwei Netzwerkschnittstellen, nämlich für Kabel und für WLAN – und freilich könnt Ihr beide konfigurieren, beispielsweise um im Regelbetrieb vom stabilen und schnellen Kabel zu profitieren, den Rechner aber auch mal anderswo austellen zu können.

Hier zunächst eine Standardkonfiguration für LAN und WLAN:network: version: 2 ethernets: enp6s0: dhcp4: true wifis: wlo1: optional: true access-points: "mein-wlan": password: "meinpasswort" dhcp4: true

Nochmal: Achtet auf die Einrückungen! networks startet einfach die gesamte Konfiguration. Zwei Leerzeichen eingerückt folgt zunächst eine Versionsangabe. Dann kommen die Ethernets, also die Kabelnetzwerke. enp6s0 ist der Name Netzwerkschnittstelle (wie Ihr diesen findet kommt gleich). Hier genügt eine einzige Angabe: dhcp4: true heißt, dass das Dynamic Host Configuration Protocol (DHCP) automatisch dafür sorgt, dass Ihr eine IP-Adresse vom Router (meist also der Fritzbox) bekommt. (Das optional: true beim WLAN sorgt nur dafür, dass der Boot-Vorgang nicht vom Aufbau der WLAN-Anbindung gebremst wird.)

Für die wifis gilt exakt dasselbe, allerdings müsst Ihr noch als access-points den Namen Eures WLANs und per password das Passwort angeben – samt Anführungszeichen und alles sauber eingerückt.

Nun könnt Ihr die neue Konfiguration zunächst mal ausprobieren:sudo netplan try

Wenn keine Fehler ausgegeben werden, könnt Ihr die Konfiguration binnen 120 Sekunden anwenden oder mit STRG-C abbrechen oder abwarten, um wieder zur alten Config zurückzukehren. Warnung:Die try-Option scheint leider etwas buggy und spuckt bisweilen Fehlermeldungen aus, obwohl das Folgende funktioniert – also nicht überbewerten.

Oder Ihr erstellt die Konfiguration direkt und wendet sie an:sudo netplan generate sudo netplan apply

Und schon habt Ihr eine neue Konfiguration.

Konfiguration 2: Fixe IP-Adressen

Ihr könnt Netzwerkschnittstellen natürlich auch manuell fixe IP-Adressen verpassen. Hier mal die WiFi-Konfiguration von eben, aber mit einer fixen IP für die WLAN-Schnittstelle:network: version: 2 wifis: wlo1: optional: true access-points: "mein-wlan": password: "meinpasswort" dhcp4: false addresses: [192.168.178.222/24] gateway4: 192.168.178.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]

dhcp4 ist hier nun auf false gesetzt, die WLAN-Schnittstelle wlo1 bekommt also keine Adresse von der Fritzbox zugewiesen. Stattdessen vergebt Ihr über addresses die gewünschte IP in eckigen Klammern – diese muss sich natürlich im normalen Fritzbox-Netzwerk befinden, also im Bereich von 192.168.178.XXX. Direkt darunter gehört die Angabe der Fritzbox als Gateway unter gateway4, in der Regel ist das die 192.168.178.1. Die 4steht übrigens bei DHCP und Gateway für IPv4 (die IPv6-Konfiguration verliefe ähnlich). Letztlich fehlen noch die nameservers: Hier könnt Ihr die beiden Adressen von DNS-Servern schlicht übernehmen, die dann dafür sorgen, dass Ihr Webseiten über ihre Namen (etwa tutonaut.de) erreichen könnt.

Diese Konfiguration läuft hier übrigens auf einem MSI Cubi, der als Checkmk- und Medienserver werkelt.

Konfiguration 3: Mix + Subnetze

Nun wird es etwas unüblicher: Diese Konfiguration läuft hier auf einem Raspberry Pi und hängt den Raspi per WLAN in das normale Fritzbox-Netzwerk, das LAN hingegen in ein davon unabhängiges Subnetz (das Subnetz wird über einen Switch verwaltet, dazu folgt später mal ein Artikel):network: ethernets: eth0: dhcp4: no addresses: - 10.0.0.100/24 gateway4: 10.0.0.1 nameservers: addresses: [8.8.8.8, 1.1.1.1] version: 2 wifis: wlan0: optional: true access-points: "mein-wlan": password: "meinpasswort" dhcp4: true

Neu ist hier eigentlich nur eines: Unter ethernets/eth0/addresses wird hier die fixe IP-Adresse 10.0.0.100 vergeben, allerdings in anderer Schreibweise – eingerückt und eine Zeile darunter statt in eckigen Klammern. Manchmal ist YAML/Netplan diesbezüglich großzügig, hilfreich für die Klarheit ist es aber nicht. (Statt true würde wohl auch yes oder on gehen, zugehörig dann no und off – das alles hilft, Fehler zu vermeiden, für Einsteiger ist es aber imho eher verwirrend, wenn überall Beispiele mit unterschiedlichen Schreibweisen auftauchen. Ach, und aufgefallen, dass hier einige Dinge 4 Zeichen eingerückt sind? Nicht YAML-konform, aber läuft. Welch Elend. Egal, weiter im Text.)

In dieser Konfiguration wäre der Raspi also über eine Adresse 192.168.178.XXX (WLAN) und die 10.0.0.100 (LAN) erreichbar.

Tipps und Tools

Zunächst mal ist es wichtig, die korrekten Namen der Netzwerkschnittstellenherauszufinden. Das geht zum Beispiel mitip a

In der Ausgabe seht die Netzwerkschnittstellen samt IP-Adressen und Status. Die Kabelschnittstelle heißt oft eth0 – oft aber auch nicht … Wenn am Anfang ein e (etwa: enp6s0) steht, ist das aber schon mal ein Hinweis auf Ethernet, also Kabel. Das WLAN-Pendant heißt oft wlan0 – wieder gibt der erste Buchstabe den Hinweis, oben etwa bei wlo1 in der Config.

Ihr müsst aber nicht raten, der Befehllshw -c network

sagt direkt, um was für eine Schnittstelle es sich handelt. Oft ist es auch nützlich, die Schnittstellen ein- und auszuschalten. Das könnt Ihr mit dem Tool ifconfig aus der Tool-Sammlung net-tools machen:sudo apt-get install net-tools sudo ifconfig wlan0 up sudo ifconfig wlan0 down

Oder vielleicht wollt Ihr den NetworkManager stoppen, starten oder neustarten:sudo systemctl stop network-manager sudo systemctl start network-manager sudo systemctl restart network-manager oder sudo service network-manager stop sudo servcie network-manager start sudo service network-manager restart

Hinweis: Das eigentliche Tool hier ist systemctl, das service ist ein Wrapper-Skript. Das heißt, dass mit service sowohl systemctl als auch andere Tools zur Servicesteuerung angesprochen werden. Im Grunde ist service für Services sowas ähnliches wie Netplan für Netzwerkkonfigurationen – ein Tool, das mit diversen Backends arbeitet. (Der ganze Hintergrund ist lang und komplex und hier nicht wichtig, Gott sei Dank.)

Oder gegebenenfalls networkd:sudo service systemd-networkd start sudo systemctl stop systemd-networkd ...

Vor allem aber könnte Euch ein Tool helfen, das prüft, ob die YAML-Syntaxkorrekt ist:sudo apt-get install yamllint sudo yamllint /etc/netplan/99-mein-netzwerk.yaml

Wenn das Tool meckert, dass der Dateianfang fehlt, könnt Ihr das ignorieren. Warnung: Scheinbar ist Netplan weniger pingelig als yamllint – bisweilen meckert yamllint, obwohl es funktioniert …

Bei den net-tools ist auch das Tool routedabei, das ein paar Routing-Informationen ausspuckt, sprich Standard-Gateway (in der Regel die Fritzbox), Netzwerkmaske, IP-Bereich und zugehörige Schnittstellen.

Und zu guter letzt das Standard-Test-Werkzeug fürs Netzwerk: Ping, natürlich. Mit Ping könnt und solltet Ihr nach Umkonfigurationen immer kurz testen, ob Gateway, Internet und gegebenenfalls andere Netze oder Geräte erreichbar sind. In einem typischen Fritzbox-Netzwerk (192.168.178.XXX) würden sich also zumindest die Pingsping 192.168.178.1 ping its-kuckmann.de

anbieten. Denn die Fritzbox zu erreichen ist eine Sache, Internetseiten zu erreichen eine andere.

Wenn alles läuft, wollt Ihr vielleicht noch die Datenübertragung (Traffic)überwachen. Das könnt Ihr mit dem schönen kleinen Tool slurm ganz einfach machen:sudo apt-get install slurm slurm -i wlan0

Fatalisten-Tipp zum Schluss: Wenn Ihr am Netzwerk herumfriemelt, immer ein zusätzliches Gerät mit Internetzugriff bereithalten, bevor Ihr bei Problemen nicht mehr nachschauen könnt …