netctl (Français)

État de la traduction:
Cet article est la version francophone de
netctl
. Date de la dernière traduction: 2022-10-21. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
Bridge with netctl
Network configuration (Français)
Configuration réseau sans-fil
netctl
est un gestionnaire de réseau en ligne de commande basé sur des profils et un projet Arch.
Installation
Installez
le paquet
netctl
.
Les
#Unités spéciales de systemd
de
netctl
utilisées dans l'automatisation des connexions requièrent quelques dépendances supplémentaires ; consultez cette section pour plus d'informations.
D'autres dépendances optionnelles sont présentées dans le tableau ci-dessous.
Fonctionnalité
Dépendance
WPA
wpa_supplicant
DHCP
dhcpcd
ou
dhclient
wifi-menu
dialog
PPPoE
ppp
Attention
Ne pas activer de services réseau concurrents et conflictuels. Utilisez
systemctl --type=service
pour vous assurer qu'aucun autre service réseau n'est en cours d'exécution avant d'activer un profil/service
netctl
.
Configuration
netctl
utilise des profils pour gérer les connexions réseau et différents modes de fonctionnement pour lancer les profils automatiquement ou manuellement à la demande.
Les fichiers de profil
netctl
sont stockés dans
/etc/netctl/
et des fichiers de configuration d'exemple sont disponibles dans
/etc/netctl/examples/
.
Pour utiliser un profil d'exemple, il suffit de le copier de
/etc/netctl/examples/
vers
/etc/netctl/
et de le configurer en fonction de vos besoins ; voir les
#Exemples de profils
de base ci-dessous. Le premier paramètre dont vous avez besoin pour créer un profil est l'
Interface
réseau, consultez
Network configuration#Network interfaces
pour plus de détails.
Astuce
Pour les paramètres sans fil, vous pouvez utiliser
wifi-menu
en tant que root pour générer le fichier de profil dans
/etc/netctl/
. Le paquet
dialog
est nécessaire pour utiliser
wifi-menu
.
Utilisez
SkipNoCarrier=yes
dans votre profil pour activer un profil IP statique sur une interface filaire, que le câble soit connecté ou non.
Voir
netctl.profile(5)
pour une liste complète des options de profil.
Utilisation
Voir
netctl(1)
pour une liste complète des commandes
netctl
.
Démarrer un profil
Une fois que vous avez créé votre profil, essayez d'établir une connexion, où
profil
est seulement le nom du profil, pas le chemin complet :
# netctl start
profil
Si la commande ci-dessus échoue, exécutez
journalctl -xn
en tant que root et
netctl status
profile
pour obtenir une explication plus approfondie de l'échec.
Activation d'un profil
Un profil peut être activé pour démarrer au démarrage en utilisant :
# netctl enable
profil
Cela créera et activera un service
systemd
qui démarrera au démarrage de l'ordinateur. Les modifications apportées au fichier de profil ne se propageront pas automatiquement au fichier de service. Après de telles modifications, il est nécessaire de réactiver le profil :
# netctl reenable
profil
Après avoir activé un profil, celui-ci sera lancé au prochain démarrage. Évidemment, cela ne peut réussir que si le câble réseau pour une connexion filaire est branché, ou si le point d'accès sans fil utilisé dans un profil est à portée respectivement.
Si vous devez changer fréquemment de profil (par exemple, si vous voyagez avec un ordinateur portable), utilisez
#Unités spéciales de systemd
au lieu d'activer un profil.
Unités spéciales de systemd
netctl
fournit des services spéciaux
systemd
pour la commutation automatique des profils pour les connexions filaires et sans fil. Voir
netctl.special(7)
pour une liste complète des unités spéciales de systemd.
Filaire
Installez
le paquet
ifplugd
et
démarrez
/
activez
l'unité systemd
netctl-ifplugd@
interface
.service
. Les profils DHCP seront démarrés/arrêtés lorsque le câble réseau est branché/débranché.
L'unité
netctl-ifplugd@
interface
.service
préférera les profils qui utilisent
DHCP
.
Pour démarrer automatiquement un profil d'IP statique, l'option
ExcludeAuto=no
doit être définie dans celui-ci.
Pour donner la priorité à un profil d'IP statique par rapport aux profils DHCP, vous pouvez définir l'option
Priority=2
, qui est supérieure à la priorité par défaut accordée aux profils DHCP, à savoir
Priority=1
.
Sans fil
Démarrez
/
activez
l'unité systemd
netctl-auto@
interface
.service
. Les profils
netctl
seront démarrés/arrêtés automatiquement lorsque vous passez de la portée d'un réseau à la portée d'un autre réseau (itinérance).
Les profils doivent utiliser
Security=wpa-configsection
ou
Security=wpa
pour fonctionner avec
netctl-auto
plutôt que
Security=wpa-config
.
Si vous voulez qu'un profil sans fil ne soit pas lancé automatiquement par
netctl-auto@
interface
.service
, vous devez explicitement ajouter
ExcludeAuto=yes
à ce profil.
Vous pouvez utiliser
priority=
dans la section
WPAConfigSection
(voir
/etc/netctl/examples/wireless-wpa-configsection
) pour définir la priorité d'un profil lorsque plusieurs points d'accès sans fil sont disponibles. Les chiffres les plus grands indiquent une priorité plus élevée.
Notez que
interface
n'est pas littéral, mais doit être substitué par le nom de l'interface de votre périphérique, par exemple
netctl-auto@wlp4s0.service
. Voir
netctl.profile(5)
pour plus de détails.
Note
Si l'un des profils contient des erreurs, comme une variable
Key=
vide ou mal citée, le chargement de l'unité échouera avec le message
"Failed to read or parse configuration '/run/network/wpa_supplicant_wlan0.conf'
, même si ce profil n'est pas utilisé.
Si vous avez précédemment
activation d'un profil
via
netctl
, exécutez
netctl disable
profil
pour empêcher le profil de démarrer deux fois au démarrage.
Il est possible de contrôler manuellement une interface autrement gérée par
netctl-auto
sans avoir à arrêter
netctl-auto.service
. Ceci est fait en utilisant la commande
netctl-auto
. Pour une liste complète des actions disponibles, voir
netctl-auto(1)
.
Trucs et astuces
Exemples de profils
Filaire
Pour une connexion DHCP, seule l'interface
Interface
doit être configurée après avoir copié le profil exemple
/etc/netctl/examples/ethernet-dhcp
dans
/etc/netctl
.
Par exemple :
/etc/netctl/
mon_profil_dhcp
Interface=enp1s0
Connection=ethernet
IP=dhcp
Pour une configuration IP statique, copiez le profil d'exemple
/etc/netctl/examples/ethernet-static
dans
/etc/netctl
et modifiez
Interface
,
Address
,
Gateway
et
DNS
) selon les besoins.
Par exemple :
/etc/netctl/
mon_profil_statique
Interface=enp1s0
Connection=ethernet
IP=static
Address=('10.1.10.2/24')
Gateway='10.1.10.1'
DNS=('10.1.10.1')
Prenez soin d'inclure la notation de sous-réseau de
/24
. Elle équivaut à un masque de réseau de
255.255.255.0
) et sans elle, le profil ne pourra pas démarrer. Voir également
CIDR notation
. Pour aliaser plus d'une adresse IP par un ensemble de NIC
Address=('10.1.10.2/24' '192.168.1.2/24')
. Pour aliaser plus d'un ensemble d'adresses de serveurs DNS, définissez par exemple
DNS=('1.1.1.1' '1.0.0.1')
.
Sans fil (WPA-PSK)
Ce qui suit s'applique aux connexions sans fil standard utilisant une clé pré-partagée (WPA-PSK).
/etc/netctl/wireless-wpa
Description='A simple WPA encrypted wireless connection using 256-bit PSK'
Interface=wlp2s2
Connection=wireless
Security=wpa
IP=dhcp
ESSID=
your_essid
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
Note
Assurez-vous d'utiliser les
règles de citation spéciales
pour la variable
Key
comme expliqué dans
netctl.profile(5) § SPECIAL QUOTING RULES
.
Si la phrase de passe échoue, essayez de supprimer le
\"
de la variable
Key
.
Bien que "chiffrée", la clé que vous mettez dans la configuration du profil est suffisante pour se connecter à un réseau WPA-PSK. Par conséquent, ce processus n'est utile que pour cacher la version lisible par l'homme de la phrase de passe. Cela n'empêchera pas quiconque ayant un accès en lecture à ce fichier de se connecter au réseau.
Obfusquer la phrase de passe sans fil
Vous pouvez également suivre l'étape suivante pour obscurcir la phrase de passe sans fil (
wifi-menu
le fait automatiquement lorsque vous utilisez le paramètre
-o
) :
Les utilisateurs qui ne souhaitent pas que la phrase de passe de leur réseau sans fil soit stockée en texte clair ont la possibilité de stocker la clé pré-partagée 256 bits correspondante, qui est calculée à partir de la phrase de passe et du SSID à l'aide d'algorithmes standard.
Calculez votre clé pré-partagée de 256 bits en utilisant
wpa_passphrase
:
$ wpa_passphrase
votre_essid
network={
  ssid="
your_essid
"
  #psk="
passphrase
"
  psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
}
La
clé pré-partagée
(psk) doit maintenant remplacer la phrase de passe en texte clair de la variable
Key
dans le profil.
Utilisation d'une interface graphique expérimentale
Si vous voulez une interface utilisateur graphique pour gérer
netctl
et vos connexions et que vous n'avez pas peur des paquets non officiels très expérimentaux, il existe quelques options disponibles.
netctl-gui
AUR
fournit une interface graphique basée sur Qt, un daemon DBus et un widget KDE.
netmenu
AUR
utilise
dmenu
comme interface graphique.
Il existe également une application qui affiche des notifications de bureau sur les changements de profil et qui présente une icône dans la barre d'état système :
netctl-tray
AUR
.
Bonding
Consultez
Netctl#Bonding
: cette section nécessite une mise à jour car elle reposait sur un outil qui n'est plus fourni par le noyau.
Utilisation de n'importe quelle interface
Dans certains cas, il peut être souhaitable d'autoriser un profil à utiliser n'importe quelle interface du système. Un exemple courant d'utilisation est l'utilisation d'une image disque commune sur plusieurs machines avec un matériel différent (ceci est particulièrement utile si elles sont sans affichage). Si vous utilisez le schéma de nommage du noyau, et que votre machine ne possède qu'une seule interface Ethernet, vous pouvez probablement deviner que eth0 est la bonne interface. En revanche, si vous utilisez le système d'attribution de noms d'udev
Predictable Network Interface Names
, les noms seront attribués en fonction du matériel spécifique lui-même (par exemple enp1s0), plutôt que dans le simple ordre de détection du matériel (par exemple eth0, eth1). Cela signifie qu'un profil netctl peut fonctionner sur une machine et pas sur une autre, car elles ont toutes des noms d'interface différents.
Une solution simple et rapide consiste à utiliser le répertoire
/etc/netctl/interfaces/
. Choisissez un nom pour votre alias d'interface (
en-any
dans cet exemple), et écrivez ce qui suit dans un fichier portant ce nom (en vous assurant qu'il est
exécutable
).
/etc/netctl/interfaces/en-any
#!/bin/sh
for interface in /sys/class/net/en*; do
        break;
done
Interface=$(basename "$interface")
echo "en-any: using interface $Interface";
Créez ensuite un profil qui utilise l'interface. Faites particulièrement attention à la directive
Interface
. Le reste n'est fourni qu'à titre d'exemple.
/etc/netctl/wired
Description='Wired'
Interface=en-any
Connection=ethernet
IP=static
Address=('192.168.1.15/24')
Gateway='192.168.1.1'
DNS=('192.168.1.1')
Lorsque le profil
wired
est lancé, toute machine utilisant les deux fichiers ci-dessus fera automatiquement apparaître et configurer la première interface Ethernet trouvée sur le système, quel que soit le nom qu'udev lui a attribué. Notez que ce n'est pas la manière la plus robuste de configurer des interfaces. Si vous utilisez plusieurs interfaces, netctl peut essayer de leur attribuer la même interface, ce qui provoquera probablement une interruption de la connectivité. Si vous n'êtes pas gêné par une solution plus compliquée,
netctl-auto
est probablement plus fiable.
Utilisation des hooks
netctl prend en charge les hooks dans
/etc/netctl/hooks/
et les hooks par interface dans
/etc/netctl/interfaces/
. Vous pouvez définir toute option dans un hook/interface que vous pouvez
dans un profil. Cela inclut surtout
ExecUpPost
et
ExecDownPre
.
Lorsqu'un profil est lu, netctl extrait tous les scripts exécutables du répertoire
hooks
, puis il lit le fichier de profil de la connexion et enfin il extrait un script exécutable portant le nom de l'interface utilisée dans le profil du répertoire
interfaces
. Par conséquent, les déclarations dans un script d'interface remplacent les déclarations dans le profil, qui remplacent les déclarations dans les hooks.
Les variables
$INTERFACE
et
$ACTION
sont disponibles dans hooks/interfaces
uniquement
lorsque vous utilisez
netctl-auto
.
Exemples
Exécuter des commandes sur une connexion établie
/etc/netctl/hooks/myservices
#!/bin/sh
ExecUpPost="systemctl start crashplan.service ; systemctl start dropbox@<username>.service"
ExecDownPre="systemctl stop crashplan.service ; systemctl stop dropbox@<username>.service"
Définir le client DHCP par défaut
Pour définir ou modifier le client DHCP utilisé pour tous les profils :
/etc/netctl/hooks/dhcp
#!/bin/sh
DHCPClient='dhclient'
N'oubliez pas de rendre le fichier
exécutable
.
On peut également le spécifier pour une interface réseau spécifique en créant un fichier exécutable
/etc/netctl/interfaces/<interface>
avec la ligne suivante :
DHCPClient='dhclient'
Section WPAConfig minimale
Comme indiqué dans
netctl.profile(5) § OPTIONS FOR 'WIRELESS' CONNECTIONS
, la variable
WPAConfigSection
est un tableau de lignes de configuration passées à
wpa_supplicant
. Ainsi, une WPAConfigSection minimale contiendrait :
Description='A wireless connection using a custom network block configuration'
Interface=wlan0
Connection=wireless
Security=wpa-configsection
IP=dhcp
WPAConfigSection=(
    'ssid="University"'
    'psk="very secret passphrase"'
)
Note
Si vous essayez de vous connecter à un SSID avec des caractères non-ASCII (unicode, emoji, etc), vous pouvez spécifier le SSID en hexadécimal au lieu d'une chaîne de caractères, par exemple
ssid=F09F90BA
pour "🐺". Si vous n'êtes pas sûr de l'encodage hexadécimal, exécutez
wifi-menu
(assurez-vous de supprimer les caractères \ et x).
/etc/resolv.conf
Si vous utilisez des options
DNS*
dans votre profil,
netctl
appelle
resolvconf
pour écraser
resolv.conf
.
Dépannage
Job for netctl@wlan(...).service failed
Attention
Cette section suppose qu'aucun autre service réseau n'est en cours d'exécution avant de lancer un profil/service
netctl
. Voir
#Installation
pour plus de détails.
Certaines personnes rencontrent un problème lorsqu'elles se connectent à un réseau avec
netctl
, par exemple :
# netctl start wlan0-ssid
Job for netctl@wlan0\x2ssid.service failed. See 'systemctl status netctl@wlan0\x2ssid.service' and 'journalctl -xn' for details.
Lorsque vous regardez le journal en exécutant
journalctl -xn
en tant que root, l'un ou l'autre des éléments suivants s'affiche :
1. Si votre périphérique (
wlan0
dans ce cas) est en marche :
network[2322] : L'interface du profil réseau 'wlan0-ssid' est déjà en service.
La mise hors service de l'interface devrait résoudre le problème :
# ip link set wlan0 down
Puis réessayez :
# netctl start wlan0-ssid
2. Si l'erreur persiste, réessayez après avoir ajouté l'option
ForceConnect
:
/etc/netctl/wlan0-ssid
...
ForceConnect=yes
Enregistrez-la et essayez de vous connecter avec le profil :
# netctl start wlan0-ssid
dhcpcd: ipv4_addroute: File exists
Sur certains systèmes, la combinaison de dhcpcd et de netctl provoque des problèmes de délai d'attente lors de la reprise, en particulier si vous avez changé de réseau entre-temps. netctl signalera que vous êtes connecté avec succès mais que vous recevez toujours des problèmes de délai d'attente. Dans ce cas, l'ancienne route par défaut existe toujours et n'est pas renouvelée. Une solution pour éviter ce comportement erroné est de passer à
dhclient
comme client DHCP par défaut. Vous trouverez plus d'informations sur ce problème
ici
.
Problèmes de délai d'attente DHCP
Si vous rencontrez des problèmes de délai d'attente lors de la demande de baux via DHCP, vous pouvez définir une valeur de délai d'attente supérieure aux 30 secondes par défaut de netctl. Créez un fichier dans
/etc/netctl/hooks/
ou
/etc/netctl/interfaces/
, ajoutez-y
TimeoutDHCP=40
pour un timeout de 40 secondes et rendez le fichier exécutable.
Débogage de dhcpcd
Si dhcpcd ne parvient pas à obtenir une adresse, ajoutez l'option
-d
à
/usr/lib/netctl/dhcp
puis exécutez
journalctl -xe
en tant que root pour afficher les messages de débogage qui peuvent indiquer, par exemple, que l'adresse IP offerte par le serveur est rejetée par le client après avoir détecté que l'adresse IP est déjà utilisée.
Problèmes de délais de connexion
Si vous rencontrez des problèmes de délai d'attente qui ne sont pas liés au DHCP (sur une connexion ethernet statique par exemple), et que vous rencontrez des erreurs similaires à celles qui suivent au démarrage de votre profil :
# journalctl _SYSTEMD_UNIT=netctl@
profil'.service
Démarrage du profil réseau '
profil
'...
Aucune connexion trouvée sur l'interface 'eth0' (timeout)
Échec de la mise en service du réseau pour le profil '
profil'
.
Ensuite, vous devez augmenter les délais d'attente pour la porteuse et l'activation en ajoutant
TimeoutUp=
et
TimeoutCarrier=
à votre fichier de profil :
/etc/netctl/
profile
...
TimeoutUp=300
TimeoutCarrier=300
N'oubliez pas de réactiver votre profil :
# netctl reenable
profil
Problèmes avec netctl-auto sur la reprise
Parfois,
netctl-auto
ne parvient pas à se reconnecter lorsque le système reprend après une suspension, une hibernation ou un sommeil hybride. Une solution facile est de redémarrer le service pour
netctl-auto
.
Ceci peut être automatisé avec un service supplémentaire comme le suivant :
/etc/systemd/system/netctl-auto-resume@.service
[Unit]
Description=restart netctl-auto on resume.
Requisite=netctl-auto@%i.service
After=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart netctl-auto@%i.service

[Install]
WantedBy=sleep.target
Pour
activer
ce service pour votre carte sans fil, par exemple, activez
netctl-auto-resume@wlan0.service
en tant que root. Remplacez
wlan0
par l'interface réseau requise.
Si le périphérique n'est pas encore en cours d'exécution sur la reprise lorsque l'unité est démarrée, cela échouera. Cela peut être corrigé en ajoutant la dépendance suivante dans la ligne
After
:
/etc/systemd/system/netctl-auto-resume@.service
...
After=sleep.target sys-subsystem-net-devices-%i.device
...
netctl-auto ne débloque pas automatiquement une carte sans fil pour utiliser une interface
De nombreux ordinateurs portables ont un bouton matériel (ou un interrupteur) pour désactiver la carte sans fil, cependant, la carte peut également être bloquée par le noyau. Ceci peut être géré par
rfkill
.
Si vous souhaitez que
netctl-auto
débloque automatiquement votre carte sans fil pour vous connecter à un réseau particulier, définissez l'option
RFKill=++auto++
pour la connexion sans fil de votre choix, comme spécifié dans
netctl.profile(5)
.
RTNETLINK répond : Le fichier existe (avec plusieurs NICs)
Cette réponse est très trompeuse, elle signifie en réalité que vous avez assigné une passerelle par défaut dans un fichier de contrôle netctl antérieur. Quand netctl démarre la n-ième NIC et va définir sa route locale, il échoue parce qu'il y a déjà une route par défaut de n-1.
Supprimez-la et tout fonctionne, sauf que vous n'avez plus de route par défaut et que vous ne pouvez pas accéder à des éléments tels qu'Internet.
ExecUpPost
ne fonctionne pas car il est exécuté pour chaque carte réseau.
Une solution possible est de créer un nouveau service.  Remplacez "FIRST_INTERFACE" et "SECOND_INTERFACE" par vos noms d'interface, et remplacez "192.168.xxx.yyy" par votre passerelle par défaut.
/etc/systemd/system/defaultrouter.service
[Unit]
Description="Configure default gateway"
Requires=netctl@FIRST_INTERFACE.service netctl@SECOND_INTERFACE.service
After=netctl@FIRST_INTERFACE.service netctl@SECOND_INTERFACE.service

[Service]
Type=oneshot
ExecStart=/usr/bin/ip route add default via 192.168.xxx.yyy

[Install]
WantedBy=network-online.target
Problèmes avec Eduroam et autres connexions MSCHAPv2
Consultez
wpa_supplicant#Problems with Eduroam
.
Avertissements du journal pour les profils utilisant les directives .include
Les profils utilisant toujours les anciennes directives
.include
de systemd produiront des avertissements de journal, par exemple :
systemd[1]: /etc/systemd/system/netctl@<profile>.service:1: .include directives are deprecated, and support for them will be removed in a future version of systemd. Please use drop-in files instead.
Voir
FS#59494
pour plus de détails.
L'exécution de
netctl reenable
profile
mettra à jour le profil au nouveau format des
fichiers de substitution
.
Les hooks ne fonctionnent pas
Si vous avez plusieurs hooks dans
/etc/netctl/hooks/
, des variables comme
ExecUpPost
et
ExecDownPre
ne seront exécutées que depuis un seul fichier. Pour résoudre ce problème, définissez les variables comme suit :
/etc/netctl/hooks/test
ExecUpPost="une commande ; "$ExecUpPost
ExecDownPre="une commande ; "$ExecDownPre
Ceci ajoutera vos commandes à exécuter à celles déjà définies.
Voir aussi
Annonce initiale sur la liste de diffusion
Sujet d'annonce officiel
Annonce officielle dans les actualités