Systemd-networkd

De ArchwikiFR

systemd offre maintenant la possibilité de gérer le réseau par lui-même sans outils supplémentaires tels que netctl ou NetworkManager.

Note : Cette page ne fait pas l'état complet de ce que peut faire systemd-networkd, veuillez vous référer au man(8) systemd-networkd. Il est ici seulement question d'une utilisation simple dans des conditions usuelles.

Configuration

La configuration se fait dans /etc/systemd/network dans des fichiers en .network.

Ethernet

Pour une connexion simple en DHCP sur l'interface eth0 :

Fichier: /etc/systemd/network/eth0.network
[Match]
Name=eth0

[Network]
DHCP=yes

Pour l'utiliser, il suffit d'activer les services :

systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service

Et puis c'est tout.

WiFi

Interfaces

Bon, bah c'est pas franchement plus dur (étrangement) ! Pour une interface IF0 :

Fichier: /etc/systemd/network/IF0.network
[Match]
Name=IF0

[Network]
DHCP=yes

Et ensuite il vous faut wpa_supplicant et le fichier /etc/wpa_supplicant/wpa_supplicant-IF0.conf (que vous pouvez compléter à partir de /etc/wpa_supplicant/wpa_supplicant.conf). Cf. Wifi également.

Fichier: /etc/wpa_supplicant/wpa_supplicant-IF0.conf
# Minimum vital, lisez le man et les commentaires de /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1

Puis pour ajouter un réseau, c'est super compliqué facile :

wpa_passphrase ESSID >> /etc/wpa_supplicant/wpa_supplicant-IF0.conf

Non, vous ne révez pas, il n'y a bien qu'une unique ligne.

Note :
wpa_passphrase ESSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant-IF0.conf
Cette commande ne fonctionne pas avec certains caractères spéciaux - si besoin se servir, pour générer une clef, de la commande pwgen Ex : pwgen -1 63

Et pour finir, on démarre les bons services :

systemctl enable systemd-networkd.service
systemctl enable wpa_supplicant@IF0.service
systemctl start systemd-networkd.service
systemctl start wpa_supplicant@IF0.service

Et... c'est tout. Voilà. Fini. Je vous laisse lire le manuel de wpa_supplicant pour gérer la priorité des réseaux et les réseaux plus compliqués, genre eduroam.

Note : IF0 est à remplacer (partout) par le nom de votre interface wifi, listée dans ip a : ce peut être wlan0, wlp2s0 ou encore wls1. Par conséquent, les fichiers seront par exemple /etc/wpa_supplicant/wpa_supplicant-wlan0.conf et /etc/systemd/network/wlan0.network et le service, wpa_supplicant@wlan0.service.

Scanner les réseaux

Comme nous n'avons pas netctl, point de wifi-menu ! On utilise donc au choix iw ou iwlist qui est dans wireless_tools.

iw dev IF0 scan # | grep SSID
iwlist IF0 scanning # | grep ESSID
Note : Supprimez le '#' pour n'obtenir que le nom des différents réseaux disponibles.
Note : wifi-radar - par gksu ou kdesu - permet un scan en interface graphique

resolv.conf

Maintenant, on a systemd-networkd qui s'occupe de nous attribuer une adresse IP, mais quid du /etc/resolv.conf ? Il faut utiliser celui généré par systemd-resolved et créer un lien symbolique :

systemctl enable systemd-resolved.service
systemctl start systemd-resolved.service
rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf