Dans ce chapitre, vous apprendrez comment travailler avec, utiliser et gérer le réseau.
Objectifs : Dans ce chapitre vous apprendrez à :
configurer un poste de travail pour utiliser DHCP ;
configurer un poste de travail pour utiliser une configuration statique ;
configurer un poste de travail pour utiliser une passerelle ;
configurer un poste de travail pour utiliser des serveurs DNS ;
dépanner le réseau d'un poste de travail.
Pour illustrer ce chapitre, nous utiliserons l'architecture suivante.
Cela nous permettra d'envisager :
l'intégration dans un réseau local (LAN) ;
la configuration d'une passerelle pour atteindre un serveur distant ;
la configuration d'un serveur DNS et l'implémentation de la résolution des noms.
Les paramètres minimums à définir pour la machine sont :
le nom de la machine ;
l'adresse IP ;
le masque du sous-réseau.
Exemple :
pc-rocky ;
192.168.1.10 ;
255.255.255.0.
La notation appelée CIDR (Classless Inter-Domain Routing) est de plus en plus fréquente : 192.168.1.10/24
Les adresses IP sont utilisées pour le routage approprié des messages (paquets). Ils sont divisés en deux parties :
la partie fixe, identifiant le réseau ;
l'identifiant de l'hôte dans le réseau.
Le masque de sous-réseau est un ensemble de 4 octets destiné à isoler :
l'adresse réseau (NetID ou SubnetID) en effectuant un ET logique entre l'adresse IP et le masque ;
l'adresse de l'hôte (HostID) en effectuant un ET logique entre l'adresse IP et le complément du masque.
Il existe également des adresses spécifiques au sein d'un réseau, qui doivent être identifiées. La première adresse d'une plage ainsi que la dernière ont un rôle particulier :
La première adresse d'une plage est l'adresse réseau. Elle sert à identifier les réseaux et à acheminer l'information d'un réseau vers un autre.
La dernière adresse d'une plage est l'adresse de diffusion. Elle est utilisée pour diffuser des informations à toutes les machines du réseau.
Une adresse MAC est un identifiant physique enregistré à la fabrication dans l'appareil. On parle parfois de l'adresse matérielle. Elle se compose de 6 octets souvent définis sous forme hexadécimale (par exemple 5E:FF:56:A2:AF:15). Elle est composée de : 3 octets de l'identifiant du fabricant et 3 octets du numéro de série.
Avertissement
De nos jours ces affirmations ont un peu perdu leur signification dans le cadre de la virtualisation. Il existe également des solutions logicielles pour changer l'adresse MAC.
Une adresse IP (Protocole Internet) est un numéro d'identification attribué en permanence ou temporairement à chaque périphérique connecté à un réseau informatique en utilisant le protocole Internet. Une partie définit l'adresse réseau (NetID ou SubnetID selon le cas), l'autre partie définit l'adresse de l'hôte dans le réseau (HostID). La taille relative de chaque partie varie selon le (sous-)masque du réseau.
Une adresse IPv4 définit une adresse sur 4 octets. Le nombre d'adresses disponibles étant proche de la saturation, un nouveau standard a été créé, l'IPv6 défini sur 16 octets.
Une adresse IPv6 est souvent représentée par 8 groupes de 2 octets séparés par un deux-points. Des zéros non-significatifs peuvent être omis, un ou plusieurs groupes de 4 zéros consécutifs peuvent être remplacés par un double deux-points.
Les masques de sous-réseau ont entre 0 et 128 bits. (par exemple 21ac:0000:0000:0611:21e0:00ba:321b:54da/64 ou 21ac::611:21e0321b:54da/64)
Dans une adresse Web ou une URL (Uniform Resource Locator), une adresse IP peut être suivie par un deux-points et l'adresse du port (qui indique l'application à laquelle les données sont destinées). Aussi pour éviter la confusion dans une URL, l'adresse IPv6 est écrite entre crochets [ ], deux-points, adresse du port.
Les adresses IP et MAC doivent être uniques sur un réseau !
Les machines clientes peuvent faire partie d'un domaine DNS (Domain Name System, par exemple mydomain.lan).
Le nom complet de la machine (FQDN) devient pc-rocky.mydomain.lan.
Un ensemble d'ordinateurs peuvent être regroupés en un ensemble logique de résolution de noms, appelé domaine DNS. Un domaine DNS n'est évidemment pas limité à un seul réseau physique.
Pour qu'un ordinateur fasse partie d'un domaine DNS, il faut lui attribuer un suffixe DNS (ici mydomain.lan) ainsi que les serveurs qu'il peut interroger.
La couche 1 (Physique) supporte la transmission sur un canal de communication (Wifi, fibre optique, câble RJ, etc.). Unité: le bit.
La couche 2 (Data Link) prends en charge la topologie du réseau (token-ring, star, bus, etc.), la répartition des données et la gestion des erreurs de transmission. Unité: le frame.
La couche 3 (Réseau) supporte la transmission de données de bout en bout (routage IP = passerelle). Unité : le paquet.
La couche 4 (Transport) prend en charge le cryptage et le contrôle de flux du type de service (connecté ou non). Unité : le segment ou le datagramme.
La couche 5 (Session) supporte la communication entre deux ordinateurs.
La couche 6 (Présentation) représente la zone indépendante des données à la couche d'application. Fondamentalement, cette couche traduit du format réseau au format de l'application ou du format de l'application au format réseau.
La couche 7 (Application) représente le contact avec l'utilisateur. Elle prend en charge les services dédiés au réseau : http, dns, ftp, imap, pop, smtp, etc.
lo est l'interface "loopback" qui permet aux programmes TCP/IP de communiquer entre eux sans quitter la machine locale. Ceci permet de tester si le module réseau du système fonctionne correctement et permet également d'utiliser ping pour vérifier la connection avec localhost. Tous les paquets entrant via localhost sortent par localhost. Les paquets reçus sont identiques aux paquets envoyés.
Le noyau Linux attribue des noms d'interface avec un préfixe spécifique selon le type de périphérique. Par exemple, toutes les interfaces Ethernet commencent traditionnellement par eth. Le préfixe est suivi d'un nombre, le premier étant 0 (eth0, eth1, eth2...). Les interfaces wifi reçoivent le préfixe wlan.
Sur les distributions Rocky8 Linux, le système nommera les interfaces avec la nouvelle convention suivante où "X" représente un nombre :
enoX: périphériques embarqués
ensX: hotplug slot PCI Express
enpXsX: emplacement physique/géographique du connecteur du matériel
Oubliez l'ancienne commande ifconfig ! Pensez à ip !
Remarque
Commentaire pour les administrateurs d'anciens systèmes Linux :
La commande historique de gestion du réseau est « ifconfig ». Cette commande a été remplacée par la commande ip, qui est déjà bien connue des administrateurs réseau.
La commande ip est la seule commande pour gérer l'adresse IP, ARP, routage, etc..
La commande ifconfig n'est plus installée par défaut dans Rocky8.
Il est important de prendre dès maintenant de bonnes habitudes.
La commande hostname affiche ou définit le nom d'hôte du système
hostname [-f] [hostname]
Option
Observation
-f
Affiche le FQDN
-i
Affiche des informations sur l'adresse IP du système
Astuce
Cette commande est utilisée par divers programmes réseau pour identifier la machine.
Pour assigner un nom d'hôte, il est possible d'utiliser la commande hostname , mais les changements ne seront pas conservés au prochain démarrage. La commande sans arguments affiche le nom de l'hôte.
Pour définir le nom de l'hôte, le fichier /etc/sysconfig/network doit être modifié :
NETWORKING=yes
HOSTNAME=pc-rocky.mondomaine.lan
Le script de démarrage de RedHat consulte également le fichier /etc/hosts pour résoudre le nom d'hôte du système.
Lorsque le système démarre, Linux évalue la valeur de HOSTNAME dans le fichier /etc/sysconfig/network.
Il utilise ensuite le fichier /etc/hosts pour évaluer l'adresse IP principale du serveur. Il déduit le nom de domaine DNS.
Il est donc essentiel de remplir ces deux fichiers avant toute configuration des services de réseau.
Astuce
Pour savoir si cette configuration est effectuée correctement, les commandes hostname et hostname -f doivent renvoyer les valeurs attendues.
Le fichier /etc/hosts est toujours utilisé par le système, en particulier au moment où le FQDN du système est déterminé.
Astuce
RedHat recommande de remplir au moins une ligne avec le nom du système.
Si le service DNS (Domain Name Service) n'est pas en place, vous devez renseigner tous les noms dans le fichier hosts pour chacune de vos machines.
Le fichier /etc/hosts contient une ligne par entrée, avec l'adresse IP, le FQDN, puis le nom de l'hôte (dans cet ordre) et une série d'alias (alias1 alias2 ...). L'alias est facultatif.
La NSS (Nom Service Switch) permet de substituer des fichiers de configuration (par ex. /etc/passwd, /etc/group, /etc/hosts) pour être remplacés par une ou plusieurs bases de données centralisées.
Le fichier /etc/nsswitch.conf est utilisé pour configurer les bases de données du service de noms.
passwd: files
shadow: files
group: files
hosts: files dns
In this case, Linux will first look for a host name match (hosts: line) in the /etc/hosts file (files value) before querying DNS (dns value)! Ce comportement peut simplement être modifié en éditant le fichier /etc/nsswitch.conf.
Bien sûr, il est possible d'imaginer interroger un LDAP, MySQL ou un autre serveur en configurant le service de noms pour répondre aux requêtes système des hôtes, utilisateurs, groupes, etc.
La résolution du service de nom peut être testée avec la commande getent que nous verrons plus tard dans ce cours.
Le fichier /etc/resolv.conf contient la configuration de résolution du nom DNS.
#Generated by NetworkManager
domain mondomaine.lan
search mondomaine.lan
nameserver 192.168.1.254
Astuce
Ce fichier est désuet. Il n'est plus rempli directement!
Les nouvelles générations de distributions Linux ont généralement intégré le service NetworkManager. Ce service vous permet de gérer la configuration plus efficacement, en mode graphique ou en mode console.
Il permet d'ajouter des serveurs DNS à partir du fichier de configuration d'une interface réseau. Il remplit alors automatiquement le fichier /etc/resolv.conf qui ne devrait jamais être modifié directement, sinon les changements de configuration seront perdus la prochaine fois que le service réseau sera démarré.
Le protocole DHCP (Dynamique Host Control Protocol) vous permet d'obtenir automatiquement une configuration IP complète via le réseau. C'est le mode de configuration par défaut d'une interface réseau sous Rocky Linux, ce qui explique pourquoi un système connecté au réseau d'un routeur Internet peut fonctionner sans configuration supplémentaire.
La configuration des interfaces sous Rocky Linux se fait dans le répertoire /etc/sysconfig/network-scripts/.
Pour chaque interface Ethernet, un fichier ifcfg-ethX permet la configuration de l'interface associée.
Nom de l'interface (doit être dans le nom du fichier) :
DEVICE=eth0
Démarrer automatiquement l'interface :
ONBOOT=yes
Faire une requête DHCP au démarrage de l'interface :
BOOTPROTO=dhcp
Spécifiez l'adresse MAC (facultative mais utile lorsqu'il y a plusieurs interfaces) :
HWADDR=00:0c:29:96:32:e3
Astuce
Si le service NetworkManager est installé, les modifications seront prises en compte automatiquement. Dans le cas contraire, vous devez redémarrer le service réseau.
[root]# ip route show
192.168.1.0/24 dev eth0 […] src 192.168.1.10 metric 1
default via 192.168.1.254 dev eth0 proto static
C'est une bonne idée de savoir comment lire une table de routage, en particulier dans un environnement avec plusieurs interfaces réseau.
Dans l'exemple précédent, le réseau 192.168.1.0/24 est accessible directement depuis le périphérique eth0, donc il y a une métrique à 1 (ne traverse pas un routeur).
Tous les autres réseaux autres que le précédent seront accessibles, à nouveau à partir du périphérique eth0, mais cette fois les paquets seront adressés à une passerelle 192.168.1.254. Le protocole de routage est un protocole statique (bien qu'il soit possible d'ajouter une route à une adresse assignée dynamiquement dans Linux).
La commande ping envoie des datagrammes à une autre machine et attend une réponse.
C'est la commande de base pour tester le réseau, car elle vérifie la connectivité entre votre interface réseau et une autre.
Syntaxe de la commande ping :
ping [-c numérique] destination
L'option -c (count) vous permet d'arrêter la commande après le compte à rebours en secondes.
Exemple :
[root]# ping –c 4 localhost
Astuce
Valider la connectivité progressivement en partant localement
1) Valider la couche logicielle TCP/IP
[root]# ping localhost
Le "ping" de la boucle intérieure ne détecte pas de défaillance matérielle sur l'interface réseau. Il détermine simplement si la configuration du logiciel IP est correcte.
2) Valider la carte réseau
[root]# ping 192.168.1.10
Pour déterminer si la carte réseau est fonctionnelle, nous devons maintenant lancer un ping avec son adresse IP. La carte réseau, si le câble réseau n'est pas connecté, doit être en état "inactivé".
Si le ping ne fonctionne pas, vérifiez d'abord le câble réseau à votre commutateur réseau et reassemblez l'interface (voir la commande if up), puis vérifiez l'interface elle-même.
La commande dig est utilisée pour interroger les serveurs DNS. C'est très verbeux par défaut, mais ce comportement peut être modifié avec l'option +short.
Il est également possible de spécifier un type d'enregistrement DNS à résoudre, comme un type MX pour obtenir des informations sur les échangeurs de courriels pour un domaine.
Interroger seulement un serveur DNS peut retourner un résultat erroné qui ne prend pas en compte le contenu d'un fichier hosts bien que cela devrait être rare de nos jours.
Pour prendre également en compte le fichier /etc/hosts, le service de nom NSSwitch doit être interrogé, ce qui prendra en compte toute résolution DNS.
Cette commande est intéressante si elle est suivie d'une redirection permettant de compiler automatiquement les fichiers de configuration de l'interface :
ipcalc est un moyen simple de calculer les informations IP d'un hôte. Les diverses options indiquent quelles informations ipcalc doivent être affichées sur la sortie standard. Plusieurs options peuvent être spécifiées. Une adresse IP sur laquelle opérer doit être spécifiée. La plupart des opérations nécessitent également un masque réseau ou un préfixe CIDR.
Option courte
Option longue
Observation
-b
--broadcast
Affiche l'adresse de diffusion de l'adresse IP donnée et le masque réseau.
-h
--hostname
Affiche le nom d'hôte de l'adresse IP fournie via DNS.
-n
--netmask
Calcule le masque de réseau pour l'adresse IP donnée. Suppose que l'adresse IP fait partie d'un réseau complet de classe A, B ou C. De nombreux réseaux n'utilisent pas de masques de réseau par défaut, auquel cas une valeur incorrecte sera retournée.
-p
--prefix
Indique le préfixe de l'adresse masque/IP.
-n
--network
Indique l'adresse réseau de l'adresse IP et du masque donnés.
La commande ss (statistiques de sockets) affiche les ports d'écoute sur le réseau.
Syntaxe de la commande ss :
ss [-tuna]
Exemple :
[root]# ss –tuna
tcp LISTEN 0 128 *:22 *:*
Les commandes ss et netstat (à suivre) seront très importantes pour le reste de votre carrière Linux.
Lors de l'implémentation des services réseau, il est très courant de vérifier avec l'une de ces deux commandes que le service écoute sur les ports attendus.
La commande netstat est désormais obsolète et n'est plus installée par défaut sur Rocky Linux. Vous pouvez toujours trouver certaines versions de Linux sur lesquelles il est installé, mais il est préférable d'utiliser « ss » à la place de « netstat ».
La commande netstat (statistiques du réseau) affiche les ports d'écoute sur le réseau.
Une mauvaise configuration peut faire que plusieurs interfaces utilisent la même adresse IP. Cela peut se produire lorsqu'un réseau a plusieurs serveurs DHCP ou quand la même adresse IP est assignée manuellement plusieurs fois.
Lorsque le réseau ne fonctionne pas correctement et que la cause pourrait être un conflit d'adresse IP, vous pouvez utiliser le logiciel arp-scan (nécessite le dépôt d'EPEL) :
$ dnf install arp-scan
Exemple :
$ arp-scan -I eth0 -l
172.16.1.104 00:01:02:03:04:05 3COM CORPORATION
172.16.1.107 00:0c:29:1b:eb:97 VMware, Inc.
172.16.1.250 00:26:ab:b1:b7:f6 (Unknown)
172.16.1.252 00:50:56:a9:6a:ed VMWare, Inc.
172.16.1.253 00:50:56:b6:78:ec VMWare, Inc.
172.16.1.253 00:50:56:b6:78:ec VMWare, Inc. (DUP: 2)
172.16.1.253 00:50:56:b6:78:ec VMWare, Inc. (DUP: 3)
172.16.1.253 00:50:56:b6:78:ec VMWare, Inc. (DUP: 4)
172.16.1.232 88:51:fb:5e:fa:b3 (Unknown) (DUP: 2)
Astuce
Comme le montre l’exemple précédent, il est même possible d’avoir des conflits d’adresses MAC ! Ces problèmes peuvent être causés par les technologies de virtualisation et le clonage de machines virtuelles.