iNet Wireless Daemon: Ablösung für WPA Supplicant

Aus LinuxUser 11/2020

iNet Wireless Daemon: Ablösung für WPA Supplicant

© Fernando Gregory Milan, 123RF

Hex, hex

Intels iNet Wireless Daemon Iwd bildet fast alle Funktionen des veralteten WPA Supplicant ab und ist dabei um den Faktor 10 kleiner.

WLAN gehört zu Notebooks, Smartphones und anderen mobilen Geräten wie das Atmen zum Leben. Was dabei im Hintergrund passiert, interessiert jedoch die wenigsten Nutzer. Unter Linux spielt bei drahtlosen Verbindungen das bereits seit 2003 entwickelte WPA Supplicant [1] eine wichtige Rolle. Es sorgt beim Wi-Fi Protected Access Standard (WPA) und dessen Nachfolgeversionen [2] dafür, dass die dort noch zur Verschlüsselung verwendeten WEP-Schlüssel oft genug ausgetauscht werden, um Angriffe zu erschweren.

Von WEP zu WPA

WEP (Wired Equivalent Privacy [3]), der Vorläufer von WPA, gilt seit 2001 als unsicher. WPA ergänzt die dort verwendeten Schlüssel mit einem Rotationsverfahren, bei dem der Router periodisch den Client auffordert, sich neu zu autorisieren. Das erledigt WPA Supplicant, dessen manuelle Konfiguration in früheren Zeiten kein wirkliches Vergnügen war.

Seit wir unsere Netzwerke von grafischen Benutzeroberflächen wie NetworkManager, Wicd oder Connman verwalten lassen, arbeitet WPA Supplicant im Hintergrund. Der Dinosaurier eignet sich aufgrund seiner Komplexität und vielen Abhängigkeiten heute allerdings nur noch bedingt für den Einsatz auf mobilen Geräten oder im Internet der Dinge. Deshalb gibt es seit einigen Jahren Bestrebungen, eine schlanke Alternative zu schaffen.

iNet Wireless Daemon

Intel war in den letzten vier Jahren federführend bei der Entwicklung des iNet Wireless Daemons Iwd. Wir haben bereits vor zwei Jahren über die damals noch junge Anwendung berichtet [4]. Das Fazit lautete damals, dass Iwd zwar einige Hürden abbaue, aber noch unter Kinderkrankheiten litte. Wir werfen jetzt erneut einen Blick auf das Tool.

Seit dem letzten Bericht – damals stand Iwd bei Version 0.10 – hat sich einiges getan. Im Oktober 2019 erschien die stabile Version 1.0, heute steht der Dienst bei Version 1.9. NetworkManager-Versionen ab 1.12.0 können Iwd als Backend verwenden. Darüber hinaus arbeitet Iwd auch mit Alternativen wie Connman und Systemd-networkd zusammen. Seit wenigen Wochen gibt es zudem eine kleine GUI für Anwender, die auf NetworkManager oder Connman verzichten wollen, aber trotzdem eine grafische Einrichtung wünschen.

Arch Linux hat seit einem Snapshot im Juli 2020 auf Iwd umgestellt. Bei der Installation ruft man also zum Aufsetzen von WLAN nicht mehr den Befehl wifi-menu auf. Der Netzwerkmanager Netctl wurde durch Iwctl ersetzt. Auch Ubuntu testet seit Monaten den Einsatz von Iwd als neuen Standard. Die Entwickler sehen Iwd als funktional fast ebenbürtig zu WPA Supplicant an.

Test mit Ubuntu

Wir haben uns deshalb einen Daily Build von Ubuntu 20.10 als Testobjekt ausgesucht und versuchen, möglichst viele von Ubuntus Testanforderungen nachzustellen [5]. Wir setzen dazu Iwd zunächst im Terminal ein, testen es dann mit der neuen GUI und verwenden es abschließend bei NetworkManager anstelle von WPA Supplicant als Backend.

Iwd besteht aus dem Daemon Iwd, dem Client Iwctl und dem Monitoring-Tool Iwmon. Daemon und Client wurden in unter 50 000 Zeilen Code realisiert. Zum Vergleich: WPA Supplicant kommt auf fast 500 000 Codezeilen. Iwd nutzt zudem wo immer möglich Kernel-Funktionen, etwa bei der Verschlüsselung. Zu den weiteren Vorteilen zählen WPS-Support, ein vereinfachtes Netzwerkmanagement, schnelles Roaming ohne unnötige Scan-Vorgänge sowie Unterstützung für mehrere Profile pro Nutzer. Für Unternehmen bietet Iwd außerdem Support für EAP und TPM.

Iwd kommt grundsätzlich ohne Konfiguration aus, da es hauptsächlich Kernel-Funktionen nutzt. Lediglich fortgeschrittene Funktionen wie WPA-Enterprise benötigen zwingend Konfigurationsdateien. Iwd unterstützt WPA3 und OWE (Opportunistic Wireless Encryption). Bei Letzterem handelt es sich um ein standardisiertes Verfahren, mit dem sich in öffentlichen WLAN-Netzen ausgetauschte Daten ohne Passwort sicher verschlüsseln lassen.

Wi-Fi Direct

Seit Iwd 1.8 unterstützt Iwd über eine eigene API auch Peer-to-Peer-Funktionen. Das Bluetooth-ähnliche Wi-Fi Direct, auch Wi-Fi P2P genannt, ermöglicht das direkte Verbinden unterstützter Geräte ohne einen zwischengeschalteten Access Point.

Zunächst gilt es, einige Vorbereitungen zu treffen (Listing 1). Dabei haben wir zunächst überprüft, ob Iwd eventuell schon installiert ist (Zeile 1). Das war beim getesteten Ubuntu-Image vom 12. September noch nicht der Fall. Das legt die Vermutung nahe, dass Iwd bei Ubuntu 20.10 WPA Supplicant noch nicht ablösen wird. Wir installieren also Iwd und entfernen NetworkManager (Zeile 3 und 4). Dann deaktivieren wir WPA und stoppen es durch Maskieren endgültig (Zeile 5 bis 7). Zu guter Letzt aktivieren wir Iwd (Zeile 8 und 9) und prüfen, ob das geklappt hat (Zeile 10).

Listing 1

$ systemctl status iwd.service
Unit iwd.service could not be found.
$ sudo apt install iwd
$ sudo apt purge network-manager
$ sudo systemctl stop wpa_supplicant.service
$ sudo systemctl disable wpa_supplicant.service
$ sudo systemctl mask wpa_supplicant
$ sudo systemctl enable iwd.service
$ sudo systemctl start iwd.service
$ systemctl status iwd.service

Eine schlechte Idee wäre es, nach Abschluss der Vorarbeiten das Paket wpasupplicant entfernen zu wollen, anstatt es lediglich zu deaktivieren: Das würde bei Ubuntu aufgrund überbordender Abhängigkeiten auch das Metapaket ubuntu-desktop mit sich reißen (Abbildung 1). Unter Debian würde dabei der NetworkManager mit entfernt – ein unter Umständen erwünschtes Resultat (Abbildung 2).

Abbildung 1: Ein Grund f&uuml;r den Ersatz von WPA&nbsp;Supplicant sind seine &uuml;berbordenden Abh&auml;ngigkeiten. So rei&szlig;t es beim Entfernen unter Ubuntu unter anderem auch das Metapaket <span class="ui-element">ubuntu-desktop</span> mit sich.

Abbildung 1: Ein Grund für den Ersatz von WPA Supplicant sind seine überbordenden Abhängigkeiten. So reißt es beim Entfernen unter Ubuntu unter anderem auch das Metapaket ubuntu-desktop mit sich.


Abbildung 2: Bei Debian l&auml;sst sich WPA&nbsp;Supplicant einfacher entfernen, wenn man Iwd ohne NetworkManager nutzen m&ouml;chte. Letzterer wandert beim Entfernen von WPA&nbsp;Supplicant praktischerweise gleich mit in die Tonne.

Abbildung 2: Bei Debian lässt sich WPA Supplicant einfacher entfernen, wenn man Iwd ohne NetworkManager nutzen möchte. Letzterer wandert beim Entfernen von WPA Supplicant praktischerweise gleich mit in die Tonne.

WLAN einrichten

Haben Sie die erforderlichen Schritte nachvollzogen und fällt die Statusabfrage positiv aus, geht es an das Einrichten des WLAN-Zugangs. Erhalten Sie eine Meldung über eine Blockade durch RF-kill (Abbildung 3), rufen Sie den Befehl sudo rfkill list wifi auf. Erscheint hier hinter Soft blocked ein yes, hilft unter Umständen das Betätigen von [Fn]+[F5], um den Flugmodus auszuschalten. Hilft das nicht, verwenden Sie sudo rfkill unblock wifi. Den Erfolg überprüfen Sie mit rfkill oder einer erneuten Statusabfrage für iwd.service (Abbildung 4).

Abbildung 3: Ist WPA&nbsp;Supplicant stillgelegt und startet Iwd bei jedem Reboot, meldet die Statusabfrage einen aktiven Dienst. Allerdings weist die letzte Zeile darauf hin, dass die Schnittstelle des Ger&auml;ts nicht aktiviert werden kann.

Abbildung 3: Ist WPA Supplicant stillgelegt und startet Iwd bei jedem Reboot, meldet die Statusabfrage einen aktiven Dienst. Allerdings weist die letzte Zeile darauf hin, dass die Schnittstelle des Geräts nicht aktiviert werden kann.


Abbildung 4: Der Grund f&uuml;r die fehlgeschlagene Aktivierung der Schnittstelle liegt in einer Blockade, die Sie zun&auml;chst aufheben m&uuml;ssen.

Abbildung 4: Der Grund für die fehlgeschlagene Aktivierung der Schnittstelle liegt in einer Blockade, die Sie zunächst aufheben müssen.

Nun starten Sie als normaler User mit dem Befehl iwctl eine interaktive Shell. Dort listet die Eingabe von help alle verfügbaren Optionen auf. Zum Verlassen der Shell drücken Sie [Strg]+[D]. Iwd lässt sich auch ohne interaktive Shell bedienen; Sie müssen dann lediglich jedem Befehl ein iwctl voranstellen.

Geräte und deren Bezeichnung finden Sie mit dem Kommando adapter list. Über device list ermitteln Sie, wie das System die Schnittstelle benennt (Abbildung 5). Auf dem Testgerät heißt die Schnittstelle wlan0. Der Befehl device wlan0 show liefert weitere Details zur Netzwerkkarte (Abbildung 6). Nun scannen Sie mit station wlan0 scan und lassen sich dann mit station wlan0 get-networks die verfügbaren Netzwerke anzeigen (Abbildung 7).

Abbildung 5: Der Befehl <code>adapter list</code> zeigt die verf&uuml;gbaren Netzwerkkarten mit Bezeichnung und Herstellerkennung an.

Abbildung 5: Der Befehl adapter list zeigt die verfügbaren Netzwerkkarten mit Bezeichnung und Herstellerkennung an.


Abbildung 6: Mittels <code>device list</code> ermitteln Sie die Bezeichnung und den Zustand der Schnittstelle. Hier hei&szlig;t sie <code>wlan0</code> und wird nach dem Entfernen der Blockade durch <code>rfkill</code> als aktiv angezeigt.

Abbildung 6: Mittels device list ermitteln Sie die Bezeichnung und den Zustand der Schnittstelle. Hier heißt sie wlan0 und wird nach dem Entfernen der Blockade durch rfkill als aktiv angezeigt.


Abbildung 7: Nach einem Scan zeigt der Befehl <code>station wlan0 get-networks</code> die verf&uuml;gbaren Netzwerke an.

Abbildung 7: Nach einem Scan zeigt der Befehl station wlan0 get-networks die verfügbaren Netzwerke an.

Der Befehl station wlan0 connect SSID, bei dem Sie den Platzhalter mit der korrekten SSID ersetzen, aktiviert die Verbindung. Das abgefragte Passwort wird nach Eingabe mit der Endung .psk unter /var/lib/iwd gespeichert.

Die Funktionsfähigkeit prüfen Sie bei Bedarf mit einem erneuten status wlan0 get-networks. Ein bei der dunklen Farbgebung des Ubuntu-Terminals kaum zu sehender Haken signalisiert den erfolgreichen Verbindungsaufbau. Dann prüfen Sie den Status mit einem Ping ins Internet oder rufen eine Webseite im Browser ab. Bei einem Neustart des Rechners baut Iwd die drahtlose Verbindung automatisch wieder auf.

DNS-Auflösung

Sollte die Verbindung nicht stehen oder treten beim Roaming durch wechselnde Netze Probleme auf, legen Sie mit Ihrem bevorzugten Editor die Datei /etc/iwd/main.conf mit dem Inhalt aus Listing 2 an. Die Konfiguration bewirkt, dass Iwd die Namensauflösung an Systemd-resolved übergibt. Alternativ steht auch resolvconf zur Verfügung.

Listing 2

[General]
EnableNetworkConfiguration=true
[Network]
NameResolvingService=systemd

Wie Sie sehen, lässt sich ein Rechner mit Iwd schnell in ein drahtloses Netzwerk integrieren; grafische Tools braucht es nicht zwingend. Ebenso funktioniert der Zugang mit Iwd auch über WPS, das per Knopfdruck, PIN-Eingabe oder Near Field Communication (NFC) an einem Gerät selbsttätig eine drahtlose Verbindung konfiguriert [6]. Ob Ihr Endgerät damit kompatibel ist, zeigt der Befehl wsc list.

Handelt es sich beispielsweise um einen Router, der WPS unterstützt, geben Sie anschließend wsc wlan0 push-button ein und drücken dann den WPS-Knopf am Router. Beim Verwenden einer PIN lautet der Befehl wsc wlan0 start-user-pin, gefolgt von der achtstelligen PIN. Weitere von Iwctl unterstützte Befehle fasst die Tabelle “Nützliche Befehle für Iwd” zusammen.

Befehl

Beschreibung

ad-hoc list

Listet Geräte im Ad-hoc-Modus auf.

ap list

Listet Access Points in der Nähe auf.

known-networks-list

Listet bekannte Netzwerke auf.

known-networks SSID forget

Bekanntes Netzwerk vergessen.

station Gerät connect-hidden SSID

Zu verstecktem Netzwerk verbinden.

Kleine GUI

Als Nächstes sehen wir uns an, was die erst wenige Wochen alte GUI Iwgtk aus dritter Hand zu leisten vermag. Bisher bieten lediglich Arch Linux (via AUR) und Alpine Linux ein Binärpaket dafür an. Das Paket lässt sich jedoch schnell selbst bauen, als einzige Abhängigkeiten verlangt es Iwd und GTK3.

Dazu laden Sie, während die soeben mit Iwd erstellte Verbindung noch steht, das ZIP-Archiv von Github [7] herunter. Sind Sie mit Git vertraut, können Sie es auch klonen. Bei Ubuntu fehlten allerdings noch grundlegende Pakete der Systemadministration, wie gcc und make, sowie zusätzlich libgtk3-dev und libglib2.0-dev-bin. Diese müssen Sie zunächst nachinstallieren.

Anschließend begeben Sie sich in den entpackten Ordner iwgtk-master/ und rufen von dort nacheinander make, sudo make install und make clean auf. Nach dem Start der Anwendung durch den Aufruf von iwgtk sehen Sie sofort die noch bestehende Verbindung. Die GUI beherrscht bereits die häufigsten Anwendungsfälle, die über die D-Bus-API bereitstehen. Beenden Sie zum Beispiel nun die bestehende Verbindung, können Sie sie mit iwgtk wiederherstellen.

Die Anwendung erlaubt es, nach umliegenden Netzwerken zu scannen, bekannte Netzwerke anzuzeigen, versteckte Netzwerke einzubinden sowie Geräte per WPS anzukoppeln, was wir mit einem Netzwerk-Drucker überprüft haben. Die MAC-Adresse zeigt die GUI ebenfalls an. Zudem können Sie vom als Station bezeichneten Standardmodus auf Access-Point (AP) oder Ad-hoc umstellen. Ein Icon für den Systemabschnitt haben die Entwickler jüngst hinzugefügt (Abbildung 8).

Abbildung 8: Die kleine GUI Iwgtk deckt die meisten Befehle des Clients Iwctl ab. Sie kann und will allerdings nicht mit der Funktionsf&uuml;lle von NetworkManager konkurrieren.

Abbildung 8: Die kleine GUI Iwgtk deckt die meisten Befehle des Clients Iwctl ab. Sie kann und will allerdings nicht mit der Funktionsfülle von NetworkManager konkurrieren.

Mit WPA-Enterprise-Funktionen kann die GUI nicht dienen, da die über die D-Bus-API nicht bereitstehen, sondern einer Konfiguration in /var/lib/iwd/ bedürfen. WPA-Enterprise erlaubt der WLAN-Basisstation, Verbindungsanfragen von den Clients mit einem nachgelagerten Radius-Server auszuhandeln. Sollten Sie Bedarf an den WPA-Enterprise-Spielarten EAP-PWD, EAP-PEAP oder TTLS-PAP haben, finden Sie im Artikel zu Iwd im Wiki von Arch Linux entsprechende Abschnitte, die beim Erstellen der Konfiguration weiterhelfen [8].

Auch mit NetworkManager

Jetzt fehlt noch der Test von Iwd als Backend für NetworkManager. Dazu müssen Sie Letzteren zunächst wieder installieren. Falls WPA Supplicant noch von den vorigen Tests aktiv ist, besteht kein Handlungsbedarf; falls nicht, wiederholen Sie die entsprechenden Schritte aus Listing 1. Danach editieren Sie die Konfiguration von NetworkManager (Listing 3).

Listing 3

$ sudo systemctl stop NetworkManager.service
$ sudo nano /etc/NetworkManager/NetworkManager.conf

Dort tragen Sie in der Sektion [device] die neue Zeile wifi.backend=iwd ein. Danach starten Sie NetworkManager wieder, rebooten den Rechner und müssen nun das WLAN-Passwort eingeben. Sie haben damit WPA Supplicant erfolgreich gegen Iwd ausgetauscht. Damit können Sie sich über ein sich schneller aufbauendes WLAN freuen, das sich auch auf WPA3 Personal umstellen lässt.

Den in unserem ersten Artikel zu Iwd geschilderten Fehler mit der nicht mehr zu deaktivierenden kabelgebundenen Netzwerkschnittstelle konnten wir beim aktuellen Test nicht mehr nachvollziehen: Eine einmal deaktivierte Kabelschnittstelle blieb deaktiviert. Auch das WLAN-Icon oben rechts zeigte korrekt den Zustand der Verbindung an.

Die Inbetriebnahme des Routers TP-Link AC750 als Access Point an einer Fritzbox funktionierte in allen drei getesteten Szenarien (Abbildung 9). Zum Monitoring mit der dritten Komponente Iwmon< brauchen Sie Root-Rechte. Der Befehl gibt ein eher für Entwickler geeignetes Log aus. Sie leiten es mittels iwmon -w log.pcap in eine Datei um, die Sie zur Analyse in Wireshark laden und bei entsprechendem Netzwerk-Know-how auswerten können (Abbildung 10). Die Endung .pcap steht für Packet Capture, eine Schnittstelle zum Mitschneiden des Netzwerkverkehrs.

Abbildung 9: Nach Anschluss des kleinen Reise-Routers TP-Link AC750 an eine Fritzbox konnten wir den TP-Link als Access Point sofort in Betrieb nehmen.

Abbildung 9: Nach Anschluss des kleinen Reise-Routers TP-Link AC750 an eine Fritzbox konnten wir den TP-Link als Access Point sofort in Betrieb nehmen.


Abbildung 10: Das Analyse-Tool Iwmon erlaubt das Umleiten der Ausgabe in eine PCAP-Datei, die sich mit entsprechenden Kenntnissen beispielsweise mit Wireshark auswerten l&auml;sst.

Abbildung 10: Das Analyse-Tool Iwmon erlaubt das Umleiten der Ausgabe in eine PCAP-Datei, die sich mit entsprechenden Kenntnissen beispielsweise mit Wireshark auswerten lässt.

Fazit

Auf einem unserer Notebooks läuft Iwd 1.9 unter der Distribution Siduction seit rund drei Monaten reibungslos als Backend für NetworkManager und lässt sich auch durch ein VPN nicht aus dem Tritt bringen. Auch beim Test mit einer Entwicklungsversion von Ubuntu 20.10, die Iwd 1.8 mitbringt, traten keine Probleme auf.

Nach unserem Dafürhalten eignet sich Iwd im Privatbereich bestens als Ersatz für das veraltete WPA Supplicant und genügt hier auch fortgeschrittenen Anforderungen hinsichtlich Access Points und versteckten Netzwerken. Die Funktionalität von WPA-Enterprise konnten wir nicht überprüfen. Möchten Sie tiefer in die Materie eintauchen, empfiehlt sich das Youtube-Video eines Vortrags des deutschen Intel-Entwicklers Marcel Holtmann zur Entwicklung von Iwd [9]. (cla)

Glossar

EAP

Extensible Authentication Protocol. Von der Internet Engineering Task Force (IETF) entwickeltes, allgemeines Authentifizierungsprotokoll, das Authentifizierungsverfahren wie Radius, digitale Zertifikate oder SIM-Karten unterstützt.

TPM

Trusted Platform Module. Ein Chip, der einen Computer oder ähnliche Geräte um grundlegende Sicherheitsfunktionen erweitert. Zusammen mit einem angepasstem Betriebssystem und entsprechender Software entsteht dann eine Trusted Computing Plattform.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 11/2020 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben