Netctl est un outil en ligne de commande pour la gestion et la configuration réseau. Il permet de configurer sa connexion wifi et ethernet. Cette note n'a pas vocation à être exhaustive ni même remplacer la documentation officielle. Elle a pour but de synthétiser les commandes dont je me sert le plus souvent.
Netctl est un script (batch ?) qui s'appuie sur systemctl pour démarrer, arrêter les services réseaux en s’appuyant sur des profils; profils étant de simples fichiers textes décrivant le type de connexion souhaité, la carte réseau qui est concernée, l'ipv4/ipv6...
Dans cette note nous allons voir :
Tout d'abord il faut savoir que netctl enregistre tous les profils de connexion dans le répertoire /etc/netctl
. Le sous répertoire /etc/netctl/examples
contient des ... examples de profil. Pour ma part j'ai juste copié le profil dans le répertoire /etc/netctl/
Il existe trois profils ethernet.
Ma box s'occupe de distribuer les ip sur le réseau local, je me contente donc du profil ethernet-dhcp dans mon cas.
On fait un ip a
(ou ip link)pour trouver le nom de nos interfaces. Voici ce que ça donne pour moi :
Mon interface ethernet porte le nom enp0s31f6, elle est pour l'instant éteinte (DOWN) Mon interface wifi porte le nom de wlan0 et elle est actuellement attribué à l'adresse IP 10.17.3.246 de mon réseau local.
Je commence par la connexion filaire ethernet et pour cela je copie le fichier d'exemple /etc/netctl/example/ethernet-dhcp
dans mon répertoire /etc/netctl/
avec un nom de fichier qui m'est simple à repérer comme par exemple en préfixant le fichier par le nom de l'interface :
cp /etc/netctl/example/ethernet-dhcp /etc/netctl/enp0s31f6-ethernet-dhcp
On édite le fichier pour mettre le bon nom de mon interface soit changer la valeur de la ligne Interface
:
Nous faisons attention à mettre les bonnes permission sur le fichier pour que seul l'utilisateur root ait les droits de lecture et d'écriture :
chmod 600 enp0s31f6-ethernet-dhcp
On peut maintenant démarrer notre profil ethernet avec la commande
sudo netctl start enp0s31f6-ethernet-dhcp
S'assurer d'avoir branché le câble ethernet sur le port RJ45 bien entendu :-) On vérifie que l'on a bien une connexion sortante en faisant un petit ping quelconque : ping 1.1.1.1
. Netctl se charge tout seul de démarrer l'interface .
Nous allons faire simple en utilisant la commande wifi-menu, un autre super script qui tourne avec netctl. wifi-menu va nous détecter tous les réseaux disponibles mais surtout elle va créer automatiquement le fichier de profil dans notre répertoire /etc/netctl et nous connectera au réseau dans la foulée. trop bien ;-)
sudo wifi-menu -o
-o pour masquer le mot de passe avec des astérisque pour ne pas qu'il soit visible quand on le tape et de le stocker sous forme d'hexadécimal. Sinon il apparaîtra en claire dans le fichier de profil ce qui est un peut moyen. Tout dépend de l'accès que vous avez à votre ordinateur.
La page de manuel (man netctl
) nous donne les options pour utiliser la commande.
Nous avons déjà utilisé la commande pour démarrer notre connexion ethernet avec start. D'autres commandes sont disponibles pour démarrer/arrêter, activer/désactiver pour le démarrage automatique de la connexion choisie, de lister les connexions déjà enregistrées et un astérisque montrant la connexion active.
Pour moi netctl list
affichera la liste de tous les profils que j'ai sur mon ordinateur :
Pour démarrer une connexion :
sudo netctl start enp0s31f6-ethernet-dhcp
Pour arrêter une connexion :
sudo netctl stop enp0s31f6-ethernet-dhcp
Il faut savoir que netctl va ajouter tout seul comme un grand une connexion systemctl et ajouter le service automatique. Plus besoin dans démarrer la connexion à chaque fois qu'on allume son ordinateur. Cela fonctionne pour toutes les connexions que ce soit l'ethernet ou le wifi. les commandes sont simples :
Pour activer une connexion: sudo netctl enable enp0s31f6-ethernet-dhcp
ou sudo netctl enable wlan0
Pour désactiver une connexion: sudo netctl disable enp0s31f6-ethernet-dhcp
ou sudo netctl disable wlan0
Je n'invente rien. Tout se trouve dans la documentation officielle dans le wiki de ArchLinux
On utilise pour cela ifplugd (source : netctl ifplugd archlinux wiki )
Jusque là nous avons tapé les commandes netctl à la main pour initier notre connexion. Mais ce serait quand plus pratique d'avoir une connexion automatiquement dès qu'on branche notre cable RJ45 et nous attribuer notre IP. netctl fournit donc un script qui va lire notre configuration netctl.
On installe le paquet ifplugd :
sudo pacman -S ifplugd
Et on démarre et on active le service :
sudo systemctl start netctl-ifplugd@enp0s31f6.service
sudo systemctl enable netctl-ifplugd@enp0s31f6.service
Bien sur vous devez remplacer enp0s31f6
par le nom de votre interface (les copier/coller c'est pas bien ;-) ).
Actuellement je n'utilise aucun script pour le wifi. je ne souhaite pas de connexion automatique pour le wifi. Je préfère aujourd'hui le faire à la main. J'ai mis dans mon bashrc des alias pour me simplifier les choses et cela me convient bien.