Les notes de Joey : notions de base de configuration réseau et propagation d'adresses IP

Gazette Linux n°153 — Août 2008

Adaptation française: Nicolas Provost

Relecture et Adaptation française partielle: Deny

Article paru dans le n°153 de la Gazette Linux d'août 2008.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Linux est plein de ressources au point de vue du réseau. Il peut être utilisé comme serveur DHCP, routeur, simple poste client, passerelle, pont pare-feu... vous voyez les possibilités. Pour accomplir ces tâches et faire fonctionner tout cela, il y a plusieurs fichiers de configuration essentiels qui doivent être correctement ajustés. C'est le sujet que nous abordons ce mois.

Travaillant au laboratoire d'informatique de l'université Red Hat Academy, il m'arrive souvent de devoir aider des étudiants à réparer leur configuration réseau de telle sorte qu'ils puissent se connecter à Internet par l'intermédiaire du réseau local. Comme notre laboratoire est commun avec celui de Microsoft, les ordinateurs sont tous bien identifiés, et sont équipés de disques durs amovibles pour passer facilement de Red Hat Linux à Windows et inversement. Cela constituerait une excellente façon de fonctionner si les étudiants inséraient le bon disque dans le bon poste du laboratoire Red Hat©. Ce qu'ils ne font pas, bien entendu, changeant continuellement, si bien que je dois les assister dans la reconfiguration de leurs paramètres réseau.

Pour établir ou vérifier une configuration réseau particulière, vous devez tout d'abord vous renseigner auprès de votre fournisseur d'accès à Internet ou de votre administrateur réseau pour savoir quels sont les paramètres spécifiques de configuration. N'utilisez pas les paramètres cités dans les exemples ci-dessous, ils ne sont pas adaptés à votre machine ou à une configuration particulière. Effectuez toujours une sauvegarde de vos fichiers de configuration avant de les modifier (en utilisant par exemple la commande cp /etc/sysconfig/network /etc/sysconfig/network.bak) ! Je ne suggère pas ici d'effectuer des modifications sur votre système si votre connection au réseau est déjà opérationnelle ; cet article se veut un point de départ dans la compréhension de l'influence de ces fichiers sur le comportement de base de votre machine au point de vue du réseau. Si vous souhaitez réellement modifier ces paramètres, vous devrez au moins désactiver l'interface réseau, puis la réactiver ou relancer les services réseaux pour voir si les changements fonctionnent.

Pour ajuster la configuration de base du réseau sur votre machine Red Hat©, il y a plusieurs fichiers que vous devez contrôler :

Pour configurer la propagation des adresses IP (IP forwarding) sur un système Red Hat©, il faut s'intéresser à plusieurs fichiers de configuration clés suivants : :

Contenu du fichier de configuration /etc/sysconfig/network-scripts/ifcfg-eth0

Vous trouverez dans ce fichier la configuration de votre carte réseau. Le nom de fichier ifcfg-eth0 désigne le premier périphérique Ethernet ; ifcfg-eth1 désignerait le deuxième périphérique NIC (Network Interface Card, Interface-Carte réseau), etc. Il est possible de préciser pas mal de paramètres ici :

Tableau 1. 

ParamètreRequis/OptionnelType attenduCommentaire
DEVICE=RequisethXCette entrée doit spécifier le nom du périphérique Linux.
ONBOOT=Optionnelyes/noDoit-on activer ce périphérique au démarrage ? Devrait être yes par défaut.
BOOTPROTO=Requisstatic/dhcp/noneFixer votre adresse IP (static) ou demander un bail DHCP (dhcp) ? none équivaut à static.
IPADDR=Optionneladresse IP de la machineL'adresse que vous voulez spécifier dans le cas d'une configuration "static"
NETMASK=Optionnelmasque de sous-réseauMasque de sous-réseau requis dans le cas de la configuration statique.
NETWORK=Optionneladresse du réseauAdresse du réseau courant, requise dans le cas de la configuration statique.
BROADCAST=Optionneladresse de diffusion du réseauAdresse de diffusion réseau requise dans le cas de la configuration statique.
HWADDR=Optionneladresse MAC du périphériqueAdresse MAC du périphérique, normalement complétée automatiquement par l'installeur Anaconda lors de l'installation.
USERCTL=Optionnelyes/noAutorise les utilisateurs non-administrateurs à activer ou désactiver l'interface. Vaut no par défaut.
GATEWAY=Optionneladresse IP de la passerelleL'adresse de la passerelle.

Tous ces paramètres ne sont pas nécessaires à un fonctionnement convenable, et leur ordre est indifférent. Je précise les paramètres facultatifs NETWORK et BROADCAST dans ce fichier pour les machines ayant une configuration d'adresse statique, principalement les serveurs de tous types. Si vous souhaitez utiliser une configuration permettant d'obtenir une adresse IP dynamiquement via DHCP, votre fichier devrait ressembler à ceci :

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=08:00:27:4B:3B:06
ONBOOT=yes 

Bien entendu, l'adresse HWADDR sera différente. De plus, le commentaire initial dépendra de votre carte ou même ne sera pas présent. Voici quelques indications (je laisse mes paramètres à titre d'exemple, juste pour vous donner une idée de ce à quoi les fichiers pourraient ressembler) :

Paramètres recommandés pour une configuration statique (exemple)

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.17
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255 

Liste minimale de paramètres pour une configuration statique (exemple)

DEVICE=eth0 
BOOPROTO=static
IPADDR=192.168.0.17
NETMASK=255.255.255.0 

Liste minimale de paramètres pour une configuration dynamique DHCP (exemple)

DEVICE=eth0
BOOTPROTO=dhcp 

Contenu du fichier de configuration /etc/sysconfig/network

Ce fichier permet de définir le comportement réseau de base de la machine ; encore une fois tous les paramètres ne sont pas requis pour que cela fonctionne, cela dépend de votre configuration.

Tableau 2. 

ParamètreRequis/OptionnelType attenduCommentaire
NETWORKING=Requisyes/noActive ou non le réseau
HOSTNAME=Requisnom d'hôteNom d'hôte de cette machine. Il est recommandé de préciser le nom avec le domaine complet ici (Fully Qualified Domain Name ou FQDN)
GATEWAY=Recommandéadresse IP de la passerelleLa passerelle sortante pour ce réseau.
NETWORKING_IPV6=Optionnelyes/noActive ou non les extensions IPv6
NISDOMAIN=Optionnelnom du domaine NISLe nom du domaine NIS, si vous en utilisez un.
GATEWAYDEV=OptionnelethXLe périphérique à utiliser pour joindre la passerelle si vous disposez de plusieurs cartes réseau.

Dans ce fichier devrait être précisée l'adresse IP de la passerelle utilisée pour le trafic sortant vers l'extérieur du réseau local. Dans le cas d'un réseau personnel (chez vous), ce sera l'adresse IP locale de votre routeur. Ce fichier peut être très simple comme l'exemple ci-dessous le montre, et peut contenir également n'importe lequel des paramètres indiqués ci-dessus, tout dépendant de votre configuration. Dans le cas d'une configuration via DHCP, vous n'aurez probablement même pas à préciser l'entrée GATEWAY, mais seulement les entrées HOSTNAME et NETWORKING.

Paramètres recommandés pour une configuration statique (exemple)

NETWORKING=yes
HOSTNAME=cette_machine.domaine_local
GATEWAY=192.168.0.254 

Liste minimale de paramètres pour une configuration dynamique DHCP (exemple)

NETWORKING=yes
HOSTNAME=serveur1.exemple.com

Contenu du fichier de configuration /etc/resolv.conf

Ce fichier prend en charge la résolution des noms de domaines DNS. Si vous lancez la commande, disons, nslookup google.com, et que vous n'obtenez pas de réponse, alors vous tenez probablement le coupable ! Ce fichier indique d'ordinaire le nom du domaine local de recherche et les adresses IP des serveurs de noms de domaines. Il devrait contenir le mot domain au lieu de search

Tableau 3. 

ParamètreRequis/OptionnelType attenduCommentaire
searchOptionnelun nom de domainele domaine de recherche
domainOptionnelun nom de domainele domaine local
nameserverRequisadresse IPun ou plusieurs serveurs sont requis pour la résolution des noms de domaines

Voici un fichier /etc/resolv.conf typique, tel que généré par un script DHCP :

; généré par /sbin/dhclient-script
search exemple.com
nameserver 10.0.2.3

Vous pouvez lister plusieurs serveurs de noms de domaines dans ce fichier, c'est recommandé car cela introduit une tolérance aux pannes dans le cas où le premier serveur serait hors-service. Dans ce cas, ce serait le serveur suivant dans la liste qui prendrait le relai. En fait, il s'agit d'un moyen pour diminuer la charge des serveurs de noms de domaines, en précisant par exemple que la moitié d'un grand réseau local utilisera un serveur comme serveur primaire, l'autre moitié du réseau disposant de la liste de serveurs dans l'ordre inverse.

Paramètres recommandés pour le fichier /etc/resolv.conf (exemple)

search exemple.com
nameserver 10.0.2.3
nameserver 216.239.32.10 

Fichier /etc/resolv.conf minimal (exemple)

nameserver 10.0.2.3

Contenu du fichier de configuration /etc/hosts

Il s'agit du fichier qui permet de résoudre notre adresse IP de boucle locale 127.0.0.1 en nom d'hôte du type hôte.domaine. C'est aussi à partir de ce fichier que votre machine essaiera en tout premier lieu de résoudre les noms d'hôtes en adresses IP, à moins que l'ordre de résolution spécifié dans le fichier /etc/nsswitch.conf n'ait été modifié. La ligne hosts: files dns précise de consulter d'abord le fichier /etc/hosts puis d'interroger les serveurs DNS.

Une méthode pour vérifier que la machine consulte bien le fichier /etc/hosts pour la résolution des noms est de faire ce petit exercice :

ma fille est une adolescente typique obsédée par Myspace à tel point qu'elle y passerait —gaspillerait— tout son temps si on la laissait faire. Selon elle, rien n'a plus d'intérêt que ce site. Dans mon université, ce site obtient 20 000 connections par jour - une incroyable perte de temps, surtout pour des étudiants. Pour y remédier, à la maison, j'ai réalisé une petite modification sur son ordinateur sous Windows et sur toutes mes machines sous Linux : j'ai modifié le fichier /etc/hosts. Sous Windows, ce fichier est à l'emplacement c:\Windows\system32\drivers\etc\hosts. J'ai réalisé un ping du site que je voulais qu'elle consulte à la place (commande ping www.cnn.com), pour obtenir son adresse IP. Puis j'ai inscrit cette adresse dans le fichier en regard de "www.myspace.com" :

# ne retirez pas les lignes suivantes, ou bien les programmes
# requièrant des fonctionnalités réseau ne fonctionneront pas.
127.0.0.1          cette_machine.domaine_local localhost 
::1               cette_machine6.domaine_local6 localhost6

64.236.91.24     www.myspace.com     myspace.com

Maintenant, quand elle rentre de l'école et qu'elle veut se connecter sur Myspace, la résolution de ce domaine s'effectue en premier à partir du fichier modifié, et le système considère que l'adresse IP de Myspace est 64.236.91.24, qui est en fait l'adresse IP de CNN News ; elle consulte donc les dernières nouvelles mondiales. Elle a bientôt été révoltée par la guerre en Irak ou le terrorisme au Moyen-Orient, reprenant ainsi un comportement d'adolescent humain normal au lieu d'être « accro » à Myspace. Maintenant, elle pense néanmoins qu'il y a un problème avec le site Myspace. Vérifiez que cela fonctionne, en ouvrant votre navigateur web sur le site de Myspace après avoir modifié votre fichier /etc/hosts : vous serez redirigé sur www.cnn.com.

Note

de l'ami Ben : bien entendu, maintenant que Joey a écrit cet article et a révélé cette parfaite tromperie accomplie dans un but de contrôle parental, sa fille va pouvoir contourner la modification en effectuant un ping de www.myspace.com... Désolé mon ami, tu vas devoir réfléchir pour être plus futé que ton adolescente de fille !

Un fichier /etc/hosts typique pour une machine connectée en réseau pourrait être du type :

# ne retirez pas les lignes suivantes, ou bien les programmes
# requièrant des fonctionnalités réseau ne fonctionneront pas.
127.0.0.1       cette_machine.domaine_local   localhost 
::1             cette_machine6.domaine_local6   localhost6
192.168.0.17    station17.exemple.com
192.168.0.100   travail.exemple.com travail
192.168.0.110   serveur_nfs.exemple.com serveur_nfs
192.168.0.120   serveur_mail.exemple.com serveur_mail 

Fichier de configuration minimal en IP version 4 :

127.0.0.1          cette_machine.domaine_local   localhost

Fichier de configuration minimal en IP version 6 :

127.0.0.1          cette_machine.domaine_local   localhost
::1                cette_machine6.domaine_local6   localhost6

Modification du fichier /etc/sysctl.conf pour activer la propagation d'adresses IP (IP forwarding)

Pour une configuration réseau de base, vous ne devriez rien modifier dans ce fichier, mais je crois qu'il est important de savoir que le paramètre permettant d'activer la propagation d'adresses IP se trouve ici. Il serait nécessaire d'activer la propagation d'adresses IP si le système devait agir comme un routeur ou une passerelle par rapport au réseau, et il ne s'agit que d'une des modifications à effectuer dans ce cas. Ce fichier contient plusieurs paramètres avancés relatifs à la configuration du noyau et qui dépassent le cadre de cet article; par conséquent nous n'aborderons que la propagation d'adresses IP. Les commentaires au début du fichier nous indiquent qu'il faut utiliser des valeurs binaires, 0 pour désactiver une option et 1 pour l'activer. Si vous effectuez des changements dans ce fichier /etc/sysctl.conf, vous devez indiquer au noyau qu'il doit le relire. Utilisez la commande sysctl -p pour cela ; elle produira une sortie sur l'écran, comme montré ci-dessous.

# Kernel sysctl configuration file for Red Hat Linux
#
# Pour les valeurs binaires, 0 désactive ou 1 active une option.
# Voir les pages de manuel sysctl(8) et sysctl.conf(5) pour plus de détails.

# Controls IP packet forwarding
# contrôle de la propagation des adresses et paquets IP
net.ipv4.ip_forward = 0 

# Controls source route verification
# Contrôle la vérification de la source IP des paquets sortants
# (pour ne pas émettre de faux paquets semblant venir d'ailleurs que de cette machine)
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
# Accepter ou non la détermination de la route des paquets par la source
# (non par défaut, les routeurs choisissant en effet automatiquement)
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
# Contrôle si la touche SysRq du clavier est opérationnelle ou non (pour déboguage)
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
# Spécifie si les fichiers de "dump" se terminent par le n° de processus (PID) ou non
# Utile pour débogger les applications multi-threads
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
# Active ou non l'utilisation des cookies SYN TCP afin de limiter certaines attaques
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
# Spécifie la taille maximum des messages inter-processus, en octets
kernel.msgmnb = 65536

# Controls the default maximum size of a message queue
# Spécifie la capacité de la file d'attente des messages inter-processus
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
# Spécifie la taille maximale d'un segment de mémoire partagée, en octets
kernel.shmmax = 4294967295

# Controls the maximum number of shared memory segments, in pages
# Spécifie le nombre maximal de segments de mémoire partagée, en nombre de pages (4ko)
kernel.shmall = 268435456

Voici la sortie écran après avoir activé la propagation d'adresses IP et lancé la relecture du fichier /etc/sysctl.conf :

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456

Note

le même résultat pourrait être obtenu au cours d'une session, sans nécessité de redémarrer la machine, en ajustant les valeurs de certains fichiers du répertoire /proc, à savoir :

echo 1 > /proc/sys/net/ipv4/ip_forward

pour activer la propagation d'adresses IP (IPv4). Néanmoins, pour que la modification soit permanente, procédez comme ci-dessus.

Voilà pour résumer. Souvenez-vous de commenter les lignes que vous ne souhaitez pas utiliser dans tous ces fichiers, au lieu de les supprimer. Pour tester vos modifications, vous devrez redémarrer les services réseau et vérifier la connectivité. En procédant de cette façon, vous pourrez réactiver très facilement une option ou retrouver l'état des paramètres initiaux. Si ce n'est pas dans vos habitudes, faites ainsi à partir de maintenant, cela vous évitera bien des maux de tête !

Ressources

Joey est né à Phoenix et a commencé à programmer à l'âge de quatorze ans sur un Timex Sinclair 1000©. Il espérait pouvoir tirer quelque chose de ce modèle d'ordinateur ancien. Maîtrisant rapidement le BASIC et l'Assembleur, Joey est devenu programmeur en 1990 et a ajouté le COBOL, le Fortran et le Pascal à son répertoire de langages de programmation. Depuis lors, il se passionne pour presque tous les aspects de l'informatique. Il s'est perfectionné et a découvert RedHat Linux© en 2002, quand on lui a donné une version six de RedHat©. Ce fut le début d'une nouvelle passion centrée sur Linux. Actuellement, Joey termine sa formation en gestion de réseau sous Linux et travaille sur le campus pour la RedHat Academy de l'université, en Arizona. Il fait aussi partie de l'équipe de la Linux Gazette comme coordinateur de miroir.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.