In diesem Tutorial lernen wir, wie man über die Befehlszeile auf Ubuntu 18.04/20.04 Server und Desktop mit wpa_supplicant eine Verbindung zum Wi-Fi-Netzwerk herstellt . 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 entwickelt wurde. WPA-PSK wird auch als WPA-Personal bezeichnet. wpa_supplicant ist eine Implementierung der WPA-Supplicant-Komponente. Ein Supplicant in Wireless LAN ist eine Client-Software, die auf dem Computer des Endbenutzers installiert ist und authentifiziert werden muss, um einem Netzwerk beizutreten.
Bitte beachten Sie, dass Sie wpa_supplicant
installieren müssen Software, bevor Sie sich mit Wi-Fi verbinden, also müssen Sie zuerst eine Verbindung zu Wired Ethernet herstellen, was nur einmal gemacht wird. Wenn dir diese Methode nicht gefällt, sei mir bitte nicht böse. Vielleicht wird Ubuntu eines Tages wpa_supplicant
ausliefern bei einer sauberen Installation.
Schritt 1:Finden Sie den Namen Ihrer drahtlosen Schnittstelle und Ihres drahtlosen Netzwerks
Führen Sie iwconfig
aus Befehl, um den Namen Ihrer drahtlosen Schnittstelle zu finden.
iwconfig
wlan0
war früher ein gebräuchlicher Name für drahtlose Netzwerkschnittstellen auf Linux-Systemen ohne Systemd. Da Ubuntu Systemd verwendet, werden Sie feststellen, dass Ihre drahtlose Netzwerkschnittstelle so etwas wie wlp4s0
heißt . Sie können auch sehen, dass es derzeit keinem Zugriffspunkt zugeordnet ist.
Wenn Ihre drahtlose Schnittstelle nicht angezeigt wird, müssen Sie sie möglicherweise mit dem folgenden Befehl aufrufen.
sudo ifconfig wlp4s0 up
Suchen Sie dann den Namen Ihres drahtlosen Netzwerks, indem Sie mit dem folgenden Befehl nahe gelegene Netzwerke scannen. Ersetzen Sie wlp4s0
mit Ihrem eigenen drahtlosen Schnittstellennamen. ESSID ist die Netzwerknamenkennung.
sudo iwlist wlp4s0 scan | grep ESSID
Schritt 2:Mit WPA_Supplicant mit dem WLAN-Netzwerk verbinden
Installieren Sie nun 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
erstellen mit der wpa_passphrase
Nützlichkeit. wpa_supplicant.conf
ist die Konfigurationsdatei, die alle Netzwerke beschreibt, mit denen sich der Computer verbinden soll. Führen Sie den folgenden Befehl aus, um diese Datei zu erstellen. Ersetzen Sie ESSID und WLAN-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 doppelte Anführungszeichen gesetzt habe, da meine ESSID Leerzeichen enthält.
Die Ausgabe von wpa_passphrase
Der Befehl wird an tee
geleitet , und dann in /etc/wpa_supplicant.conf
geschrieben Datei. Verwenden Sie nun den folgenden Befehl, um Ihre Wireless-Karte mit dem Wireless Access Point zu verbinden.
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
Die folgende Ausgabe zeigt an, dass Ihre WLAN-Karte erfolgreich mit einem Zugangspunkt verbunden ist.
Successfully initialized wpa_supplicant wlp4s0: 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:eb wlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb [PTK=CCMP GTK=CCMP] wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed [id=0 id_str=]
Beachten Sie, dass Sie Network Manager mit dem folgenden Befehl stoppen müssen, wenn Sie die Ubuntu-Desktop-Edition verwenden, da dies sonst zu Verbindungsproblemen bei der Verwendung von wpa_supplicant führt .
sudo systemctl stop NetworkManager
Deaktivieren Sie den automatischen Start von NetworkManager 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 Sie es aus
iwconfig
Sie können sehen, dass die drahtlose Schnittstelle jetzt mit einem Zugriffspunkt verknüpft ist.
Sie können CTRL+C
drücken um den aktuellen wpa_supplicant zu stoppen verarbeiten und im Hintergrund ausführen, indem Sie -B
hinzufügen Flagge.
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
Obwohl wir authentifiziert und mit einem drahtlosen Netzwerk verbunden sind, haben wir noch keine IP-Adresse. Verwenden Sie den folgenden Befehl, um eine private IP-Adresse vom DHCP-Server zu erhalten:
sudo dhclient wlp4s0
Jetzt hat Ihr WLAN-Interface eine private IP-Adresse, die angezeigt werden kann mit:
ip addr show wlp4s0
Jetzt können Sie auf das Internet zugreifen. Um die private IP-Adresse freizugeben, führen Sie
aussudo dhclient wlp4s0 -r
Verbinden mit verstecktem Drahtlosnetzwerk
Wenn Ihr drahtloser Router keine ESSID sendet, müssen Sie die folgende Zeile in /etc/wpa_supplicant.conf
hinzufügen Datei.
scan_ssid=1
Wie unten:
network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1 }
Schritt 3:Beim Booten automatisch verbinden
Um beim Booten automatisch eine Verbindung zum drahtlosen Netzwerk herzustellen, müssen wir wpa_supplicant.service
bearbeiten Datei. Es ist eine gute Idee, die Datei von /lib/systemd/system/
zu kopieren Verzeichnis nach /etc/systemd/system/
Verzeichnis und bearbeiten Sie dann den Dateiinhalt, da wir keine neuere Version von wpa_supplicant
wollen um unsere Änderungen zu überschreiben.
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Bearbeiten Sie die Datei mit einem Befehlszeilen-Texteditor wie Nano.
sudo nano /etc/systemd/system/wpa_supplicant.service
Suchen Sie die folgende Zeile.
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
Ändern Sie es wie folgt. Hier haben wir die Konfigurationsdatei und den Namen der drahtlosen Schnittstelle zum ExecStart
hinzugefügt Befehl.
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 Folgendes direkt unter ExecStart
hinzu Linie.
Restart=always
Wenn Sie die folgende Zeile in dieser Datei finden, kommentieren Sie sie aus (fügen Sie das #-Zeichen am Anfang der Zeile hinzu).
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
, und drücken Sie dann Enter
bestätigen. Drücken Sie zum Beenden Ctrl+X
.) Dann Systemd neu laden.
sudo systemctl daemon-reload
Aktivieren Sie wpa_supplicant Dienst beim Booten starten.
sudo systemctl enable wpa_supplicant.service
Außerdem müssen wir dhclient
starten beim Booten, um eine private IP-Adresse vom DHCP-Server zu erhalten. Dies kann erreicht werden, indem eine systemd-Diensteinheit für dhclient
erstellt wird .
sudo nano /etc/systemd/system/dhclient.service
Fügen Sie den folgenden Text in die Datei ein.
[Unit] Description= DHCP Client Before=network.target After=wpa_supplicant.service [Service] Type=forking ExecStart=/sbin/dhclient wlp4s0 -v ExecStop=/sbin/dhclient wlp4s0 -r Restart=always [Install] WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Aktivieren Sie dann 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 die statische IP-Adresse auf 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 bevorzugten IP-Adresse. Bitte achten Sie auf die Einkerbung. Ein zusätzliches Leerzeichen würde die Konfiguration ungültig machen.
network: ethernets: wlp4s0: dhcp4: no addresses: [192.168.0.102/24] gateway4: 192.168.0.1 version: 2
Speichern und schließen Sie die Datei. Wenden Sie dann die Konfigurationen an.
sudo netplan apply
Sie können auch --debug
einschalten Option, wenn es nicht wie erwartet funktioniert.
sudo netplan --debug apply
Wenn es andere .yaml
gibt Dateien unter /etc/netplan/
Verzeichnis, dann netplan
führt automatisch Konfigurationen aus verschiedenen Dateien zusammen. netplan
verwendet systemd-networkd
als Back-End-Netzwerk-Renderer. Es wird empfohlen, den wpa_supplicant.service
zu konfigurieren läuft vor systemd-networkd.service
, sodass das System zuerst eine Verbindung mit einem Wi-Fi-Zugangspunkt herstellt 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 es in:
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 bei der Verwaltungsoberfläche Ihres Routers anzumelden und der MAC-Adresse Ihrer WLAN-Karte eine statische IP zuzuweisen, sofern Ihr Router diese Funktion unterstützt.
Verwenden 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 in die 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
Der Avahi-Daemon lauscht auf UDP 5353, also müssen Sie diesen Port in der Firewall öffnen. Wenn Sie UFW verwenden, führen Sie den folgenden Befehl aus.
sudo ufw allow 5353/udp
Dann sollten Sie mit dem hostnamectl
einen eindeutigen Hostnamen für Ihre Ubuntu-Box festlegen Befehl. 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
Starten Sie nun avahi-daemon neu.
sudo systemctl restart avahi-daemon
Wenn Sie den Status mit
überprüfensystemctl status avahi-daemon
Sie können den mDNS-Hostnamen sehen, der mit .local
endet Domäne.
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 oder iTunes installieren.
- Auf macOS ist Bonjour vorinstalliert.
Jetzt können Sie auf Dienste zugreifen, indem Sie ubuntubox.local
verwenden Hostname, sodass die IP-Adresse nicht überprüft und eingegeben werden muss.
WLAN auf Raspberry Pi entsperren
Das Ubuntu ARM OS für Raspberry Pi blockiert standardmäßig die drahtlose Schnittstelle. Sie müssen es entsperren mit:
sudo rfkill unblock wifi
Um es beim Booten zu entsperren, erstellen Sie eine systemd-Service-Unit.
sudo nano /etc/systemd/system/unblock-wifi.service
Fügen Sie die folgenden Zeilen hinzu.
[Unit] Description=RFKill Unblock WiFi Devices Requires=wpa_supplicant.service After=wpa_supplicant.service [Service] Type=oneshot ExecStart=/usr/sbin/rfkill unblock wifi ExecStop= RemainAfterExit=yes [Install] WantedBy=multi-user.target
Speichern und schließen Sie die Datei. Autostart beim Booten aktivieren.
sudo systemctl enable unblock-wifi
Ich habe das unblock-wifi.service
gefunden sollte nach dem wpa_supplicant.service
laufen startet, sonst kann es WLAN nicht entsperren. Beachten Sie, dass, wenn Sie eine Desktop-Umgebung installiert haben, wahrscheinlich ein Netzwerkmanager läuft, der die Verbindung stören kann. Sie müssen es deaktivieren. Zum Beispiel verwende ich die leichtgewichtige LXQT-Desktopumgebung auf Raspberry Pi (sudo apt install lubuntu-desktop
) und müssen connman.service und NetworkManager.service deaktivieren.
sudo systemctl disable connman.service NetworkManager.service
Empfohlene Lektüre
- So verwenden Sie Systemd unter Linux – Verwalten Sie Dienste, Ausführungsebenen und Protokolle
Mehrere Wi-Fi-Netzwerke
Die /etc/wpa_supplicant.conf
Konfigurationsdatei kann mehrere Wi-Fi-Netzwerke enthalten. wpa_supplicant wählt automatisch das beste Netzwerk aus, 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
auswpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
Beachten Sie, dass Sie den -a
verwenden müssen Option mit dem tee
Befehl, der das neue WLAN-Netzwerk an die Datei anhängt, anstatt den ursprünglichen Inhalt zu löschen.
Wi-Fi-Sicherheit
Verwenden Sie kein WPA2 TKIP oder WPA2 TKIP+AES als Verschlüsselungsverfahren in Ihrem WLAN-Router. TKIP gilt nicht mehr als sicher. Sie können WPA2-AES verwenden als Verschlüsselungsverfahren.