In diesem Tutorial werden wir lernen, wie man eine Verbindung zum Wi-Fi-Netzwerk von der Kommandozeile auf Ubuntu 18.04/20.04 Server und Desktop mit wpa_supplicant. In einem modernen drahtlosen Heimnetzwerk wird die Kommunikation mit WPA-PSK (Pre-Shared Key) geschützt, im Gegensatz zu WPA-Enterprise, das für Unternehmensnetzwerke konzipiert ist. WPA-PSK ist auch als WPA-Personal bekannt. wpa_supplicant ist eine Implementierung der WPA-Supplicant-Komponente. Ein Supplicant im Wireless LAN ist eine Client-Software, die auf dem Computer des Endbenutzers installiert ist und die authentifiziert werden muss, um einem Netzwerk beizutreten.
Schritt 1: Finden Sie den Namen Ihrer Wireless-Schnittstelle und Ihres Wireless-Netzwerks
Rufen Sie den Befehl iwconfig
auf, um den Namen Ihrer Wireless-Schnittstelle zu finden.
iwconfig
wlan0
war früher ein gängiger Name für die drahtlose Netzwerkschnittstelle auf Linux-Systemen ohne Systemd. Da Ubuntu Systemd verwendet, werden Sie feststellen, dass Ihre drahtlose Netzwerkschnittstelle einen Namen wie wlp4s0
hat. Sie können auch sehen, dass es im Moment mit keinem Zugangspunkt verbunden ist.
Wenn Ihre drahtlose Schnittstelle nicht angezeigt wird, müssen Sie sie vielleicht mit dem folgenden Befehl aufrufen.
sudo ifconfig wlp4s0 up
Dann finden Sie den Namen Ihres drahtlosen Netzwerks, indem Sie Netzwerke in der Nähe mit dem folgenden Befehl scannen. Ersetzen Sie wlp4s0
durch den Namen Ihrer eigenen drahtlosen Schnittstelle. ESSID ist der Netzwerknamen-Bezeichner.
sudo iwlist wlp4s0 scan | grep ESSID
Schritt 2: Verbinden mit Wi-Fi-Netzwerk mit WPA_Supplicant
Nun installieren Sie wpa_supplicant
auf Ubuntu 18.04/20.04 aus dem Standard-Software-Repository.
sudo apt install wpasupplicant
Wir müssen eine Datei namens wpa_supplicant.conf
mit dem wpa_passphrase
-Dienstprogramm erstellen. wpa_supplicant.conf
ist die Konfigurationsdatei, in der alle Netzwerke beschrieben werden, mit denen sich der Benutzer mit dem Computer verbinden möchte. Führen Sie den folgenden Befehl aus, um diese Datei zu erstellen. Ersetzen Sie die ESSID und die Wi-Fi-Passphrase durch Ihre eigene.
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
Beachten Sie, dass ich im obigen Screenshot meine ESSID in Anführungszeichen gesetzt habe, da meine ESSID ein Leerzeichen enthält.
Die Ausgabe des wpa_passphrase
-Befehls wird an tee
weitergeleitet und dann in die /etc/wpa_supplicant.conf
-Datei geschrieben. Verwenden Sie nun den folgenden Befehl, um Ihre Wireless-Karte mit einem Wireless Access Point zu verbinden.
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
Die folgende Ausgabe zeigt an, dass Ihre Wireless-Karte erfolgreich mit einem Access Point verbunden ist.
Successfully initialized wpa_supplicantwlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)wlp4s0: Associated with c5:4a:21:53:ac:ebwlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed
Hinweis: Wenn Sie die Ubuntu-Desktop-Edition verwenden, müssen Sie den Network Manager mit dem folgenden Befehl stoppen, da es sonst zu Verbindungsproblemen bei der Verwendung von wpa_supplicant kommt.
sudo systemctl stop NetworkManager
Und deaktivieren Sie den Autostart von NeworkManager beim Booten, indem Sie den folgenden Befehl ausführen.
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
Standardmäßig läuft wpa_supplicant im Vordergrund. Wenn die Verbindung hergestellt ist, öffnen Sie ein weiteres Terminalfenster und führen
iwconfig
Sie können sehen, dass die drahtlose Schnittstelle nun mit einem Zugangspunkt verbunden ist.
Mit dem Flag CTRL+C
können Sie den aktuellen wpa_supplicant-Prozess anhalten und im Hintergrund laufen lassen.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Wir sind zwar authentifiziert und mit dem drahtlosen Netzwerk verbunden, aber wir haben noch keine IP-Adresse. Um eine private IP-Adresse vom DHCP-Server zu erhalten, verwenden Sie den folgenden Befehl:
sudo dhclient wlp4s0
Jetzt hat Ihre drahtlose Schnittstelle eine private IP-Adresse, die mit angezeigt werden kann:
ip addr show wlp4s0
Nun können Sie auf das Internet zugreifen. Um die private IP-Adresse freizugeben, führen Sie
sudo dhclient wlp4s0 -r
Verbinden mit dem versteckten drahtlosen Netzwerk
Wenn Ihr drahtloser Router die ESSID nicht sendet, dann müssen Sie die folgende Zeile in die /etc/wpa_supplicant.conf
-Datei einfügen.
scan_ssid=1
Wie unten:
network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1}
Schritt 3: Automatische Verbindung beim Booten
Um eine automatische Verbindung zum drahtlosen Netzwerk beim Booten herzustellen, müssen wir die wpa_supplicant.service
-Datei bearbeiten. Es ist eine gute Idee, die Datei aus dem Verzeichnis /lib/systemd/system/
in das Verzeichnis /etc/systemd/system/
zu kopieren und dann den Inhalt der Datei zu bearbeiten, denn wir wollen nicht, dass eine neuere Version von wpa_supplicant
unsere Änderungen überschreibt.
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Bearbeiten Sie die Datei mit einem Befehlszeilen-Texteditor, z. B. Nano.
sudo nano /etc/systemd/system/wpa_supplicant.service
Finden Sie die folgende Zeile.
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
Ändern Sie sie wie folgt. Hier haben wir die Konfigurationsdatei und den Namen der drahtlosen Schnittstelle zum ExecStart
-Befehl hinzugefügt.
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0
Es wird empfohlen, immer zu versuchen, wpa_supplicant neu zu starten, wenn ein Fehler erkannt wird. Fügen Sie das Folgende direkt unter der ExecStart
-Zeile ein.
Restart=always
Wenn Sie die folgende Zeile in dieser Datei finden, kommentieren Sie sie aus (fügen Sie das Zeichen # am Anfang der Zeile ein).
Alias=dbus-fi.w1.wpa_supplicant1.service
Speichern und schließen Sie die Datei. (Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O
, dann drücken Sie Enter
zur Bestätigung. Zum Beenden drücken Sie Ctrl+X
). Dann laden Sie systemd neu.
sudo systemctl daemon-reload
Aktivieren Sie den wpa_supplicant-Dienst, damit er beim Booten startet.
sudo systemctl enable wpa_supplicant.service
Wir müssen auch dhclient
beim Booten starten, um eine private IP-Adresse vom DHCP-Server zu erhalten. Dies kann durch das Erstellen einer systemd-Diensteinheit für dhclient
erreicht werden.
sudo nano /etc/systemd/system/dhclient.service
Fügen Sie den folgenden Text in die Datei ein.
Description= DHCP ClientBefore=network.targetAfter=wpa_supplicant.serviceType=forkingExecStart=/sbin/dhclient wlp4s0 -vExecStop=/sbin/dhclient wlp4s0 -rRestart=always WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Aktivieren Sie anschließend diesen Dienst.
sudo systemctl enable dhclient.service
So erhalten Sie eine statische IP-Adresse
Wenn Sie eine statische IP-Adresse erhalten möchten, müssen Sie dhclient.service
deaktivieren.
sudo systemctl disable dhclient.service
Wir müssen netplan verwenden, um eine statische IP-Adresse unter Ubuntu 18.04/20.04 zu konfigurieren. Erstellen Sie eine Konfigurationsdatei unter /etc/netplan/
.
sudo nano /etc/netplan/10-wifi.yaml
Fügen Sie dieser Datei die folgenden Zeilen hinzu. Ersetzen Sie 192.168.0.102
mit Ihrer gewünschten IP-Adresse. Achten Sie bitte auf die Einrückung. Ein zusätzliches Leerzeichen würde die Konfiguration ungültig machen.
network: ethernets: wlp4s0: dhcp4: no addresses: gateway4: 192.168.0.1 version: 2
Speichern und schließen Sie die Datei. Dann wenden Sie die Konfigurationen an.
sudo netplan apply
Sie können auch die Option --debug
einschalten, wenn es nicht wie erwartet funktioniert.
sudo netplan --debug apply
Wenn es andere .yaml
Dateien unter /etc/netplan/
Verzeichnis gibt, dann wird netplan
automatisch Konfigurationen aus verschiedenen Dateien zusammenführen. netplan
verwendet systemd-networkd
als Backend-Netzwerk-Renderer. Es wird empfohlen, das wpa_supplicant.service
vor systemd-networkd.service
laufen zu lassen, damit das System sich zuerst mit einem Wi-Fi-Zugangspunkt verbindet und dann eine private IP-Adresse erhält.
sudo nano /etc/systemd/system/wpa_supplicant.service
Suchen Sie die folgende Zeile.
Before=network.target
Ändern Sie sie zu:
Before=network.target systemd-networkd.service
Speichern und schließen Sie die Datei.
Eine andere Möglichkeit, eine statische IP-Adresse zu erhalten, besteht darin, sich in die Verwaltungsoberfläche Ihres Routers einzuloggen und der MAC-Adresse Ihrer WLAN-Karte eine statische IP-Adresse zuzuweisen, wenn Ihr Router diese Funktion unterstützt.
Verwendung eines Hostnamens für den Zugriff auf Dienste unter Ubuntu
Eigentlich müssen Sie keine statische IP-Adresse für Ihre Ubuntu-Box erhalten. Ubuntu kann mDNS (Multicast DNS) verwenden, um seinen Hostnamen im lokalen Netzwerk bekannt zu geben und Clients können mit diesem Hostnamen auf Dienste auf Ihrer Ubuntu-Box zugreifen. Dieser Hostname kann immer zur IP-Adresse Ihrer Ubuntu-Box aufgelöst werden, auch wenn sich die IP-Adresse ändert.
Um mDNS zu verwenden, müssen Sie avahi-daemon installieren, eine Open-Source-Implementierung von mDNS/DNS-SD.
sudo apt install avahi-daemon
Starten Sie den Dienst.
sudo systemctl start avahi-daemon
Autostart beim Booten aktivieren.
sudo systemctl enable avahi-daemon
Avahi-daemon lauscht auf UDP 5353, daher müssen Sie diesen Port in der Firewall öffnen. Wenn Sie UFW verwenden, dann führen Sie den folgenden Befehl aus.
sudo ufw allow 5353/udp
Dann sollten Sie mit dem Befehl hostnamectl
einen eindeutigen Hostnamen für Ihre Ubuntu-Box festlegen. Ersetzen Sie ubuntubox durch Ihren bevorzugten Hostnamen, der nicht bereits von anderen Geräten im lokalen Netzwerk belegt sein sollte.
sudo hostnamectl set-hostname ubuntubox
Nun starten Sie avahi-daemon neu.
sudo systemctl restart avahi-daemon
Wenn Sie den Status mit
systemctl status avahi-daemon
überprüfen, sehen Sie den mDNS-Hostnamen, der mit der .local
-Domain endet.
Auf dem Client-Computer müssen Sie außerdem eine mDNS/DNS-SD-Software installieren.
- Linux-Benutzer sollten
avahi-daemon
installieren. - Windows-Benutzer müssen den Bonjour-Dienst aktivieren, indem sie entweder den Bonjour-Druckdienst installieren oder iTunes installieren.
- Auf macOS ist Bonjour vorinstalliert.
Nun können Sie auf Dienste zugreifen, indem Sie den ubuntubox.local
Hostnamen verwenden, wodurch die Notwendigkeit entfällt, die IP-Adresse zu prüfen und einzugeben.
Wifi auf dem Raspberry Pi entsperren
Das Ubuntu ARM OS für Raspberry Pi blockiert standardmäßig die drahtlose Schnittstelle. Sie müssen die Blockierung aufheben:
sudo rfkill unblock wifi
Um die Blockierung beim Booten aufzuheben, erstellen Sie eine systemd Service Unit.
sudo nano /etc/systemd/system/unblock-wifi.service
Fügen Sie die folgenden Zeilen hinzu.
Description=RFKill Unblock WiFi DevicesRequires=wpa_supplicant.serviceAfter=wpa_supplicant.serviceType=oneshotExecStart=/usr/sbin/rfkill unblock wifiExecStop=RemainAfterExit=yesWantedBy=multi-user.target
Speichern und schließen Sie die Datei. Aktivieren Sie den Autostart beim Booten.
sudo systemctl enable unblock-wifi
Ich habe festgestellt, dass das unblock-wifi.service
nach dem Start des wpa_supplicant.service
laufen sollte, da es sonst das WLAN nicht entsperren kann. Beachten Sie, dass wenn Sie eine Desktop-Umgebung installiert haben, wahrscheinlich ein Netzwerkmanager läuft, der die Verbindung stören kann. Sie müssen ihn deaktivieren. Ich verwende zum Beispiel die leichtgewichtige LXQT-Desktop-Umgebung auf dem Raspberry Pi (sudo apt install lubuntu-desktop
) und muss connman.service und NetworkManager.service deaktivieren.
sudo systemctl disable connman.service NetworkManager.service
Mehrere Wi-Fi-Netzwerke
Die /etc/wpa_supplicant.conf
-Konfigurationsdatei kann mehrere Wi-Fi-Netzwerke enthalten. wpa_supplicant wählt automatisch das beste Netzwerk basierend auf der Reihenfolge der Netzwerkblöcke in der Konfigurationsdatei, der Netzwerksicherheitsstufe und der Signalstärke.
Um ein zweites Wi-Fi-Netzwerk hinzuzufügen, führen Sie
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
Beachten Sie, dass Sie die Option -a
mit dem Befehl tee
verwenden müssen, der das neue Wifi-Netzwerk an die Datei anhängt, anstatt den ursprünglichen Inhalt zu löschen.
Wrapping Up
Ich hoffe, diese Anleitung hat Ihnen geholfen, Ubuntu 18.04/20.04 über die Kommandozeile mit dem WPA Supplicant mit einem Wi-Fi-Netzwerk zu verbinden. Wie immer, wenn Sie diesen Beitrag nützlich fanden, dann abonnieren Sie unseren kostenlosen Newsletter, um mehr Tipps und Tricks zu erhalten 🙂