Website-Suche

So verwalten Sie drahtlose Verbindungen mit iwd unter Linux


Iwd ist die Abkürzung für "iNet Wireless Daemon". Wie der Name schon sagt, handelt es sich um einen kostenlosen Open-Source-Daemon für die drahtlose Verwaltung, der von Intel für Linux geschrieben wurde. Es wurde entwickelt, um die Verwendung externer Bibliotheken zu vermeiden, es verlässt sich nur auf die Funktionalitäten, die in den Kernel integriert sind. Es kann zusammen mit NetworkManager als Ersatz für wpa_supplicant oder im Standalone-Modus verwendet werden. In diesem Tutorial werden wir die letztere Option untersuchen.

In diesem Tutorial lernen Sie:

  • So installieren Sie iwd auf einigen der am häufigsten verwendeten Linux-Distributionen
  • So starten und aktivieren Sie den iwd-Daemon
  • So erhalten Sie eine Liste der verfügbaren drahtlosen Netzwerke
  • So stellen Sie eine Verbindung zu einem geschützten Netzwerk her
  • So aktivieren Sie den in iwd integrierten DHCP-Client
  • So erhalten Sie eine Liste der bekannten Verbindungen
  • So vergessen Sie eine Verbindung

Verwendete Softwareanforderungen und Konventionen

Installation

Iwd ist in den Repositories aller am häufigsten verwendeten Linux-Distributionen und deren Derivate verfügbar. Hier sehen wir, wie Sie die Installation unter Debian, Fedora und ArchLinux durchführen.

Wenn Sie ein Debian-Benutzer sind, wissen Sie bereits, dass es viele Befehle gibt, die wir verwenden können, um ein Paket auf der Distribution zu installieren. Hier werden wir den benutzerfreundlichen apt-Wrapper verwenden. Wir führen:

sudo apt install iwd

Auf Fedora, der Upstream-/Community-Distribution der Red Hat-Familie, können wir zur Installation eines Pakets dnf (Dandified Yum) verwenden. Um die Installation durchzuführen, führen wir den folgenden Befehl aus:

sudo dnf install iwd

Wenn Archlinux unsere Lieblingsdistribution ist, können wir den Paketmanager pacman verwenden, um die gleiche Aufgabe auszuführen. Die zu verwendende Syntax ist ebenso einfach. Wir starten unseren Terminal-Emulator und geben den folgenden Befehl ein:

sudo pacman -Sy iwd

Im Befehl, den wir verwendet haben, die Optionen: -S und -y. Die erste ist die Kurzversion von --sync: Dies wird die angeforderten Pakete installieren. Die zweite, -y (--refresh), stellt stattdessen sicher, dass eine neue Paketdatenbank heruntergeladen wird.

Das iwd-Paket bietet:

  • Der iwd-Daemon
  • Das Befehlszeilenprogramm iwctl
  • Das IWMON-Monitoring-Tool

Starten und Aktivieren des iwd-Daemons

Das erste, was wir tun müssen, ist, den iwd-Daemon zu starten und optional zu aktivieren, damit er beim Booten automatisch gestartet wird. Wie können wir das tun? Praktisch alle großen Linux-Distributionen verwenden heutzutage das systemd-Init-System, daher müssen wir zur Ausführung dieser Aufgabe das Dienstprogramm systemctl verwenden. Um den Daemon zu starten, führen wir Folgendes aus:

sudo systemctl start iwd

Wenn wir auch möchten, dass der Daemon beim Booten automatisch gestartet wird, müssen wir den folgenden Befehl ausgeben:

sudo systemctl enable iwd

Wir können eigentlich beide Aufgaben mit nur einem Befehl ausführen:

sudo systemctl enable --now iwd

Sobald der iwd-Dienst ausgeführt wird, können wir mit der Suche nach drahtlosen Verbindungen beginnen.

Abrufen einer Liste der verfügbaren drahtlosen Netzwerke

Bevor wir eine Verbindung zu einem drahtlosen Netzwerk herstellen, sollten wir nach den verfügbaren Access Points suchen und eine Liste dieser Zugangspunkte auf dem Terminal abrufen. Das erste, was wir wissen müssen, um eine solche Aufgabe auszuführen, ist der Name der drahtlosen Netzwerkschnittstelle(n), die auf unserem Gerät verfügbar sind, also führen wir aus:

iwctl device list

Hier ist die Ausgabe des obigen Befehls auf dem Rechner, den ich gerade verwende:

                                    Devices
--------------------------------------------------------------------------------
  Name                Address             Powered   Adapter   Mode
--------------------------------------------------------------------------------
  wlan0               xx:xx:xx:xx:xx:xx   on        phy0      station

Die Daten sind in Spalten organisiert. Wir haben die folgenden Informationen:

  1. Der Gerätename
  2. Die MAC-Adresse des Geräts
  3. Der Status der Stromversorgung
  4. Der Name des Drahtlosadapters
  5. Der Arbeitsmodus

Wie Sie sehen können, wird der ursprüngliche Kernelname für die Netzwerkschnittstelle anstelle des vorhersagbaren udev-Namens verwendet. In diesem Fall arbeitet das Gerät im "Client"-Modus, so dass "Station" in der letzten Spalte der Tabelle gemeldet wird.

Sobald wir den Namen unserer drahtlosen Netzwerkschnittstelle kennen, können wir mit der Suche nach verfügbaren Verbindungen beginnen. Um eine solche Aufgabe auszuführen, führen wir Folgendes aus:

iwctl station wlan0 scan

Der obige Befehl sucht nur nach verfügbaren Netzwerken, erzeugt aber keine Ausgabe. Um die Liste der verfügbaren Verbindungen zu erhalten, sollten wir einen zusätzlichen Befehl danach verwenden:

iwctl station wlan0 get-networks

So würde die Ausgabe des Befehls aussehen:

                              Available networks
--------------------------------------------------------------------------------
  Network name                    Security          Signal
--------------------------------------------------------------------------------
  valinor                         psk               ****
  arda                            psk               ****

Wenn wir einen Blick darauf werfen, können wir jeden Netzwerknamen, die Art der dafür verwendeten Sicherheit (eine unter "open", "wep", "psk" oder "8021x") und die Signalstärke sehen. Im nächsten Abschnitt werden wir versuchen, eine Verbindung zu einem dieser Netzwerke herzustellen.

Herstellen einer Verbindung mit einem drahtlosen Netzwerk

Im vorherigen Beispiel haben wir gesehen, wie man die Liste der verfügbaren Netzwerkverbindungen erhält, jetzt versuchen wir, eine Verbindung zu einer herzustellen. Wie wir in der Ausgabe sehen können, die im vorherigen Beispiel zurückgegeben wurde, sind beide verfügbaren Netzwerke durch einen psk (Pre-Shared-Key) geschützt, daher sollten wir, um eine Verbindung zu einem von ihnen herzustellen, iwctl mit der Option --passphrase ausführen und die Passphrase als Argument angeben. Sehen wir uns ein Beispiel an. Angenommen, ich möchte eine Verbindung zum "arda " -Netzwerk herstellen. Das ist der Befehl, den ich ausführen würde:

iwctl station wlan0 connect arda --passphrase mysupersecretpassphrase

Um zu überprüfen, ob die Verbindung jetzt aktiv ist, können wir den folgenden Befehl ausführen:

iwctl station wlan0 show

In diesem Fall würden wir die folgende Ausgabe erhalten:

                                Station: wlan0
--------------------------------------------------------------------------------
  Settable  Property            Value
--------------------------------------------------------------------------------
            Scanning            no
            State               connected
            Connected network   arda
            ConnectedBss        10:13:31:53:26:11
            Frequency           2462
            Security            WPA2-Personal
            RSSI                -77                  dBm
            AverageRSSI         -76                  dBm
            TxMode              802.11n
            TxMCS               5
            TxBitrate           52000                Kbit/s
            RxBitrate           1000                 Kbit/s
            ExpectedThroughput  27375                Kbit/s

Wir können sehen, dass die Verbindung jetzt aktiv ist. Wenn wir jedoch versuchen, zu einem bestimmten Ort zu navigieren oder einfach eine externe Adresse anzupingen, scheitern wir. Warum? Das liegt daran, dass wir zwar eine Verbindung zum Access Point hergestellt haben, der Schnittstelle aber keine IP-Adresse zugewiesen haben und weder ein Gateway noch eine DNS-Serveradresse dafür eingerichtet haben. Wir können diese Parameter statisch einstellen oder sie vom DHCP-Server beziehen, der in unseren Router integriert ist. In diesem Fall verwenden wir die letztere Option.

Um eine dhcp-Konfiguration unter Linux zu erhalten, verwenden wir normalerweise einen Client wie dhcpcd; Iwd hat jedoch einen DHCP-Client integriert, der standardmäßig deaktiviert ist. Um es zu aktivieren, müssen wir die folgenden Zeilen in die iwd-Konfigurationsdatei eingeben: /etc/iwd/main.conf (die Datei existiert möglicherweise standardmäßig nicht):

[General]
EnableNetworkConfiguration=true

Nachdem wir die Konfigurationsdatei gespeichert haben, müssen wir nur noch den Daemon neu starten, und die Verbindung sollte automatisch für uns konfiguriert werden:

sudo systemctl restart iwd

Trennen der Verbindung zu einem Netzwerk

Was ist, wenn wir eine derzeit aktive Verbindung beenden möchten? Der Befehl, den wir verwenden würden, um eine solche Aufgabe auszuführen, ist sehr einfach. Im vorherigen Beispiel haben wir uns mit dem Netzwerk "arda" verbunden. Um die Verbindung zu trennen, würden wir Folgendes ausführen:

iwctl station wlan0 disconnect

Abrufen einer Liste der bekannten Verbindungen

Der iwd-Dienst verfolgt bequem die bekannte Verbindung. Um die Liste von ihnen zu erhalten, können wir den folgenden Befehl starten:

iwctl known-networks list

In diesem Fall haben wir uns nur mit einem Netzwerk verbunden, das wie erwartet in der Ausgabe des Befehls gemeldet wird:

                            Known Networks
--------------------------------------------------------------------------------
  Name                            Security   Hidden   Last connected
--------------------------------------------------------------------------------
  arda                            psk                 Oct 16,  1:15 PM

Wenn wir das nächste Mal eine Verbindung zum Netzwerk herstellen, müssen wir Informationen wie die Passhprase nicht erneut bereitstellen. Iwd speichert Verbindungsinformationen im Verzeichnis /var/lib/iwd. Alle Netzwerkdaten werden in einer dedizierten Datei gespeichert, die mit der Vorlage name.security_type benannt wird. In diesem Fall wäre die Konfigurationsdatei für das Netzwerk "arda" daher: /var/lib/iwd/arda.psk.

Wenn wir aus irgendeinem Grund möchten, dass der iwd-Dienst ein bestimmtes Netzwerk vergisst, müssen wir nur den Befehl iwctl known-networks erneut starten, diesmal mit der Aktion forget. Um den Dienst zum Beispiel das Netzwerk "arda " vergessen zu lassen, würden wir Folgendes ausführen:

iwctl known-networks arda forget

Schlüsse

In diesem Tutorial haben wir über iwd gesprochen, den von Intel für Linux entwickelten iNet Wireless Daemon. Wir haben gelernt, wie man es auf einigen der am häufigsten verwendeten Linux-Distributionen installiert, wie man den iwd-Daemon mit systemctl startet und aktiviert, wie man das iwctl-Dienstprogramm verwendet, um nach den verfügbaren drahtlosen Netzwerken zu suchen, und wie man sich mit einem geschützten Netzwerk verbindet. Wir haben auch gesehen, wie man den integrierten DHCP-Client aktiviert, wie man die Liste der bekannten Verbindung erhält und schließlich, wie man eine Verbindung vergisst.

Verwandte Artikel: