Outils pour utilisateurs

Outils du site


cours:informatique:sysadmin:administrer_un_systeme_linux:310_configurer_interfaces_reseaux

Notes et transcriptions du cours “Administrez un système Linux” disponible sur la plateforme Openclassrooms.

Configurez les cartes réseaux

La plupart du temps, votre serveur Linux sera installé au fin fond d'une salle blanche avec nombreux de ses cousins, et son administration s'effectuera à distance via un terminal. Mais ce mode opératoire n'est rendu possible qu'à la condition que votre serveur soit lui-même connecté sur un réseau.

Dans ce chapitre, je vous propose de voir tout ce qui concerne la configuration réseau d'un serveur Linux, que ce soit :

  • Le nom réseau de la machine ;
  • La détection des périphériques interfaces par le noyau ;
  • L'emplacement des fichiers de configuration ;
  • Les différents modes d'adresse IP ;
  • Les routes et passerelles ;
  • Et les services de noms (DNS).

La configuration du réseau sous Linux est un aspect qui varie fortement entre les distributions. En effet, chaque distribution aura tendance à installer les outils qui lui sont propres pour gérer le réseau. Vous pourrez notamment trouver NetworkManager, Connection-Manager, ou encore dhcpcd.

Nous faire abstraction de ces différents outils et passer en revue la configuration manuelle du réseau via un processus démon. Ce processus gère :

  • Le montage ou le démontage des interfaces ;
  • Les fichiers de configuration sur les distributions majoritaires en entreprise : RedHat (et ses dérivés) et Debian (et ses dérivés).

Normalement, avec cette méthode, vous serez en mesure de configurer le réseau sur toutes les distributions.

Je vous expliquerai les différences qu’il y a entre les branches RedHat et Debian lorsque ce sera nécessaire.

Configurez le nom du réseau de votre serveur

Premier élément de configuration réseau du serveur : son nom réseau.

Le nom réseau d'un serveur Linux (aussi appelé “system hostname”) sert d'identifiant par défaut de la machine pour tous les services et applications qui s'exécutent en local et pour beaucoup de services et d'applications lorsque ceux-ci communiquent sur le réseau.

Prenez l'exemple d'un serveur de fichiers logs centralisés sur un réseau interne : toutes les communications logs des serveurs du réseau seront préfixées de leur nom réseau, ce qui permettra au service de centralisation des logs de savoir d'où viennent tels ou tels fichiers.

Si tous les serveurs de logs ont le même nom réseau (par exemple localhost qui est proposé pendant le processus d'installation), difficile de reconnaître l'origine des fichiers communiqués.

# Afficher le nom d'hote
cat /proc/sys/kernel/hostname
 
# Equivalent
sysctl kernel.hostname
 
# Commande disponible avec SystemD
hostnamectl status

Pour modifier le nom d'hote:

# Modification non permanente
hostnamectl set-hostname newName
 
# Modifier /etc/hostname pour conserver le nom d'hote

Lorsque de nombreux serveurs sont gérés par la même entitié, des nomenclatures de nom réseau sont mises en place généralement allant de la reprise de noms célèbres de villes du monde (sydney, beijing, bamako, etc.), en passant par des noms de personnages mythologiques diverses (heimdall, zeus, osiris, etc.), ou encore à des noms réseaux purement analytiques reprenant par exemple leur localisation ou leurs objectifs en termes de services (srv10s40, web10front, mailintra, etc.).

Une fois le nom d’hôte positionné, il est ensuite nécessaire de passer à la configuration de la carte réseau.

Détectez les interfaces réseaux de votre système

Avant toute configuration, il est nécessaire de s'assurer que le noyau Linux a bien détecté les cartes réseaux connectées d'une manière ou d'une autre sur la machine.

La commande dmesg(pour “display message”) permet d'afficher les messages du noyau pendant le processus de démarrage et notamment lorsque ce dernier charge les pilotes des périphériques qui vérifient si un matériel connecté leur est compatible.

# Afficher les messages noyau
dmesg
 
# Filtrer pour obtenir les informations relatives au réseau
dmesg | grep Network
 
# Les périphériques réseau reconnus par le noyau sont listés
# dans le répertoire /sys/class/net
 
ls -l /sys/class/net

Configurez les cartes réseaux de manière dynamique

Pour les plus anciens d'entre nous, la commande permettant de configurer une interface réseau de manière dynamique était ifconfig.

Cependant cette commande et le package associé net-tools ne sont plus maintenus depuis 2009. Notamment parce que la communauté de développeurs considérait qu’elles n’étaient pas optimisées, ne profitant pas non plus des nouvelles fonctionnalités des noyaux Linux. Ainsi la commande ifconfig mais également des commandes comme netstat, que j'ai beaucoup utilisées, ont disparu.

Heureusement pour nous, le package iproute2 fournit les commandes qui remplacent les précédentes.

En l'occurrence, désormais, sur toutes les distributions Linux, vous pouvez configurer de manière dynamique les cartes réseaux avec la commande ip.

Voyons comment utiliser la commande ip pour gérer vos interfaces réseaux et notamment leur attribuer une adresse de manière dynamique.

# Lister les liens réseaux existants
ip link show
 
# Lister les adresses IP attribuées aux liens existants
ip addr show
 
# Ajouter une adresse à une interface
ip addr add 192.168.1.10/24 dev enp0s3
 
# Lister les adresses de la carte enp0s3
ip addr show enp0s3
 
# Supprimer l'adresse de l'interface
ip addr del 192.168.1.10/24 dev enp0s3 

Ces modifications dynamiques ne seront pas conservées après redémarrage de la machine.

Configurez des interfaces réseaux

Toutes les configurations de réseau sur les cartes gérées par la commande ip sont dynamiques. Elles seront donc perdues entre chaque “reboot” du serveur.

Pour configurer de manière statique les cartes réseaux de Linux, il est nécessaire de saisir les informations dans des fichiers de configuration qui vont être lus pendant le boot du serveur.

Distributions dérivées DEBIAN

Sous Debian et ses dérivés, le répertoire de configuration des interfaces réseaux est /etc/network.

Le fichier interfaces permet de déclarer cette configuration de manière statique.

interfaces
# Configuration de l'interface loopback
auto lo
iface lo inet loopback
 
# Configuration DHCP pour l'interface enp0s3
allow-hotplug enp0s3
iface enp0s3 inet dhcp
iface enp0s3 inet6 auto
 
# Configuration statique pour l'interface enp0s8
auto enp0s8
iface enp0s8 inet static
address 192.168.1.10
netmask 255.255.255.0

Redémarre le service réseau après modification des fichiers de configuration :

systemctl restart networking.service

Distributions dérivées REDHAT

Pour les distributions REDHAT et dérivés (notamment CentOS), le répertoire de configuration des cartes est /etc/sysconfig/network-scripts/. Ce répertoire contient notamment un fichier préfixé ifcfg- pour chaque carte reconnue par le système.

ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UID=54ccbe6a-9136-4706-b8b0-e20595dc7a8c
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.0.10
NETMASK=255.255.255.0

On redémarre le service:

systemctl restart network

Configurez les routes et les passerelles

À ce stade, les cartes réseaux sont configurées, mais il est encore nécessaire d'indiquer les configurations pour les paquets qui en sortent. On parle de :

  • Routes pour désigner les chemins suivis par les paquets réseaux lors d'une communication ;
  • Passerelles (ou “gateway”) pour indiquer les équipements (serveurs ou routeurs) permettant d'interconnecter des réseaux différents.

Pour gérer de manière dynamique les routes et passerelles sur le serveur Linux, encore une fois, le package iproute2 est votre outil de préférence.

Voyons comment utiliser la commande ip du package iproute2 pour gérer les routes associées aux cartes réseaux du système. Cela permet par exemple de :

  • Lister les routes existantes ;
  • Ajouter une passerelle supplémentaire ;
  • Ou en modifier une configurée par défaut sous Debian et CentOS.
# Afficher les routes
ip route list
 
# Modifier la route par défaut
# Supprimer la route
ip route del default via 192.168.1.1
 
# Ajouter la nouvelle route
ip route add default via 192.168.1.254 dev enp0s3
 
# Ajouter une route permettant de joindre le réseau
# 192.168.10.0 par l'interface enp0s8
ip route add 192.168.10.0/24 via 192.168.33.254 dev enp0s8

Le paramétrage via ip est dynamique, pour que les routes soient permanentes, il faut les déclarer dans les fichiers de configuration des cartes réseau :

Distribution type Debian

interfaces
# Configuration de l'interface loopback
auto lo
iface lo inet loopback
 
# Configuration DHCP pour l'interface enp0s3
allow-hotplug enp0s3
iface enp0s3 inet dhcp
iface enp0s3 inet6 auto
 
# Configuration statique pour l'interface enp0s8
auto enp0s8
iface enp0s8 inet static
address 192.168.1.10
netmask 255.255.255.0
# Passerelle par défaut pour le réseau 192.168.1.0/24
gateway 192.168.1.254
 
# Enregistre la route après chargement de l'interface
post-up ip route add 192.168.10.0/24 via 192.168.1.254 dev enp0s8

Distribution type Redhat

ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UID=54ccbe6a-9136-4706-b8b0-e20595dc7a8c
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.0.10
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

Les routes statiques doivent être déclarées dans un fichier dédié :

route-enp0s8
default via 192.168.0.254
192.168.10.0/24 via 192.168.0.254 dev enp0s8

Configurez les résolutions de noms

Enfin, dernier point de configuration réseau du serveur, les services de résolutions de noms de domaine, ou DNS pour Domain Name System. Ce service permet au serveur d'effectuer la résolution des noms de domaines en adresse IP, afin d'envoyer des requêtes selon le protocole du service destinataire.

Vous utilisez ce service tous les jours avec votre navigateur, lorsque vous saisissez une URL dans la barre d’adresse afin d'accéder à un site web. Votre navigateur, par l'intermédiaire d'un service de résolution de nom, émet une requête pour demander la résolution de l'URL en une adresse IP identifiant de manière unique le serveur qui héberge le site web.

Sur un serveur Linux, il est nécessaire de configurer les services de résolutions de noms de domaine. En règle générale, il s'agit simplement d'indiquer dans un fichier de configuration les adresses IP des serveurs hébergeant les services de résolution de noms de domaine.

Cette configuration est identique entre les distributions DEBIAN et les distributions dérivées REDHAT. Cela se passe dans les fichiers /etc/hosts et /etc/resolv.conf.

Analysons ces fichiers pour comprendre le fonctionnement des résolutions de noms sur un serveur Linux. On en profitera pour observer la configuration du fichier /etc/nsswitch.conf qui est très importante.

C'est le fichier /etc/nswitch.conf qui détermine les méthodes de résolutions de noms employées par le système et leur ordre d'appel.

En général pour la résoltion des noms d'hotes on a l'entrée :

...
hosts:        files dns
...

Pour résoudre des noms d'hôte le système s'appuie donc en priorité sur les fichiers locaux et dans un second temps sur le service dns.

Le fichier déclarant les noms d'hotes est le fichier /etc/hosts. Il contient les correspondances IP FQDN

Lorsque le système s'appuie dans un second temps sur la résolution DNS, un autre fichier de configuration est lu : /etc/resol.conf qui permet d'indiquer quels serveurs DNS le système doit consulter

resolv.conf
domain home
search home
nameserver 192.168.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
...
  • La directive domain (facultative) permet de compléter automatiquement les noms non pleinement qualifiés ;
  • La directive search (facultative) indique au système quel domaine utiliser pour résoudre des noms d'hotes non pleinement qualifié.

En résumé

Dans ce chapitre, vous avez effectué toutes les actions nécessaires à la connexion du serveur Linux sur un réseau :

  • Configurer le nom réseau du serveur ;
  • Détecter et configurer de manière dynamique ou statique les interfaces réseaux ;
  • Ajouter des routes et des passerelles pour assurer l'interconnexion des réseaux ;
  • Renseigner les fichiers permettant d'utiliser des services de résolutions de noms de domaine.

N'oubliez pas de rebooter volontairement votre serveur afin de simuler une perte de courant électrique et de vous assurer que votre configuration est à nouveau bien établie lorsque la machine redémarre.

L'étape suivante pour administrer votre serveur, c’est la prise en main à distance via SSH.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/sysadmin/administrer_un_systeme_linux/310_configurer_interfaces_reseaux.txt · Dernière modification : 2024/01/27 13:29 de yoann