Comment gérer les connexions sans fil à l’aide d’iwd sous Linux
Iwd est l’acronyme de « iNet wireless daemon ». Comme son nom l’indique, il s’agit d’un démon de gestion sans fil gratuit et open source écrit par Intel pour Linux. Il est conçu pour éviter l’utilisation de librairies externes, il s’appuie uniquement sur les fonctionnalités intégrées au noyau. Il peut être utilisé conjointement avec NetworkManager en remplacement de wpa_supplicant ou en mode autonome. Dans ce tutoriel, nous allons explorer cette dernière option.
Dans ce tutoriel, vous allez apprendre :
- Comment installer iwd sur certaines des distributions Linux les plus utilisées
- Comment démarrer et activer le démon iwd
- Comment obtenir la liste des réseaux sans fil disponibles
- Comment se connecter à un réseau protégé
- Comment activer le client dhcp intégré à iwd
- Comment obtenir une liste des connexions connues
- Comment oublier une connexion
Configuration logicielle requise et conventions utilisées
Installation
Iwd est disponible dans les dépôts de toutes les distributions Linux les plus utilisées et de leurs dérivés. Ici, nous allons voir comment effectuer l’installation sur Debian, Fedora et ArchLinux.
Si vous êtes un utilisateur de Debian, vous savez déjà qu’il existe de nombreuses commandes que nous pouvons utiliser pour installer un paquet sur la distribution. Ici, nous allons utiliser le wrapper apt convivial. Nous gérons :
sudo apt install iwdSur Fedora, qui est la distribution amont/communautaire de la famille Red Hat, pour installer un paquet, nous pouvons utiliser dnf (Dandified Yum). Pour effectuer l’installation, nous exécutons la commande suivante :
sudo dnf install iwdSi Archlinux est notre distribution préférée, nous pouvons utiliser le gestionnaire de paquets pacman pour effectuer la même tâche. La syntaxe à utiliser est tout aussi simple. Nous lançons notre émulateur de terminal et lançons la commande suivante :
sudo pacman -Sy iwdDans la commande, nous avons utilisé les options : -S et -y. La première est la version courte de --sync : elle installera le(s) paquet(s) demandé(s). La seconde, -y (--refresh), à la place, permet de télécharger une nouvelle base de données de paquets.
Le forfait iwd offre :
- Le démon
iwd - L’utilitaire de ligne de commande
iwctl - L’outil de surveillance
iwmon
Démarrage et activation du démon iwd
La première chose que nous devons faire est de démarrer le démon iwd avec et éventuellement de l’activer, de sorte qu’il sera automatiquement démarré au démarrage. Comment pouvons-nous le faire ? De nos jours, pratiquement toutes les principales distributions Linux utilisent le système d’initialisation systemd, donc pour effectuer la tâche, nous devons utiliser l’utilitaire systemctl. Pour démarrer le démon, nous exécutons :
sudo systemctl start iwdSi nous voulons également que le démon soit automatiquement démarré au démarrage, nous devons lancer la commande suivante :
sudo systemctl enable iwdNous pouvons en fait effectuer les deux tâches avec une seule commande :
sudo systemctl enable --now iwdUne fois que le service iwd est en cours d’exécution, nous pouvons commencer à rechercher des connexions sans fil.
Obtention d’une liste des réseaux sans fil disponibles
Avant de nous connecter à un réseau sans fil, nous pouvons rechercher les points d’accès disponibles et obtenir une liste d’entre eux sur le terminal. La première chose que nous devons connaître pour effectuer une telle tâche, est le nom de l’interface ou des interfaces réseau sans fil disponibles sur notre machine, nous exécutons donc :
iwctl device listVoici le résultat de la commande ci-dessus sur la machine que j’utilise actuellement :
Devices
--------------------------------------------------------------------------------
Name Address Powered Adapter Mode
--------------------------------------------------------------------------------
wlan0 xx:xx:xx:xx:xx:xx on phy0 station
Les données sont organisées en colonnes. Nous disposons des informations suivantes :
- Le nom de l’appareil
- L’adresse MAC de l’appareil
- L’état de l’alimentation
- Le nom de la carte sans fil
- Le mode de fonctionnement
Comme vous pouvez le voir, le nom original du noyau est utilisé pour l’interface réseau au lieu de l’interface prédictible udev. Dans ce cas, l’appareil fonctionne en mode « client », donc « station » est signalé dans la dernière colonne du tableau.
Une fois que nous connaissons le nom de notre interface réseau sans fil, nous pouvons commencer à rechercher les connexions disponibles. Pour effectuer cette tâche, nous exécutons :
iwctl station wlan0 scanLa commande ci-dessus recherchera simplement les réseaux disponibles, mais ne produira aucune sortie. Pour obtenir la liste des connexions disponibles, nous devons utiliser une commande supplémentaire après celle-ci :
iwctl station wlan0 get-networksVoici à quoi ressemblerait le résultat de la commande :
Available networks
--------------------------------------------------------------------------------
Network name Security Signal
--------------------------------------------------------------------------------
valinor psk ****
arda psk ****
En y jetant un coup d’œil, nous pouvons voir chaque nom de réseau, le type de sécurité utilisé pour celui-ci (un parmi « ouvert », « WEP », « PSK » ou « 8021x ») et la force du signal. Dans la section suivante, nous essaierons de nous connecter à l’un de ces réseaux.
Connexion à un réseau sans fil
Dans l’exemple précédent, nous avons vu comment obtenir la liste des connexions réseau disponibles, essayons maintenant de nous connecter à l’une d’elles. Comme nous pouvons le voir dans la sortie renvoyée dans l’exemple précédent, les deux réseaux disponibles sont protégés par un psk (Pre-Shared-Key), donc, pour se connecter à l’un d’entre eux, nous devons exécuter iwctl avec l’option --passphrase, et fournir la phrase de passe comme argument. Voyons un exemple. Supposons que je veuille me connecter au réseau « arda " ; c’est la commande que j’exécuterais :
iwctl station wlan0 connect arda --passphrase mysupersecretpassphrasePour vérifier que la connexion est maintenant active, nous pouvons exécuter la commande suivante :
iwctl station wlan0 showDans ce cas, nous obtiendrions le résultat suivant :
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
Nous pouvons voir que la connexion est maintenant active ; Cependant, si nous essayons d’accéder à un emplacement ou d’envoyer un ping à une adresse externe, nous échouons. Pourquoi? En effet, bien que nous nous soyons connectés au point d’accès, nous n’avons pas attribué d’adresse IP à l’interface, et nous n’avons pas configuré de passerelle pour celle-ci, ni d’adresse de serveur DNS. Nous pouvons définir ces paramètres de manière statique ou nous pouvons les obtenir à partir du serveur dhcp intégré à notre routeur. Dans ce cas, nous utiliserons cette dernière option.
Pour obtenir une configuration dhcp sous Linux, nous utilisons généralement un client comme dhcpcd ; Cependant, iwd intègre un client dhcp, qui est désactivé par défaut. Pour l’activer, nous devons entrer les lignes suivantes dans le fichier de configuration iwd : /etc/iwd/main.conf (le fichier peut ne pas exister par défaut) :
[General]
EnableNetworkConfiguration=true
Après avoir enregistré le fichier de configuration, il nous suffit de redémarrer le démon, et la connexion devrait être automatiquement configurée pour nous :
sudo systemctl restart iwdDéconnexion d’un réseau
Que se passe-t-il si nous voulons mettre fin à une connexion actuellement active ? La commande que nous utiliserions pour effectuer une telle tâche est très simple. Dans l’exemple précédent, nous nous sommes connectés au réseau « arda » ; Pour s’en déconnecter, nous exécuterions :
iwctl station wlan0 disconnectObtention d’une liste des connexions connues
Le service iwd garde facilement une trace de la connexion connue. Pour obtenir la liste d’entre eux, nous pouvons lancer la commande suivante :
iwctl known-networks listDans ce cas, nous venons de nous connecter à un réseau, qui, comme prévu, est signalé dans la sortie de la commande :
Known Networks
--------------------------------------------------------------------------------
Name Security Hidden Last connected
--------------------------------------------------------------------------------
arda psk Oct 16, 1:15 PM
La prochaine fois que nous nous connecterons au réseau, nous n’aurons plus besoin de fournir des informations telles que le passhprase. Iwd stocke les informations de connexion dans le répertoire /var/lib/iwd. Chaque donnée réseau est stockée dans un fichier dédié, nommé à l’aide du modèle name.security_type. Dans ce cas, le fichier de configuration du réseau « arda » serait donc : /var/lib/iwd/arda.psk.
Si, pour une raison quelconque, nous voulons que le service iwd oublie un réseau spécifique, tout ce que nous avons à faire est de relancer la commande iwctl known-networks, cette fois en utilisant l’action d’oubli. Pour faire oublier au service le réseau « arda », par exemple, on exécuterait :
iwctl known-networks arda forgetConclusions
Dans ce tutoriel, nous avons parlé d’iwd, le démon sans fil iNet développé par Intel pour Linux. Nous avons appris à l’installer sur certaines des distributions Linux les plus utilisées, à démarrer et à activer le démon iwd à l’aide de systemctl, à utiliser l’utilitaire iwctl pour rechercher les réseaux sans fil disponibles et à se connecter à un réseau protégé. Nous avons également vu comment activer le client dhcp intégré, comment obtenir la liste des connexions connues, et enfin, comment oublier une connexion.
