Adaptation française: Nicolas Provost
Relecture et Adaptation française partielle: Deny
Copyright © 2008 Joey Prestia
Copyright © 2008 Nicolas Provost
Copyright © 2008 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 :
/etc/sysconfig/network-scripts/ifcfg-eth0
:
ce fichier contient les paramètres de votre carte réseau
/etc/sysconfig/network
: ce fichier contient
d'autres paramètres, principalement le nom d'hôte et la
passerelle
/etc/resolv.conf
: ce fichier liste les noms
de domaines locaux et les serveurs de noms
/etc/hosts
: noms d'hôtes et autres données
pour les machines locales en dehors du système
DNS
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 : :
/etc/sysctl.conf
: fichier pour configurer
différents paramètres du comportement réseau du noyau, routage et
propagation d'adresses IP
/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ètre | Requis/Optionnel | Type attendu | Commentaire |
DEVICE= | Requis | ethX | Cette entrée doit spécifier le nom du périphérique
Linux . |
ONBOOT= | Optionnel | yes/no | Doit-on activer ce périphérique au démarrage ? Devrait être
yes par défaut. |
BOOTPROTO= | Requis | static/dhcp/none | Fixer votre adresse IP
(static ) ou demander un bail
DHCP (dhcp ) ?
none équivaut à
static . |
IPADDR= | Optionnel | adresse IP de la machine | L'adresse que vous voulez spécifier dans le cas d'une
configuration "static " |
NETMASK= | Optionnel | masque de sous-réseau | Masque de sous-réseau requis dans le cas de la configuration statique. |
NETWORK= | Optionnel | adresse du réseau | Adresse du réseau courant, requise dans le cas de la configuration statique. |
BROADCAST= | Optionnel | adresse de diffusion du réseau | Adresse de diffusion réseau requise dans le cas de la configuration statique. |
HWADDR= | Optionnel | adresse MAC du périphérique | Adresse MAC du périphérique, normalement
complétée automatiquement par l'installeur
Anaconda lors de l'installation. |
USERCTL= | Optionnel | yes/no | Autorise les utilisateurs non-administrateurs à activer ou
désactiver l'interface. Vaut no par
défaut. |
GATEWAY= | Optionnel | adresse IP de la passerelle | L'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
/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ètre | Requis/Optionnel | Type attendu | Commentaire |
NETWORKING= | Requis | yes/no | Active ou non le réseau |
HOSTNAME= | Requis | nom d'hôte | Nom 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 passerelle | La passerelle sortante pour ce réseau. |
NETWORKING_IPV6= | Optionnel | yes/no | Active ou non les extensions IPv6 |
NISDOMAIN= | Optionnel | nom du domaine NIS | Le nom du domaine NIS, si vous en utilisez un. |
GATEWAYDEV= | Optionnel | ethX | Le 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
/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ètre | Requis/Optionnel | Type attendu | Commentaire |
search | Optionnel | un nom de domaine | le domaine de recherche |
domain | Optionnel | un nom de domaine | le domaine local |
nameserver | Requis | adresse IP | un 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
/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.
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
/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
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 !
Michael Jang, Red Hat Certified Engineer Linux Study Guide, Fifth Edition
Mark G. Sobell, A Practical Guide to Red Hat Linux, Third Edition
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 sousLinux
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.
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.