Configuration réseau
État :
Sommaire
L'interface réseau
La carte réseau (NIC - network interface card) doit être prise en charge par le noyau. Pour déterminer le type de carte utilisée, vous pouvez utiliser les commandes dmesg ou /sbin/lsmod, ou encore obtenir des informations à partir des fichiers /proc/interrupts ou /etc/modules.conf.
Exemple :
dmesg Linux Tulip driver version 0.9.14 (February 20, 2001) PCI: Enabling device 00:0f.0 (0004 -> 0007) PCI: Found IRQ 10 for device 00:0f.0 eth0: Lite-On 82c168 PNIC rev 32 at 0xf800, 00:A0:CC:D3:6E:0F, IRQ 10. eth0: MII transceiver #1 config 3000 status 7829 advertising 01e1.
cat /proc/interrupts 0: 8729602 XT-PIC timer 1: 4 XT-PIC keyboard 2: 0 XT-PIC cascade 7: 0 XT-PIC parport0 8: 1 XT-PIC rtc 10: 622417 XT-PIC eth0 11: 0 XT-PIC usb-uhci 14: 143040 XT-PIC ide0 15: 180 XT-PIC ide1
/sbin/lsmod Module Size Used by tulip 37360 1 (autoclean)
Dans l'exemple précédent, nous pouvons voir que la carte réseau est construite sur un circuit (chipset) Tulip, et qu'elle utilise les adresses d'E/S 0xf800 et l'IRQ 10. Vous pouvez utiliser ces informations quand le module chargé (le pilote) n'est pas le bon ou quand les ressources (E/S ou IRQ) ne sont pas disponibles.
On pourra soit insérer le module avec des adresses E/S différentes, en utilisant modprobe ou insmod, soit enregistrer ces informations dans /etc/modules.conf, pour qu'elles soient actives au prochain démarrage.
Informations sur l'hôte
Les paramètres réseau sont stockés dans les fichiers suivants.
/etc/resolv.conf contient la liste des serveurs DNS
nameserver 192.168.1.108 nameserver 192.168.1.1 search linuxit.org
/etc/HOSTNAME est utilisé pour donner le nom de la machine (NdT : systèmes RedHat)
On peut également associer un nom différent à chaque interface réseau. Ceci est fait différemment suivant les distributions.
/etc/hostscontient l'adresse IP de de votre machine ainsi qu'une liste d'hôtes connus
# Ne supprimez pas la ligne suivante, sinon différents programmes # qui utilisent le réseau ne fonctionneront pas 127.0.0.1 localhost localhost.localdomain # autres hôtes connus 192.168.1.108 mesa mesa.domain.org 192.168.1.119 pico
le fichier /etc/sysconfig/network définit si le réseau doit être activé au démarrage (peut également contenir la variable HOSTNAME). (NdT : systèmes RedHat)
NETWORKING=yes HOSTNAME=mesa.domain.org GATEWAY=192.168.1.1 GATEWAYDEV=
/etc/sysconfig/network-scripts/ifcfg-eth0 contient les paramètres pour l'interface eth0
DEVICE=eth0 BOOTPROTO=none BROADCAST=192.168.1.255 IPADDR=192.168.1.108 NETWORK=192.168.1.0 ONBOOT=yes USERCTL=no
Démarrage et arrêt du réseau
À partir de la ligne de commande
L'outil principal pour activer l'interface réseau est /sbin/ifconfig. À l'initialisation, le module du noyau lié (alias) à eth0 dans /etc/modules?conf (i.e. tulip.o - NdT : pour les noyaux 2.4.x) est chargé et l'adresse IP ainsi que le masque lui sont attribués.
Ainsi, vous pouvez brancher et débrancher l'interface sans perdre ces informations tant que le module du noyau est chargé.
Exemples : utilisation d'ifconfig
/sbin/ifconfig eth0 192.168.10.1 netmask 255.255.128.0 /sbin/ifconfig eth0 down /sbin/ifconfig eth0 up
Vous pouvez également utiliser /sbin/ifup. Ce programme affecte les valeurs lues dans les fichiers de configuration de /etc/sysconfig à l'interface donnée. Pour eth0, vous devez configurer le script ifcfg-eth0. Si vous utilisez DHCP, alors ifup activera l'interface avec ce protocole.
Exemples : Utilisations d'ifup
/sbin/ifup eth0 /sbin/ifup ppp0 /sbin/ifdown eth0
À partir des scripts réseau
Au démarrage, la carte ethernet est initialisée avec le script /etc/rc.d/init.d/network (NdT : systèmes RedHat). Le script utilise les fichiers du répertoire /etc/sysconfig/.
Ce script lit également les options de sysctl dans /etc/sysctl.conf. C'est dans ce fichier que vous pouvez activer la redirection d'IP (IP forwarding) du noyau et ainsi configurer votre système comme un routeur. Par exemple, la ligne :
net.ipv4.ip_forward = 1
active la redirection IP et le fichier /proc/sys/net/ipv4/ip_forward contiendra un "1".
On lance le script network avec la commande suivante (NdT : systèmes RedHat) :
/etc/rc.d/init.d/network restart
Renouvellement du bail DHCP
Les commandes suivantes peuvent effectuer une requête auprès du serveur DHCP pour obtenir une nouvelle adresse IP :
pump
dhcpclient
Il existe également un démon client, nommé dhcpcd, à ne pas confondre avec le démon du serveur DHCP, dhcpd.
Routage
Une différence notable lorsque l'on utilise ifup (NdT : par rapport à ifconfig) est la table de routage du système. En effet, ifup lit le fichier /etc/sysconfig/network qui contient la passerelle par défaut, ou le serveur DHCP a envoyé cette information en même temps que l'adresse IP. La commanda /sbin/route permet de configurer, contrôler ou modifier les tables de routage.
Exemples d'utilisations de route
- ajout d'une route statique pour le réseau 10.0.0.0 passant par l'interface eth1 et en utilisant la passerelle 192.168.1.108 :
/sbin/route add -net 10.0.0.0 gw 192.168.1.108 dev eth1
- ajout d'une passerelle par défaut :
/sbin/route add default gw 192.168.1.1 eth0
- affichage de la table de routage du noyau :
/sbin/route -n Table de routage IP du noyau Destination Passerelle Genmask Iface 192.168.1.0 0.0.0.0 255.255.255.0 eth0 10.1.8.0 192.168.1.108 255.0.0.0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 lo 0.0.0.0 192.168.1.1 0.0.0.0 eth0
Passerelle par défaut
Dans la liste précédente, le champ de destination est le liste des réseau. Plus particulièrement, 0.0.0.0 signifie "n'importe où". En gardant ceci à l'esprit, il y a deux IPs dans le champ de passerelle, laquelle est la passerelle par défaut ?
Pour éviter de taper les routes statiques à la main, les démons spéciaux : gated ou routed sont lancés pour mettre à jour dynamiquement les tables de routage à travers le réseau.
Si vous êtes sur le réseau 192.168.10.0 et ajoutez une route vers le réseau 192.168.1.0, il est possible que les machines de ce réseau ne puissent pas vous répondre. C'est parce qu'aucune route n'aura été définie sur le réseau 192.168.0.1 pour contacter votre machine ! On résout ce problème en utilisant les routes dynamiques.
Routes statiques permanentes
Si vous avez utilisez différents réseaux avec plus d'une passerelle, vous pouvez utiliser le fichier /etc/sysconfig/static-routes en lieu et place des démons de routage (NdT : systèmes RedHat). Ces routes seront ajoutées au démarrage par le script network.
Un scénario de routage
Réseau 1 |
Réseau 2 |
||
10.8.10.34 |
192.168.1.2 |
||
réseau |
Passerelle |
réseau |
Passerelle |
10.0.0.0 |
0.0.0.0 |
192.168.1.0 |
0.0.0.0 |
0.0.0.0 |
10.0.0.2 |
0.0.0.0 |
192.168.1.1 |
route add 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.111 |
route add 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.108 |
||
réseau |
Passerelle |
réseau |
Passerelle |
10.0.0.0 |
0.0.0.0 |
192.168.1.0 |
0.0.0.0 |
192.168.1.0 |
10.0.0.111 |
10.0.0.0 |
192.168.1.108 |
0.0.0.0 |
10.0.0.2 |
0.0.0.0 |
192.168.1.1 |
Outils réseau courants
Voici une courte liste d'outils bien pratiques pour résoudre les problèmes de connexions réseau.
ping
ping hôte
Cette commande envoie un paquet ICMP_ECHO_REQUEST à "hôte" et attend un ICMP ECHO_RESPONSE.
Options :
-b ping sur une adresse de diffusion (broadcast)
-c N envoie N paquets
-q mode silencieux (quiet) : affiche uniquement les messages de début et de fin
netstat
La commande netstat permet d'obtenir, selon les options utilisées, la liste des connexions réseau en cours, la table de routage ou des statistiques sur l'interface.
Options :
-r même chose que /sbin/route
-I affiche la liste des interfaces
-n pas de résolution des adresses IP
-p affiche le PID et le nom des programmes (seulement pour root)
-v verbose
-c mise à jour en continu
Exemple :
netstat –-inet –n Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.1.10:139 192.168.1.153:1992 ESTABLISHED tcp 0 0 192.168.1.10:22 192.168.1.138:1114 ESTABLISHED tcp 0 0 192.168.1.10:80 192.168.1.71:18858 TIME_WAIT
Dans cet exemple, vous pouvez voir que la machine a établi des connexions sur les ports tcp 139, 22 et 80.
arp
La commande arp affiche (NdT : et manipule) le cache de résolution des adresses ARP.
Exemple :
arp Address HWtype HWaddress Iface 192.168.1.71 ether 00:04:C1:D7:CA:2D eth0
traceroute
Affiche la route prise par les paquets jusqu'à l'hôte distant. traceroute force les hôtes intermédiaires à répondre par des messages d'erreur (ICMP TIME_EXCEEDED), en fixant délibérément le TTL (temps de vie restant - Time To Live) à une valeur trop faible. Après chaque notification TIME_EXEEDED, traceroute incrémente cette valeur, ce qui force le paquet suivant à aller un nœud plus loin, jusqu'à ce qu'il atteigne sa destination.
Exemple :
/usr/sbin/traceroute -n www.redhat.com traceroute: Warning: www.redhat.com has multiple addresses; using 216.148.218.197 traceroute to www.redhat.com (216.148.218.197), 30 hops max, 38 byte packets 1 192.168.1.1 0.440 ms 0.347 ms 0.341 ms ---- snip --- 14 12.122.2.145 112.116 ms 110.908 ms 112.002 ms 15 12.122.2.74 156.629 ms 157.028 ms 156.857 ms 16 12.122.255.222 156.867 ms 156.641 ms 156.623 ms 17 216.148.209.66 159.982 ms 157.462 ms 158.537 ms 18 216.148.218.197 157.395 ms 156.789 ms 156.080 ms
Options :
-f ttl modifie la valeur initiale du ttl (par défaut à 1)
-n pas de résolution des adresses IP
-v mode bavard
-w sec fixe le délai d'attente des paquets retournés à sec
Exercices
Donnez la table de routage de la passerelle LAN pour le scénario de routage
- Activez votre interface réseau manuellement :
ifconfig eth0 192.168.0.x
à partir de la liste des modules du noyau, vérifiez que le module pour eth0 est chargé (regardez dans /etc/modules).
- stoppez votre interface réseau avec :
- ifconfig eth0 down
vérifiez que vous pouvez réactiver votre interface sans avoir à entre de nouveau les paramètres : ifconfig eth0 up
- arrêtez votre interface puis déchargez le module du noyau (rmmod module). Que ce passe-t-il si vous répétez l'étape 3(ii) ?
- Séparez la classe en deux réseau : A (192.168.1.0) et B (10.0.0.0)
- essayez d'accéder aux postes sur le réseau
- choisissez une machine pour faire office de passerelle (sur les deux réseaux)
- sur la passerelle uniquement, procédez comme suit :
- activer la redirection d'adresses IP :
echo 1 > /proc/sys/net/ipv4/ip_forward
- activez une interface virtuelle qui fonctionnera comme seconde interface
pour une machine sur le réseau 192.168.1.0 : ifup eth0:1 10.0.0.x (où x est une IP disponible sur ce réseau)
- ajoutez une route vers le nouveau réseau en la forçant à utiliser l'interface eth0:1
- activer la redirection d'adresses IP :
- sur des machines de chacun des deux réseaux, définissez une route vers l'autre réseau utilisant l'IP de la passerelle
Page consultée 502 fois