netctl (Français) - ArchWiki

Jump to content

# netctl (Français)

4 languages

- Deutsch
- English
- 日本語
- 中文（简体）

From ArchWiki

É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-guiAUR fournit une interface graphique basée sur Qt, un daemon DBus et un widget KDE. netmenuAUR utilise dmenu comme interface graphique, et gnome-shell-extension-netctl-auto-gnome-gitAUR[broken link: package not found] est une extension du shell gnome.

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-trayAUR.

### 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 (netctl-auto-resumeAUR[broken link: package not found]) :

    /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 and other MSCHAPv2 connections.

### 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

Categories:

- Network managers (Français)
- Arch projects (Français)
- Commands (Français)

Hidden category:

- Pages with broken package links