Table des matières
Le réseau sous Linux
C'est à la fois simple et également compliqué, notamment car il existe une myriade d'outils qui font plus ou moins la même chose mais différemment, et que certains sont (partiellement) à la retraite pendant que d'autres les remplacent (partiellement). L'objectif de cet article est d'essayer d'y voir plus clair.
RJ45, Hardware
En informatique, le hardware est géré par le noyau (kernel) qui joingle avec les drivers. Sous Linux, on peut noter la présence d'un device manager (=gestionnaire de périphériques) udev
qui se charge des périphériques dans /dev
, notamment envoyer des notifications aux couches supérieures (comme NetworkManager
et ses copains) en cas de branchement/débranchement, pour permettre au gestionnaire de connexion de la configurer, puis de la mettre à dispo des autres applications (navigateur web, etc.).
udev
a remplacédevfs
à la gestion des périphériques/dev
depuis le noayu 2.6
Linkographie
Quelques liens en vrac où je suis allé chercher ces infos :
Gestionnaires de réseaux = NetworkManager (peut se combiner avec ifup si pas de recouvrement -réglable dans le fichier de conf), systemd-networkd, dhcpcd, ifupdown, … NetworkManager et networkd sont des services systemd utilisant udev.
networkd a ses fichiers de conf dans /etc/systemd/network. c'est un dossier qui override la config par défaut/générique, que l'on trouve dans /usr/lib/systemd, pour les besoins particuliers de l'admin pour cette machine.
ipupdown (ou ifupdown ?) net-tools et ifupdown2 s'appuient sur la config définie dans /etc/network/interfaces
net-tools = “legacy networking package”, préférez iproute2 net-tools contient ifconfig, netstat, route
ifupdown pour gérer les réseaux, mais n'est pas automatique (nécessite intervention manuelle pour une nouvelle connexion)
ifupdown2 = plus récent, structure intenr en graph de dépendance similaire à systemd mais pour les interfaces réseayux. Agit comme une couche d'abstraction pour d'autres outils (ex: iproute2) ifup/ifdown interagit avec ip comme outil de low-level pour configurer les interfaces (cf man)
iproute2 contien des outils pourconfigurer les interfaces réseaux (dont le old ifconfig ?, ip, iw, ss, ifrename…)
WIP
systemd-networkd n'a pas d'interface graphique, il est préféré sur des machines type serveur.
NetworkManager fallback property
NetworkManager a une fonction ipv4.link-local=fallback pour avoir une ip fixe de type 169.254.xxx.yyy/16 si y'a pas de DHCP:
nmcli con modify ethX ipv4.link-local fallback
[ipv4] method=auto link-local=fallback
⇒ link-local donne une IP 169.254, on n'a pas l'air de pouvoir choisir
Est-ce que NetworkManager est installé ?
systemctl is-active NetworkManager
ou alors regarder systemctl status NetworkManager
https://askubuntu.com/questions/1786/what-is-the-difference-between-network-manager-and-ifconfig-ifup-etc : NetworkManager n'utilise pas /etc/network/interfaces. NetworkManager est un frontend à iproute, dhclient, wpa_supplicant et ppp (?) NetworkManager a une interface GUI (Gnome, KDE…) NetworkManager est “utile” dans les cas où les environnements réseaux changent et sont multiples (ex: laptop)
NetworkManager peut entrer en conflit avec d'autres gestionnaires de connexions réseaux, tels que ifupdown, dhcpcd
NetworkManager peut coexister avec ifupdown s'ils ne se recouvrent pas:
# /etc/NetworkManager/NetworkManager.conf [ifupdown] managed=false # false = prend le contrôle des interfaces définies dans /etc/network/interfaces # true = laisse la main à ifupdown sur les interfaces définies dans /etc/network/interfaces
NetworkManager permet à des utilisateurs (non administrateur/root) de configurer les connexions réseau, via une interface graphique (Gnome, KDE..), mais aussi des utilitaires en ligne de commande : nmcli (commande permettant de créer, modifier, supprimer, activer ou désactiver les interfaces réseaux), nmtui (pareil en interface semi-graphique -ncurse ?-)
Config files : /etc/NetworkManager/NetworkManager.conf
Pour gérer le fallback (ip fixe choisie si DHCP n'est pas possible), on peut créer 2 profils de connexion, avec des priorités différentes : In config files (e.g. /etc/NetworkManager/system-connections/*.nmconnection) :
The DHCP profile [connection] id=dhcp uuid=<an UUID> type=ethernet interface-name=eth0 autoconnect-priority=1 autoconnect-retries=2 [ipv4] dns-search= method=auto dhcp-timeout=10 may-fail=false
The static profile [connection] id=static uuid=<an UUID> type=ethernet interface-name=eth0 autoconnect-priority=0 autoconnect-retries=-1 [ipv4] address1=192.168.1.10/24,192.168.1.1 dns=192.168.1.1 dns-search= method=manual
Note : by default, autoconnect=true when not specified, otherwise it wouldn't work.
<uuid> est visible avec nmcli connection
ifup et ifdown sont des helpers programs qui utilise ifconfig, selon la config définie dans /etc/network/interfaces
Netplan est une couche d'abstraction de configuration, pour NetworkManager et systemd-networkd.
Les fichiers de config de netplan se trouvent dans /etc/netplan.
Une fois la config netplan écrite, on peut générer les fichiers de config pour NetworkManager ou networkd (netplan generate
), tester une configuration qui retourne à la config précédente si on ne valide pas dans les 120 sec (netplan try
), et appliquer la config lorsqu'elle fonctionne (netplan apply
)
Netplan ne permet pas de fallback de la façon dont j'ai besoin (bascule sur une config avec IP fixe choisie si pas de DHCP disponible), au lieu de ça, y'a possibilité d'avoir une ip link-local