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

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

NetworkManager TUI

  1. Je remplace Profile Name par un nom parlant, par exemple WAN.
  2. Rien à signaler dans le champ ETHERNET.
  3. Dans le champ IPv4 CONFIGURATION, je passe de Automatic à Manual et je clique sur Show.
  4. Je remplis les champs Addresses et Gateway avec les valeurs qui vont bien.
  5. Je ne touche pas à DNS servers et Search domains.
  6. Dans le champ IPv6 CONFIGURATION, je passe de Automatic à Ignore, vu que je n’utilise pas l’IPv6 sur cette machine.
  7. Je confirme par OK.

NetworkManager TUI

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

NetworkManager TUI

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.