Voici le troisième article dans la série sur NetworkManager. Dans le précédent article, j’ai abordé la prise en main de NetworkManager sur un serveur local simple, c’est-à-dire doté d’une seule interface réseau. Aujourd’hui nous allons poursuivre notre découverte de NetworkManager dans un scénario un peu plus compliqué, avec une machine dotée de deux cartes réseau.
J’ai décidé d’utiliser le terme de « routeur » pour décrire cette machine. J’aurais pu tout aussi bien l’appeler « passerelle » (gateway) ou « pare-feu » (firewall). Quoi qu’il en soit, la machine amandine.microlinux.lan
relie les deux réseaux 192.168.2.0/24
et 192.168.3.0/24
.
Je commence par installer NetworkManager.
$ sudo yum install NetworkManager-tui
L’installation de ce paquet récupère automatiquement les dépendances nécessaires.
$ rpm -qa | grep -i networkmanager NetworkManager-1.18.0-5.el7_7.2.x86_64 NetworkManager-libnm-1.18.0-5.el7_7.2.x86_64 NetworkManager-tui-1.18.0-5.el7_7.2.x86_64
J’active et je lance le service.
$ sudo systemctl enable NetworkManager --now
Cette fois-ci, je vais me servir de l’outil nmcli
pour afficher l’état de NetworkManager.
$ nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled $ nmcli connection show NAME UUID TYPE DEVICE enp2s0 967d89c9-2d03-4494-b2fa-2d00218a8991 ethernet enp2s0 enp3s1 42661c96-adcc-4cd8-b29f-4e159edf1a4b ethernet --
Ma machine dispose de deux interfaces réseau enp2s0
et enp3s1
. L’installateur de CentOS 7 a créé une série de fichiers correspondants dans le répertoire /etc/sysconfig/network-scripts
.
$ ls -1 /etc/sysconfig/network-scripts/ifcfg-* /etc/sysconfig/network-scripts/ifcfg-enp2s0 /etc/sysconfig/network-scripts/ifcfg-enp3s1 /etc/sysconfig/network-scripts/ifcfg-lo
Je supprime ces fichiers à l’exception de ifcfg-lo
.
$ cd /etc/sysconfig/network-scripts/ $ sudo rm -f ifcfg-enp2s0 ifcfg-enp3s1
Je redémarre ma machine pour partir sur de bonnes bases. Nous avons vu dans le précédent article qu’en l’absence de configuration, NetworkManager vérifie s’il est possible de recevoir les informations de configurations via un serveur DHCP local. Cette vérification se fait pour toutes les cartes réseau de la machine. Voyons ce que ça donne.
$ nmcli con show NAME UUID TYPE DEVICE Wired connection 2 4a60b23d-f3bf-3564-9620-9a1f6899e68a ethernet enp2s0 Wired connection 1 76e86ea6-f9c3-3910-a499-2829bfdfab76 ethernet --
Notez que dans l’exemple ci-dessus, j’ai employé la forme brève con
pour connection
.
Je lance l’interface de configuration NetworkManager TUI (sudo nmtui
) et je sélectionne Edit a connection
> Wired connection 2
> Edit
. Voici comment cela se présente.
- Je remplace
Profile Name
par un nom parlant, par exempleWAN
. - Rien à signaler dans le champ
ETHERNET
. - Dans le champ
IPv4 CONFIGURATION
, je passe deAutomatic
àManual
et je clique surShow
. - Je remplis les champs
Addresses
etGateway
avec les valeurs qui vont bien. - Je ne touche pas à
DNS servers
etSearch domains
. - Dans le champ
IPv6 CONFIGURATION
, je passe deAutomatic
àIgnore
, vu que je n’utilise pas l’IPv6 sur cette machine. - Je confirme par
OK
.
À présent, je sélectionne ma deuxième interface Wired connection 1
> Edit
. Je procède de manière similaire pour la configuration de ma deuxième carte.
J’enregistre la configuration et je quitte l’interface de configuration.
Les connections disponibles apparaissent désormais sous leurs noms respectifs WAN
et LAN
.
$ nmcli con show NAME UUID TYPE DEVICE WAN 4a60b23d-f3bf-3564-9620-9a1f6899e68a ethernet enp2s0 LAN 76e86ea6-f9c3-3910-a499-2829bfdfab76 ethernet --
La configuration est inscrite dans deux nouveaux fichiers situés dans le répertoire /etc/sysconfig/network-scripts
.
$ ls -1 /etc/sysconfig/network-scripts/ifcfg-* /etc/sysconfig/network-scripts/ifcfg-LAN /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-WAN
Pour prendre en compte cette nouvelle configuration, je pourrais très bien passer par le menu Activate a connection
de NetworkManager TUI.
Alternativement, je peux invoquer nmcli
avec la directive up
à tour de rôle en indiquant successivement l’option id
suivie du profil respectif.
$ sudo nmcli con up id WAN $ nmcli con show NAME UUID TYPE DEVICE WAN 4a60b23d-f3bf-3564-9620-9a1f6899e68a ethernet enp2s0 LAN 76e86ea6-f9c3-3910-a499-2829bfdfab76 ethernet -- $ sudo nmcli con up id LAN $ nmcli con show NAME UUID TYPE DEVICE WAN 4a60b23d-f3bf-3564-9620-9a1f6899e68a ethernet enp2s0 LAN 76e86ea6-f9c3-3910-a499-2829bfdfab76 ethernet enp3s1
Étant donné que je n’ai fourni aucun serveur DNS, je dois éditer /etc/resolv.conf
à la main. Mon routeur est muni d’un serveur Dnsmasq. Je vais donc pointer vers celui-ci.
# /etc/resolv.conf
nameserver 127.0.0.1
Deux remarques importantes concernant la gestion des DNS avec NetworkManager.
- Si la configuration d’une ou plusieurs interfaces réseau comporte des indications sur les DNS, alors NetworkManager écrit ces informations dans
/etc/resolv.conf
. - En revanche, si les informations DNS sont absentes de la configuration des interfaces, NetworkManager ne touche pas au fichier
/etc/resolv.conf
.
L’outil nmcli
comporte une myriade d’options et de directives. Pour les détails, je vous renvoie à l’aide intégrée (nmcli --help
) et au manuel en ligne (man nmcli
).
Notre prochain article traitera de l’utilisation de NetworkManager sur un serveur dédié.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.