1.8. NetworkManager et les Scripts réseau

Dans les versions précédentes de Red Hat Enterprise Linux, le mode par défaut pour configurer le réseau utilisait des scripts réseau. Le terme script réseau est couramment utilisé pour décrire le script /etc/init.d/network et tout autre script installé qu'il évoque. Les fichiers fournis par l'utilisateur sont généralement considérés comme fichiers de configuration, mais peuvent aussi être interprétés comme un amendement aux scripts.
Bien que le NetworkManager fournisse le service de réseautage par défaut, les développeurs de Red Hat ont travaillé dur pour s'assurer que les scripts et le NetworkManager collaborent. Les administrateurs, qui sont habitués aux scripts, peuvent continuer à les utiliser. Nous espérons que les deux systèmes vont pouvoir exécuter en parallèle et bien coopérer. Il est prévu que la plupart des scripts shell utilisateur des versions précédentes continueront de fonctionner. Red Hat recommande que vous les testiez tout d'abord.

Exécuter le script de réseau

Exécutez le script uniquement avec l'utilitaire systemctl qui supprimera les variables d'environnement existantes, et qui veillera à une exécution sans reproche. La commande prend la forme suivante :
systemctl start|stop|restart|status network
Notez que dans Red Hat Enterprise Linux 7, le NetworkManager est tout d'abord démarré, et /etc/init.d/network vérifiera avec le NetworkManager qu'il n'y a pas d'interférence avec les connexions du NetworkManager. Le NetworkManager est sensé être la première application qui utilise les fichiers de configuration sysconfig et /etc/init.d/network est secondaire, jouant un rôle de soutien en cas d'échec.
Le script /etc/init.d/network n'est pas lié aux événements, il exécute soit :
  1. manuellement (par l'une des commandes systemctl start|stop|restart network),
  2. au démarrage et à l'arrêt si le service réseau est actif (suite à la commande systemctl enable network).
C'est un processus manuel qui ne réagit pas à des événements qui ont eu lieu après le démarrage. Les utilisateurs peuvent aussi appeler les scripts ifup et ifdown manuellement.

Commandes personnalisées et Scripts de réseau

On exécute des commandes personnalisées dans les scripts /sbin/ifup-local ifdown-pre-local et ifdown locale uniquement lorsque ces périphériques sont contrôlés par le service /etc/init.d/network. Si vous avez modifié les initscripts eux-mêmes (par exemple, /etc/sysconfig/network-scripts/ifup-eth) alors ces modifications sont remplacées par une mise à jour du paquet initscripts. Il est donc recommandé de ne pas modifier les initscripts directement et de faire usage des scripts /sbin/if*local, afin que vos modifications personnalisées puissent survivre aux mises à jour des packages. Les initscripts vérifient juste la présence de ladite /sbin/if*local et les exécutent s'ils existent. Les initscripts ne mettent rien dans les scripts /sbin/if*local, et le RPM initscripts (ou tout autre paquet) ne posséde, ni ne peut modifier ces fichiers.
Il y a plusieurs façons d'exécuter des tâches personnalisées lorsque les connexions réseau sont up ou down, avec les anciens scripts réseau, ainsi qu'avec le NetworkManager. Lorsque le NetworkManager est activé, le script ifup et ifdown demandera au NetworkManager si le NetworkManager gère l'interface en question, qui se trouve sur la ligne « DEVICE= » dans le fichier ifcfg. Si le NetworkManager gère bien ce périphérique et que le périphérique n'est pas déjà connecté, alors ifup demandera au NetworkManager de démarrer la connexion.
  • Si le périphérique est géré par le NetworkManager et qu'il est déjà connecté, rien ne se produira.
  • Si le périphérique n'est pas géré par le NetworkManager, alors les scripts démarreront une connexion par les mécanismes anciens, non-NetworkManager, qui étaient utilisés avant la venue du NetworkManager.
Si vous évoquez "ifdown" et que le périphérique est géré par le NetworkManager, alors ifdown demandera au NetworkManager de terminer la connexion.
Les scripts surveillent le NetworkManager de façon dynamique, donc, si le NetworkManager n'est pas en cours d'exécution, les scripts se retourneront sur les anciens mécanismes basés scripts pré-NetworkManager.