10.Débuter en réseau
Ce document se veut être un document synthétique qui vous permettra de répondre aux questions suivantes :
Qu'est-ce-que le protocole TCP/IP
Quelle est ma configuration réseau local et distant ?
Quels sont les services réseaux configurés sur ma machine ?
Quels sont les principaux outils de diagnostic réseau sur ma machine ?
Attention : la liste des commandes fournies n'est pas exhaustive et plutôt orientée sur des distributions Debian. Quelques précisions sont toutefois apportées concernant Mandrake et Redhat pour les plus grosses différences.
10.1.L'adressage réseau
10.1.1.Le protocole IP
Le protocole TCP/IP est dédié au transport des informations sur un réseau informatique. Il est organisé par réseaux et machines. Chaque machine est identifiée par une adresse IP. Chaque identifiant IP appelé numéro ou adresse IP doit être unique sur l'ensemble du réseau. Chaque machine ne dispose que d'une adresse IP par réseau sur lequel elle est connectée. Les machines (routeurs, passerelles) qui sont multi-domiciliées c'est-à-dire qui possèdent plusieurs adresses IP sont des cas spéciaux que nous étudierons plus tard.
Une adresse IP est un nombre codé sur 4 octets. Par habitude, cette adresse est représentée sous la forme décimale pointée w.x.y.z où w,x,y,z sont quatre chiffres décimaux allant de 0 à 255. Cette adresse peut être vue de 2 façons différentes:
La machine d'adresse w.x.y.z .
La machine d'adresse z du réseau w.x.y.0 .
La machine d'adresse y.z du réseau w.x.0.0 .
La machine d'adresse x.y.z du réseau w.0.0.0 .
Ces différentes façons de lire une adresse IP permettent d'optimiser la façon de calculer les routes vers d'autres réseaux. En résumé, on peut dire qu'un adresse IP se décompose en deux parties: une adresse de réseau plus une adresse de machine sur un réseau.
On peut comparer son fonctionnement des adresses postales: l'adresse du réseau est analogue au code postal, l'adresse de la machine dans le réseau est analogue à la rue dans la ville. chaque carte doit avoir une adresse réseau (i.e. adresse IP) , mais comme pour les grandes villes où il y a beaucoup de maisons, on découpe souvent un réseau en plusieurs sous-réseaux (le meilleur exemple est Internet lui-même qui est constitué de divers - et nombreux - réseaux plus locaux), pour permettre de les reconnaître facilement, on leur donne un "bout d'adresse" en commun. Puis, comme on classe les maisons par rues et numéros, on classe les réseaux par adresse de réseau (le "bout d'adresse" en commun) et adresse de carte (adresse complète comprenant l'adresse de réseau ainsi qu'une partie spécifique à la carte).
Comment reconnaître le réseau et l'hôte ? On définit ce qu'on appelle un masque de réseau. Par exemple le réseau 192.168.3.0 a un masque de 255.255.255.0, le réseau 10.0.0.0 un masque de 255.0.0.0. Par convention, il existe trois réseaux à usage interne:
Classe A: 10.0.0.0/255.0.0.0
Classe B: 172.x.0.0/255.255.0.0
Classe C: 192.168.x.0/255.255.255.0
Certaines adresses de ces réseaux sont réservées: la première (.0) désigne le réseau, la dernière (.255) toutes les machines du réseau (ce qu'on appelle l'adresse de broadcast), et en général la seconde (.1) ou l'avant-dernière (.254) est la passerelle pour contacter d'autres réseaux (ce qu'on appelle la gateway).
10.1.2.Le protocole ethernet
Dans un réseau TCP/IP, nous avons dit que chaque machine était identifiée par une adresse IP. Cette adresse est logique, elle ne dépend pas du matériel utilisé pour relier les machines ensemble. Ces adresses IP peuvent être modifiées relativement rapidement par les administrateurs pour diverses raisons.
Cependant il existe des adresses physiques, uniques pour chaque machine: les adresses MAC. Ces adresses sont de forme aa:bb:cc:dd:ee:ff. Ces adresses dépendent de la carte réseau, et donc de la machine.
Il existe une passerelle entre le monde des adresses IP (réseau logique) et le monde des adresses MAC (réseau physique): c'est le protocole arp.
Du point de vue de l'analogie avec le système postal, l'adresse MAC est en quelque sorte le numéro de série de la boite au lettres.
10.1.3.Le protocole TCP
Il est possible d'héberger plusieurs services dans une machine. On a doc besoin de diminuer la granularité des adresses IP. Pour cette raison, le protocole tcp défini le principe de port. Ces ports (compris entre 1 et 65535) sont normalisés et propres à chaque service (DNS: 53, HTTP: 80, ...).
Si on reprend l'analogie de la poste, à l'adresse IP correspond un immeuble, et dans ce cas le numéro de port correspond à un numéro d'appartement.
10.1.4.Interaction des protocoles
Pour comprendre le protocole TCP/IP, il faut comprendre son organisation. Un protocole de communication est classiquement organisé en 7 couches: c'est ce qu'on appelle le modèle OSI:
|
couche |
nom |
protocole |
adressage |
système postal |
|---|---|---|---|---|
|
7 |
Application |
/ |
/ |
/ |
|
6 |
Présentation |
/ |
/ |
/ |
|
5 |
Session |
/ |
/ |
/ |
|
4 |
Transport |
TCP / UDP |
port (0 -> 65535) |
port = numéro d'appartement |
|
3 |
Réseau |
IP |
adresse IP (aaa.bbb.ccc.ddd) |
réseau = ville machine = adresse |
|
2 |
Liaison |
ethernet |
adresse MAC (aa:bb:cc:dd:ee:ff) |
adresse MAC = numéro de série de la boite |
|
1 |
Physique |
/ |
/ |
/ |
Finalement, pour communiquer avec une machine, il faut connaître son IP et le port sur lequel envoyer la communication.
10.2.Le routage
Dans le cadre d'un réseau physique (ethernet), chaque carte est connue par une numéro MAC. Mais les réseaux physiques peuvent être incompatibles entre eux (ex: Ethernet / Token Ring), or on a besoin d'acheminer des informations sur des distances variables (petites / moyennes / grandes) sans avoir se préoccuper du protocole de réseau physique.
Ainsi dans le cadre d'un réseau IP, chaque machine dispose d'un numéro IP unique (4 octets pour IPv4, 16 octets pour IPv6). 2 machines peuvent se parler directement lorsqu'elles sont situées
dans le même réseau physique
dans le même réseau logique
Si les 2 conditions ne sont pas remplies simultanément, alors on met en place des techniques de routage et de passerelles.
2 machines sont dans le même réseau logique lorsqu'elle ont des adresses réseau voisines, s'inscrivant dans un intervalle parfaitement définit (adresse réseau/masque). Par exemple : 192.168.25.0/255.255.255.0 signifie que le réseau logique va de 192.168.25.0 à 192.168.25.255, dont il faut retrancher la 1re et la dernière adresse:
la première adresse désigne le réseau en lui même,
la dernière désigne la totalité des membres possibles de ce réseau (adresse de broadcast).
Si 2 machines, qui ne sont pas dans le même réseau logique, souhaitent discuter entre elles, alors le routage se met en place. Le routage peut être assimilé à une successions de "sauts de puces" effectués par un paquet IP entre la machine d'émission et la machine de réception. À tout moment, dans une étape du routage il faut respecter la condition: 2 machines situes en vis à vis doivent être dans le même réseau logique. Pour obtenir ce résultat, les machines routeur se voient attribuer plusieurs adresses IP : 1 pour chaque réalisation d'un vis à vis.

10.3.Le hostname
Le nom de machine, ou hostname en bon français, est extrêmement important et a des conséquences non seulement sur la configuration réseau mais aussi sur le fonctionnement (ou dysfonctionnement) du serveur X et donc de l'interface graphique. Pour afficher le hostname, on utilise la commande hostname.
lna:~# hostname lna.emtstvit
Pour modifier le hostname : il suffit de modifier l'un des fichiers suivants: /etc/sysconfig/network (sur Redhat et Mandrake), /etc/HOSTNAME (sur slackware), /etc/hostname (sur Debian), /etc/conf.d/network (gentoo), et /etc/hosts.
10.4.L'adresse IP
Pour connaître l'adressage IP de la machine, quelle que soit la nature du réseau, une commande à connaitre : ifconfig. La commande vous retourne quelque chose comme ça :
lna:~# ifconfig eth0 Lien encap:Ethernet HWaddr 00:10:5A:DA:D3:47 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 inet adr:192.168.3.2 Bcast:192.168.0.255 Masque:255.255.255.0 RX packets:2006397 errors:0 dropped:0 overruns:0 frame:0 TX packets:1863082 errors:0 dropped:0 overruns:0 carrier:0 collisions:3679 lg file transmission:100 RX bytes:1283974990 (1224.4 Mb) TX bytes:590947572 (563.5 Mb) Interruption:10 Adresse de base:0xe800 lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:442 errors:0 dropped:0 overruns:0 frame:0 TX packets:442 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:278720 (272.1 Kb) TX bytes:278720 (272.1 Kb) ppp0 Lien encap:Protocole Point-à-Point inet adr:213.41.132.215 P-t-P:62.4.16.248 Masque:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:2001693 errors:2006395 dropped:0 overruns:0 frame:0 TX packets:1858378 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:3 RX bytes:1238624343 (1181.2 Mb) TX bytes:549766984 (524.2 Mb)
Les informations fournies par la commande :
|
eth0, ppp0, lo... |
nom de l'interface réseau |
|---|---|
|
HWaddr |
adresse MAC ou matérielle |
|
inet adr |
adresse IP liée à l'interface réseau |
|
Bcast |
adresse de broadcast |
|
Masque |
masque de réseau |
|
UP |
état de l'interface réseau - un 1er élément de diagnostic d'une panne réseau (non fonctionnement : DOWN) |
|
MTU |
taille maximum des trames physiques |
|
RX / TX packets |
nombre de paquets arrivés à destination, perdus ou non reçus à cause de débordements (arrivent de manière trop rapide pour pouvoir être traités par le noyau) - autre élément de diagnostic notamment lorsque les transmissions deviennent très lentes voire inexistantes. |
|
collisions |
produit lorsque 2 machines émettent en même temps sur le réseau. Il n'y a pas lieu de s'inquiéter tant que le rapport (nombre de paquets total / nombre de collisions) reste inférieur à 30%. |
les principaux fichiers de configuration se situent dans /etc/network, ou dans /etc/sysconfig/network-scripts pour Redhat et Mandrake. Les fichiers s'appellent respectivement interfaces et ifcfg-ethx (ou x est le numéro d'instance de la carte réseau).
10.5.Se connecter à une machine distante avec ssh
Il y a aujourd'hui deux possibilités de travail, en local (local work) ou à distance (remote work). Ce dernier est permis par l'utilisation du réseau, qu'il soit local (LAN) ou réellement éloigné, comme par Internet (WAN). De nombreux outils ont été fournis pour utiliser la capacité du réseau. Échanger, copier, utiliser des shells à distance. Les noms de ces outils sont respectivement FTP, rcp, telnet, etc... Bien que ces outils, utilisés pendant des années et même encore aujourd'hui dans certaines entreprises, soient très pratiques, ils comportent une faiblesse importante. Leurs transactions sont transmises en clair via le réseau.
SH signifie Secure SHell. C'est un protocole qui permet de faire des connexions sécurisées (i.e. cryptées) entre un serveur et un client SSH. Nous allons utiliser le programme OpenSSH, qui est la version libre du client et du serveur SSH.
10.5.1.Connexion avec authentification par mot de passe
C'est la méthode la plus simple. Depuis la machine cliente, tapez :
lna:~# ssh login@serveur
Si c'est la première connexion SSH depuis ce client vers ce serveur, il vous demande si le fingerprint de la clé publique présentée par le serveur est bien le bon. Pour être sûr que vous vous connectez au bon serveur, vous devez connaître de façon certaine le fingerprint de sa clé publique et la comparer à celle qu'il vous affiche. Si les deux fingerprints sont identiques, répondez yes, et la clé publique du serveur est alors rajoutée au fichier ~/.ssh/known_hosts.
Si vous vous êtes déjà connecté depuis ce client vers le serveur, sa clé publique est déjà dans le fichier ~/.ssh/known_hosts et il ne vous demande donc rien.
Ensuite, entrez votre mot de passe... et vous verrez apparaître le prompt, comme si vous vous êtiez loggué en local sur la machine.
10.5.2.Authentification par clé
Au lieu de s'authentifier par mot de passe, les utilisateurs peuvent s'authentifier grâce à la cryptographie asymétrique et son couple de clés privée/publique, comme le fait le serveur SSH auprès du client SSH. Cette méthode requiert deux étapes:
Générer ses clés: pour générer un couple de clés DSA, tapez :
lna:~# ssh-keygen -t dsa
Les clés générées ont par défaut une longueur de 1024 bits, ce qui est aujourd'hui considéré comme suffisant pour une bonne protection.
Par défaut (il demande confirmation lors du processus de création), la clé privée est stockée dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la clé publique est stockée dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644.
Lors de la création, il vous demande une pass phrase qui est un mot de passe pour protéger la clé privée. Cette pass phrase sert à crypter la clé privée. La pass phrase vous sera alors demandée à chaque utilisation de la clé privée, c'est à dire à chaque fois que vous vous logguerez en utilisant cette méthode d'autentification.
Vous pouvez à tout moment changer la pass phrase qui protège votre clé privée avec la commande ssh-keygen -p.
Autoriser votre clé publique: pour cela, il suffit de copier votre clé publique dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle vous voulez vous logguer à distance. La commande suivante permet de réaliser cette opération via SSH:
lna:~# ssh-copy-id -i ~/.ssh/id_dsa.pub login@serveur
et entrez le mot de passe de votre compte sur le serveur.
se logguer
La commande est la même que pour une authentification par mot de passe.
10.6.Se rendre la vie distante plus facile avec Screen
L'inconvénient de travailler en distant est qu'on ne dispose plus que d'une seule console. Screen est un outil qui permet d'émuler plusieurs consoles.
Il se lance comme un outil classique (après s'être logué sur la machine distante):
lna:~# screen
À l'affichage de l'écran présentant la version, appuyez simplement sur la barre d'espacement pour poursuivre.
Quelques raccourcis:
|
<ctrl><a> <?> |
affiche l'aide |
|---|---|
|
<ctrl><a> <c> |
crée un nouveau terminal |
|
<ctrl><a> <n> |
affiche le terminal virtuel suivant |
|
<ctrl><a> <p> |
affiche le terminal virtuel précédent |
|
<ctrl><d> |
ferme le terminal courant |
10.7.Les principaux outils de diagnostic réseau
10.7.1.arp
Permet de visualiser et modifier la table arp stockée en cache. La table arp est une table de correspondance entre adresses IP et adresses matérielles (ou MAC). Elle est générée au fur et à mesure grâce au protocole ARP et stockée en cache.
Cette commande permet de détecter 2 types de problèmes : le fonctionnement au niveau hardware de la carte et la bonne correspondance entre une adresse IP et une carte réseau au moyen de son adresse MAC (problème de double attribution d'une adresse IP sur un réseau, spoofing, ...).
Exemple : Vous voulez vérifier que la seconde carte réseau appelée eth1 est opérationnelle. Dans un 1er temps, on va pinger la carte, ce qui va permettre d'alimenter la table arp.
lna:~# ping 192.168.3.2
Une fois la table alimentée, on vérifie son contenu : la présence de l'adresse IP ET de l'adresse MAC
lna:~# arp -a ? (192.168.3.14) at 52:54:05:F5:AD:0C [ether] on eth1 ? (192.168.3.2) at 00:04:76:8E:B2:90 [ether] on eth1
En cas d'erreur dans la table, il est inutile de pousser plus avant le diagnostic... On est face à un problème matériel (certainement le plus pénible à détecter).
10.7.2.ping
Véritable outil à tout faire, à connaitre absolument ! Il permet de détecter bon nombre de problèmes concernant votre configuration IP : adressage de votre carte réseau (adresse IP, adresse de réseau, routage, configuration de la résolution de nom).
Exemple : Mon réseau ne fonctionne pas. Je vais donc tester l'adresse avec la commande ping
lna:~# ping 192.168.3.14 PING 192.168.14 (192.168.3.14) from 192.168.3.2 : 56(84) bytes of data. From 192.168.3.2 icmp_seq=1 Destination Host Unreachable
Plusieurs causes de non-fonctionnement : je vérifie
que l'adresse IP existe
que le masque de sous-réseau est cohérent (ifconfig)
que ma résolution de nom est opérationnelle (/etc/resolv.conf)
que le routage est correctement configuré (commande route vue plus loin)
Si la commande ping fonctionne alors ce n'est ni un problème matériel, ni un problème de configuration IP. Toutefois le réseau peut subir des dysfonctionnements tout simplement parce qu'il est chargé. On augmente alors la taille des paquets envoyés:
lna:~# ping -s 128 192.168.3.14 PING 192.168.3.14 (192.168.3.14) from 192.168.3.2 : 128(156) bytes of data. 136 bytes from 192.168.3.14 : icmp_seq=1 ttl=128 time=0.583 ms 136 bytes from 192.168.3.14 : icmp_seq=2 ttl=128 time=0.598 ms 136 bytes from 192.168.3.14 : icmp_seq=3 ttl=128 time=0.640 ms 136 bytes from 192.168.3.14 : icmp_seq=4 ttl=128 time=0.578 ms --- 192.168.3.14 ping statistics --- 4 packets transmitted, 4 received, 0% loss, time 3008ms rtt min/avg/max/mdev = 0.578/0.599/0.640/0.038 m
Ceci permet d'approfondir le test. On vérifiera :
les numéros de séquences (icmp_seq) : ils sont séquentiels et numérotent les paquets envoyés. Une surcharge réseau ou un câblage de mauvaise qualité par exemple entraine la perte de paquets (voir % loss).
le temps de transmission (time) : plus il est long, plus le réseau est chargé.
Attention : si vous lancez un ping sur un serveur et que celui-ci ne répond pas, cela ne signifie pas forcément qu'il y ait un problème. En effet, les firewalls peuvent bloquer toute réponse à un ping et faire échouer toute tentative de ping sur eux.
10.7.3.route
Permet d'afficher la table de routage en cache. La commande affiche la table de routage et effectue la résolution de nom dès que possible. Les commandes route -n affichent le table de routage sans résolution de nom. À noter que la commande netstat -r affiche les même informations.
lna:~# route Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface dns1.emtstvit * 255.255.255.255 UH 0 0 0 tap8 dns1.emtstvit * 255.255.255.255 UH 0 0 0 tap0 Anacam.rain.fr vpn1.emtstvit 255.255.255.255 UGH 0 0 0 eth0 ldap1.epmtstvit * 255.255.255.255 UH 0 0 0 tap4 dhcp1.emtstvit * 255.255.255.255 UH 0 0 0 tap7 dhcp1.emtstvit * 255.255.255.255 UH 0 0 0 tap2 dhcp2.emtstvit * 255.255.255.255 UH 0 0 0 tap3 dns2.emtstvit * 255.255.255.255 UH 0 0 0 tap1 ldap2.epmtstvit * 255.255.255.255 UH 0 0 0 tap5 ntp.emtstvit * 255.255.255.255 UH 0 0 0 tap6 192.168.7.0 vpn1.emtstvit 255.255.255.0 UG 0 0 0 eth0 192.168.6.0 vpn0.emtstvit 255.255.255.0 UG 0 0 0 eth0 10.6.69.0 vpn0.emtstvit 255.255.255.0 UG 0 0 0 eth0 192.168.4.0 192.168.3.25 255.255.255.0 UG 0 0 0 eth0 10.99.100.0 vpn1.emtstvit 255.255.255.0 UG 0 0 0 eth0 192.168.3.0 * 255.255.255.0 U 0 0 0 eth0 192.168.2.0 vpn0.emtstvit 255.255.255.0 UG 0 0 0 eth0 192.168.1.0 vpn0.emtstvit 255.255.255.0 UG 0 0 0 eth0 193.1.1.0 vpn0.emtstvit 255.255.255.0 UG 0 0 0 eth0 191.1.0.0 * 255.255.0.0 U 0 0 0 eth1 10.25.0.0 * 255.255.0.0 U 0 0 0 eth1 default vpn1.emtstvit 0.0.0.0 UG 0 0 0 eth0 default vpn0.emtstvit 0.0.0.0 UG 0 0 0 eth0
Pour info: U = routeur installé et opérationnel ; G = passerelle distante ; H = destination est un hôte et non un réseau.
Un examen de la table de routage vous permet de vérifier par exemple que la machine sur laquelle vous travaillez et qui se situe derrière une passerelle a bien une route par défaut qui lui permet d'aller vers l'extérieur (Destination : default).
Vous ne pouvez pas atteindre l'extérieur car vous n'avez pas cette route, 2 solutions :
vous ajoutez la route pour la session en cours :
lna:~# route add default gw adresseIP_de_la_passerelle
vous modifiez le fichier de configuration du routage de manière à ce que la table contienne la route pour toutes les sessions : /etc/network/interfaces
Vous ne pouvez pas atteindre l'extérieur car vous avez une route erronée, 2 solutions :
vous modifiez la route pour la session en cours :
lna:~# route del default gw adresseIP_de_la_passerelle_erronée
lna:~# route add default gw adresseIP_de_la_passerelle_correcte
vous modifiez le fichier de configuration du routage de manière à ce que la table contienne la route correcte pour toutes les sessions : /etc/network/interfaces
10.7.4.traceroute
Vous ne parvenez pas à atteindre une URL ou un poste donné... La commande traceroute, comme son nom l'indique, vous établit la route suivie par les paquets de données vers la destination. La route est constituée de tous les routeurs traversés pour arriver à destination. Par exemple:
lna:~# traceroute 192.168.3.14 traceroute to 192.168.3.14 (192.168.3.14), 30 hops max, 38 byte packets 1 appli1 (192.168.3.14) 0.138 ms 0.115 ms 0.103 ms
Il s'agit d'une machine locale. Elle est située sur le même réseau, aucun routeur n'est traversé, l'adresse de destination est donc atteinte directement.
lna:~# traceroute 192.168.4.1 traceroute to 192.168.4.1 (192.168.4.1), 30 hops max, 38 byte packets 1 192.168.3.25 (192.168.3.25) 5.204 ms * 1.307 ms 2 trdinov-vrh.arnes.si (193.2.1.11) 7.273 ms * 7.356 ms 3 fichier.emtbes (192.168.4.1) 7.220 ms 7.088 ms 7.001 ms
On a ici une adresse située sur le même réseau, dans un autre site. On transite donc par un vpn, et tous les routeurs traversés sont indiqués et numérotés.
lna:~# traceroute -n free.fr traceroute to free.fr (213.228.0.42), 30 hops max, 38 byte packets 1 192.168.3.22 4.945 ms 9.817 ms 0.142 ms 2 193.252.219.129 41.191 ms 36.178 ms 36.199 ms 3 193.253.2.81 36.221 ms 35.870 ms 37.228 ms 4 193.252.160.114 43.966 ms 42.878 ms 43.615 ms 5 193.252.161.114 48.965 ms 49.621 ms 47.988 ms 6 193.252.161.54 212.797 ms 64.363 ms 88.608 ms 7 193.252.103.85 49.622 ms 48.297 ms 47.615 ms 8 193.251.126.78 61.436 ms 48.271 ms 50.658 ms 9 193.252.103.245 49.991 ms 50.306 ms 50.018 ms 10 213.228.3.1 50.312 ms 49.340 ms 49.292 ms 11 213.228.0.42 49.675 ms 48.973 ms 49.644 ms
On a ici une adresse située à l'extérieur, tous les routeurs traversés sont indiqués et numérotés.
Là où traceroute devient un outil de diagnostic :
lna:~# traceroute 192.168.3.14 traceroute to 192.168.3.14 (192.168.3.14), 30 hops max, 38 byte packets 1 192.168.3.14 (192.168.3.14) 2999 ms !H 2994 ms !H 2999 ms !H
Cette fois-ci la commande nous donne des informations différentes : il lui est impossible de trouver la route et il affiche directement la destination avec un des codes d'erreur suivant :
!H : host unreachable
!N : network unreachable
!P : protocol unreachable
10.7.5.netstat
On a déjà vu la commande netstat dans le cadre de l'affichage de la table de routage. La commande permet également d'obtenir des informations détaillées sur l'état des interfaces réseau. Par exemple :
lna:~# netstat -i Table d'interfaces noyau Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 01494099532 74 72 01488416789 0 0 0 BMRU eth1 1500 01075647525 0 0 01075729802 0 0 0 BMRU lo 16436 0 2184358 0 0 0 2184358 0 0 0 LRU tap0 1500 0 65400 0 0 0 65778 0 0 0 BMRU tap1 1500 0 25696 0 0 0 23148 0 0 0 BMRU tap2 1500 0 175415 0 0 0 97046 0 0 0 BMRU tap3 1500 0 55763 0 0 0 28136 0 0 0 BMRU tap4 1500 0 89947 0 0 0 97810 0 0 0 BMRU tap5 1500 0 79748 0 0 0 2685 0 0 0 BMRU tap6 1500 0 34075 0 0 0 28165 0 0 0 BMRU tap7 1500 0 32076 0 0 0 19522 0 0 0 BMRU tap8 1500 0 77757 0 0 0 77172 0 0 0 BMRU
Avec:
|
RX |
paquets reçus |
|---|---|
|
TX |
paquets envoyés (transmis) |
|
OK |
paquets reçus/envoyés correctement |
|
ERR |
paquets reçus/envoyés avec des erreurs |
|
DRP |
paquets reçus/envoyés droppés |
|
OVR |
paquets reçus/envoyés retransmis |
D'autres options de la commande permettent notamment de visualiser les ports ouverts : netstat -tu (tcp et udp). Par exemple :
lna:~# netstat -tu Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 0 0 lna:ldap appli.emtstvit:35619 ESTABLISHED tcp 0 0 localhost:ldap localhost:54786 ESTABLISHED tcp 0 0 lna:1023 fichier.emtbes:32771 TIME_WAIT tcp 0 0 lna:netbios-ssn 192.168.3.210:1036 ESTABLISHED tcp 0 0 localhost:34427 localhost:ldap ESTABLISHED tcp 0 0 lna:ldap appli1.emtstvit:40846 ESTABLISHED
10.7.6.resolv.conf
Ce fichier permet la configuration d'un client DNS. C'est lui qui permet l'utilisation de serveurs DNS pour la résolution de noms en adresse IP (ce qui vous permet par exemple de taper une URL dans un navigateur et non une adresse IP). Un fichier mal configuré vous empêchera notamment de surfer. La syntaxe est la suivante:
lna:~# cat /etc/resolv.conf search emtstvit nameserver 192.168.3.33 nameserver 192.168.3.173
La première ligne indique dans quels domaines rechercher le nom en priorité. Par exemple quand on recherche lna, on va implicitement demander l'IP de la machine se nommant lna.emtstvit.
10.7.7.Résolution (inverse) de noms
Vous avez récupéré des informations sous forme d'IP ou de nom dans vos logs et vous voulez savoir qui se cache derrière cette IP. Voici deux outils qui vous permettront de faire de la résolution de nom ou de la résolution inverse avec des informations complémentaires sur l'identité du serveur.
lna:~# host fichier fichier.emtstvit has address 192.168.3.1 lna:~# host 192.168.3.1 1.3.168.192.in-addr.arpa domain name pointer fichier.emtstvit. lna:~# host fichiers Host fichiers not found: 3(NXDOMAIN) lna:~# host 192.168.3.23 Host 23.3.168.192.in-addr.arpa not found: 3(NXDOMAIN)
Et avec l'outil dig:
lna:~# dig 192.168.3.23 ; <<>> DiG 9.2.1 <<>> 192.168.3.23 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60101 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;192.168.3.23. IN A ;; AUTHORITY SECTION: . 10770 IN SOA A.ROOT-SERVERS.NET. NSTLD.VERISIGN-GRS.COM. 2004051500 1800 900 604800 86400 ;; Query time: 2 msec ;; SERVER: 192.168.3.33#53(192.168.3.33) ;; WHEN: Mon May 17 11:45:18 2004 ;; MSG SIZE rcvd: 105
11.TP3 - Réseau
Logguez-vous sur 192.168.3.2
Déterminez son nom
Déterminez à quel réseau appartient la machine
Listez les machines sur les réseaux visibles en utilisant l'adresse de broadcast
Déterminez les noms des machines sur tous les réseaux visibles
Affichez les routes de la machine
Listez les passerelles autours de la machine
Trouvez par quelle machine aller sur internet
Affichez quels services écoutent sur la machine
Affichez les machines connectées en ssh sur lna
12.Service Webmin
Webmin est un logiciel mettant à la disposition de l'administrateur un moyen simple et graphiqe pour administrer le plupart des services disponibles sous Linux.
12.1.Architecture générale
La connexion à webmin se fait par l'URL
https://<machine sur laquelle fonctionne webmin>:10000

fig
5 - Écran de login à Webmin
Nom d'utilisateur: sauf indication contraire, la connexion se fait en tant que super-utilisateur, c'est à dire root.
mot de passe.
L'interface est par la suite assez claire:

Les services administrables sont classés par catégorie accessible via un système d'onglets sur la partie supérieur de l'interface
Chaque service est représenté par une icône conduisant à un ensemble de formulaires de renseignement
Lien pour se déconnecter
12.2.Administration d'autres serveurs
Webmin a été conçu pour administrer des services locaux. Il est cependant possible de le configurer pour administrer des services distants, comme c'est le cas pour le Webmin installé sur lna.

fig
7 - Accès aux interfaces webmin de différents serveurs
administration du service dhcp sur l'UML dhcp1
administration du service dhcp sur l'UML dhcp2
administration du service dns sur l'UML dns1
administration du service dns sur l'UML dns2
administration du service ldap sur l'UML ldap1
administration du service ldap sur l'UML ldap2
administration du service ntp sur l'UML ntp
L'administration d'un serveur distant se fait de manière totalement transparente: le login est automatique.

13.Service DHCP
DHCP (Dynamic Host Configuration Protocol) est un protocole qui permet de configurer automatiquement les paramètres réseau des postes connectés. Cela évite de mettre les configurations réseau "en dur" sur les postes connectés.
13.1.Architecture
Deux UMLs sont utilisés comme service DHCP: dhcp1 et dhcp2. Ils fonctionnent symétriquement (pas de relation maître / esclave). Ils utilisent également le même fichier de configuration (le modifier pour un des deux services impacte le fonctionnement de l'autre).
13.2.Paramètres
|
noms |
dhcp1 dhcp2 |
|---|---|
|
adresses IP |
192.168.3.37 192.168.3.177 |
13.3.Fichiers
|
configuration |
/etc/dhcp3/dhcpd.conf /etc/default/dhcp3-server |
|---|---|
|
logs |
/var/log/syslog |
13.4.Administration
|
arrêter le service |
/etc/init.d/dhcp3-server stop |
|---|---|
|
démarrer le service |
/etc/init.d/dhcp3-server start |
|
redémarrer le service |
/etc/init.d/dhcp3-server restart |
|
lister les logs |
grep dhcpd /var/log/syslog | less |
|
vérifier la présence du service |
ps aux | grep [d]hcpd3 |
|
tuer le service |
killall -9 dhcpd3 |
13.5.Syntaxe
/etc/dhcp3/dhcpd.conf
# sous-réseau
subnet <adresse du réseau> netmask <masque du réseau> {
allow booting;
allow bootp;
option broadcast-address <adresse de broadcast>;
option routers <adresse de la passerelle>;
option subnet-mask <masque du réseau>;
option domain-name <noms de domaneis pour la résolution>;
option domain-name-servers <adresse du serveur dns>;
next-server <adresse du serveur tftp>;
filename "<nom de l'image tftp>";
# machine
host <nom de la machine> {
hardware ethernet <adresse MAC de la machine>;
option host-name "<nom de la machine>";
fixed-address <adresse IP de la machine>;
}
}
13.6.Webmin
Localisation:

L'interface d'administration du serveur DHCP se trouve dans la catégorie servers.
Écran principal:

fig
10 - détail de l'interface de gestion du dhcp
sous-réseau déjà défini
machine déjà définie
pour ajouter un sous-réseau
pour ajouter une nouvelle machine
pour enregistrer les changements effectués
Écran de modification d'un sous-réseau

- nom du sous-réseau (facultatif)
- adresse su sous-réseau
- masque du sous-réseau
- nom de l'image tftp
- adresse de l'hôte tftp
- liste des machines appartenant à ce réseau
Écran de modification d'une machine

fig
12 - Ajout manuel d'un hôte dans le dhcp
nom de la machine (facultatif)
nom d'hôte de la machine
adresse MAC de la machine
sous-réseau auquel appartient la machine
adresse IP de la machine
14.Service DNS
Un serveur de noms permet d'associer une adresse IP à un nom. Dans un réseau, chaque machine se voit attribuer une adresse IP unique, qui permet de l'identifier. C'est un peu comme une adresse postale, qui permet d'identifier une maison de façon certaine. Mais si une adresse chiffrée est plus facile à manipuler par un ordinateur, elle est difficile à mémoriser par un humain. Ainsi, on se souvient facilement de appli1, mais plus difficilement de 192.168.3.14. Le serveur de noms va permettre de trouver l'adresse IP à partir d'un nom (ou inversement), que l'ordinateur pourra ensuite interroger.
14.1.Architecture
Deux machines sont utilisés comme service DNS: dns1 et dns2. Ils fonctionnent sur un mode maître / esclave. Tous les changements de configuration se font sur le maître (dns1), l'esclave (dns2) ayant pour seule fonction de répliquer les changements apportés au maître et de le remplacer en cas de défaillance. On peut également les rencontrer sous le terme de dns primaires et secondaires.
14.2.Paramètres
|
noms |
dns1 (maître / primaire) dns2 (esclave / secondaire) |
|---|---|
|
adresses IP |
192.168.3.33 192.168.3.173 |
14.3.Fichiers
|
configuration |
/etc/bind/named.conf |
|---|---|
|
correspondance ip->nom |
/etc/bind/db.[chiffres] |
|
correspondance nom->ip |
/etc/bind/db.[nom-de-site] |
|
logs |
/var/log/syslog |
|---|
14.4.Administration
|
arrêter le service |
/etc/init.d/bind stop |
|---|---|
|
démarrer le service |
/etc/init.d/bind start |
|
redémarrer le service |
/etc/init.d/bind restart |
|
lister les logs |
grep named /var/log/syslog | less |
|
vérifier la présence du service |
ps aux | grep [n]amed |
|
tuer le service |
killall -9 named |
|
logs |
/var/log/syslog |
|---|
14.5.Syntaxe
/etc/bind/named.conf
options {
forwarders {
<première machine à laquelle transmettre des changements>
<deuxième machine à laquelle transmettre des changements>
<...>
};
allow-transfer {
<première machine de laquelle recevoir des changements>
<deuxième machine de laquelle recevoir des changements>
<...>
};
};
# zone inverse sur laquelle on est maître
zone "<adresse ip inverse du réseau>.in-addr.arpa" {
type master;
file "/etc/bind/<adresse ip inverse du réseau>";
};
# domaine sur lequel on est maître
zone "<nom du domaine>" {
type master;
file "/etc/bind/db.<nom du domaine>";
};
# zone inverse sur laquelle on est esclave
zone "<adresse ip inverse du réseau>.in-addr.arpa" {
type slave;
file "/etc/bind/db.<adresse ip inverse du réseau>.BAK";
masters { <adresse IP du serveur maître>; };
};
zone "<nom du domaine>" {
type slave;
file "/etc/bind/db.<nom du domaine>.BAK";
masters { <adresse IP du serveur maître>; };
};
/etc/bind/db.[chiffres]
$TTL 604800
@ IN SOA lna.emtstvit. root.emtstvit. (
<numero de version>
<nb. de secondes avant de contacter les esclaves>
<nb. secondes avant de recontacter un esclave>
<nb de secondes de vie d'un adresse en cache>
<nb de secondes de durée de vie du cache d'adresse>
)
@ IN NS <nom de la machine DNS du domaine>.<nom du domaine>.
<adresse inverse d'une machine dans ce réseau> IN PTR <machine>.<nom du domaine>.
/etc/bind/db.[nom-de-site]
$TTL 604800
@ IN SOA lna.emtstvit. root.emtstvit. (
<numero de version>
<nb. de secondes avant de contacter les esclaves>
<nb. secondes avant de recontacter un esclave>
<nb de secondes de vie d'un adresse en cache>
<nb de secondes de durée de vie du cache d'adresse>
)
@ IN NS <nom de la machine DNS du domaine>.<nom du domaine>.
<machine> IN A <adresse IP de la machine>
<alias> IN CNAME <machine aliasée>
14.6.Webmin
Localisation:

L'interface d'administration du serveur dns se trouve dans la catégorie servers.
Écran principal:

Zone inverse, serveur maître
Zone inverse, serveur esclave
Zone directe, serveur maître
Zone directe, serveur esclave
Édition d'une zone inverse

Le seul paramètre à modifier est la liste des adresses de la zone
Liste des enregistrements d'une zone inverse

Toutes les adresse IP (notation inversée) de la zone sont listées
Édition d'un enregistrement inverse

L'adresse IP de la machine éditée
le nom de cette machine
Édition d'une zone directe

Le seul paramètre à modifier est la liste des noms du domaine
Ajout d'un enregistrement à une zone directe

Nom de la machine à ajouter
Adresse IP de la machine à ajouter
Tous les noms du domaine sont listés
Modification d'un enregistrement direct

Nom de la machine à modifier
Adresse IP de la machine à modifier
15.Service NFS
NFS signifie Network File System. C'est, comme son nom l'indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l'utiliser de manière totalement transparente dans son arborescence Linux.
15.1.Architecture
Le service NTP est installé sur la machine fichier, d'adresse IP 192.168.3.1. Pour qu'une machine monte un de ses répertoires partagés, il suffit d'indiquer d'entre la commande suivante:
mount mon.serveur.nfs:/repertoire/sur/le/serveur /repertoire/chez/le/client
Pour qu'il soit automatiquement monté au démarrage, il suffit de modifier le fichier /etc/fstab du client en ajoutant une ligne du type :
mon.serveur.nfs:/rep/sur/le/serveur /rep/chez/le/client nfs rw 0 0
Le fichier fstab contient la liste des partitions qui sont montées au démarrage par le serveur. Ces partitions peuvent être physique et correspondre à un fichier spécial de type device, ou réseau comme dans le cas du nfs.
15.2.Paramètres
|
nom |
fichier |
|---|---|
|
adresse IP |
192.168.3.1 |
15.3.Fichiers
|
liste des répertoires exportés |
/etc/exports |
|---|---|
|
liste des machines autorisées |
/etc/hosts.allow |
|
liste des machines interdites |
/etc/hosts.deny |
|
logs |
/var/log/syslog |
|---|
15.4.Administration
|
arrêter le service |
/etc/init.d/nfs-server stop |
|---|---|
|
démarrer le service |
/etc/init.d/nfs-server start |
|
redémarrer le service |
/etc/init.d/nfs-server restart |
|
lister les logs |
grep nfs /var/log/syslog | less |
|
vérifier la présence du service |
rpcinfo -p |
|
tuer le service |
killall -9 nfs-server |
16.Service NTP
NTP signifie Network Time Protocol. C'est un protocole qui permet à un ordinateur de synchroniser son horloge sur un autre ordinateur de précision plus élevée. Dans le cas présent, il permet en particulier de synchroniser les horloges de toutes les machines.
16.1.Architecture
Le service NTP est installé sur la machine ntp, d'adresse IP 192.168.3.31. Pour qu'une machine l'utilise pour se synchroniser, il suffit de lui indiquer ntp comme serveur de temps. Ce service n'étant pas critique, il est présent en un seul exemplaire.
16.2.Paramètres
|
nom |
ntp |
|---|---|
|
adresse IP |
192.168.3.31 |
16.3.Fichiers
|
configuration |
/etc/ntp.conf |
|---|---|
|
logs |
/var/log/syslog |
16.4.Administration
|
arrêter le service |
/etc/init.d/ntp stop |
|---|---|
|
démarrer le service |
/etc/init.d/ntp start |
|
redémarrer le service |
/etc/init.d/ntp restart |
|
lister les logs |
grep ntp /var/log/syslog |
|
vérifier la présence du service |
ps aux | grep [n]tpd |
|
tuer le service |
killall -9 ntpd |
16.5.Syntaxe
/etc/ntp.conf
server <nom du premier serveur sur lequel se synchroniser>
server <nom du second serveur sur lequel se synchroniser>
16.6.Webmin
Localisation:

L'interface d'administration du serveur NTP se trouve dans la catégorie hardware.
Écran principal:

Le seul paramètre intéressant à configurer est la listedes serveurs sur lesquels se synchroniser
Gestion de la liste des serveurs

Liste des serveurs en cours d'utilisation (un click sur le lien permet de les reconfigurer)
Lien permettant de vérifier le fonctionnement de la synchronisation
Bouton permettant d'ajouter un nouveau serveur
Vérification de la synchronisation

17.Service LDAP + SAMBA
L'administration des utilisateurs d'un domaine Windows est possible grâce à l'interface IDX Ldap Accounts.
17.1.Écrans de base
Localisation:

fig
25 - Module webmin pour la gestion du service LDAP
L'interface d'administration des utilisateurs
LDAP se trouve dans la catégorie others.
Écran principal
Liens pour l'administration des utilisateurs

fig 26 - Accès aux fonctions principales de gestion
Liens pour l'administration des groupesLiens pour l'administration des comptes
17.2.Gestion des utilisateurs
L'interface de gestion des utilisateurs présente deux catégories:

fig 27 - Interface de gestion des utilisateurs
une liste des utilisateursune interface de recherche
Paramètres généraux

fig 28 - Paramètres généraux d'un utilisateur
login de l'utilisateurNom de l'utilisateur
Description de l'utilisateur
Mot de passe de l'utilisateur
Mot de passe de l'utilisateur (confirmation)
Identifiant de l'utilisateur
Groupe principal de l'utilisateur
Groupes d'appartenance de l'utilisateur

fig 29 - Groupes d'appartenance d'un utilisateur
Bouton permettant d'ajouter l'utilisateur à d'autres groupesBouton permettant de sélectionner les groupes auxquels ajouter l'utilisateur
Liste des groupes supplémentaires auquel appartient l'utilisateur
Profil de l'utilisateur

fig 30 - Profil d'un utilisateur
Shell de l'utilisateurRépertoire de base de l'utilisateur
Paramètres samba de l'utilisateur

fig
31 - Paramètres samba d'un utilisateur
Point de montage du répertoire de base de l'utilisateur
Emplacement réseau du répertoire de base de l'utilisateur
Script exécuté à la connexion de l'utilisateur
GSID (identifiant samba) du groupe de l'utilisateur
Emplacement réseau du profil de l'utilisateur
Possibilité de l'utilisateur de changer son mot de passerelle
Obligation de l'utilisateur de changer son mot de passerelle
SID (identifiant samba) de l'utilisateur
Possibilité de l'utilisateur de se connecter
17.3.Gestion des groupes
L'interface de gestion des utilisateurs est semblable à l'interface de gestion des utilisateurs et dispose de deux zones :

fig
32 - Interface de gestion des groupes
Cependant un seul paramètre est modifiable:

fig 33 - Modification d'un groupe
Identifiant du groupeDescription du groupe
17.4.Gestion des comptes
Enfin, l'interface permet la gestion des types de compte pour les installations hétérogènes:

fig
34 - Interface de gestion des types de compte
18.Services UML
UML signifie User Mode Linux. Un service UML est en quelque-sorte une machine virtuelle à par entière. Depuis l'intérieur, elle se comporte comme une machine classique à part entière, et vue depuis l'extérieur, elle prend la forme d'un simple programme. Elle peut communiquer avec son environnement par le biais du système de fichier de la machine hôte et part des interfaces réseau également virtuelles.
18.1.Architecture
Actuellement les UML sont toutes installées sur lna. Elles sont au nombre de 7:
dhcp1, d'adresses (intérieure) et (extérieure)
dhcp2, d'adresses (intérieure) et (extérieure)
dns1, d'adresses (intérieure) et (extérieure)
dns2, d'adresses (intérieure) et (extérieure)
ldap1, d'adresses (intérieure) et (extérieure)
ldap2, d'adresses (intérieure) et (extérieure)
ntp, d'adresses (intérieure) et (extérieure)
18.2.Paramètres
|
nom |
lna |
|---|---|
|
adresse IP |
192.168.3.2 |
18.3.Fichiers
|
fichier de configuration global |
/etc/init.d/uml-servers.sh (sur lna) |
|---|---|
|
fichiers de configuration de chaque uml |
/net/fichier/home/uml-images/confs/<nom de l'uml> (sur lna) |
|
disque virtuel de chaque uml |
/net/fichier/home/uml-images/images/<nom de l'uml> (sur lna) |
|
logs |
/var/log/syslog (sur lna) |
|---|
18.4.Administration
|
arrêter les UML |
/etc/init.d/uml-servers.sh stop |
|---|---|
|
démarrer les UML |
/etc/init.d/uml-servers.sh start |
|
redémarrer les UML |
/etc/init.d/uml-servers.sh restart |
|
lister les logs |
less /var/log/syslog | grep <nom de la machine UML> |
|
tuer le service |
killall -9 linux |
18.5.Webmin
Localisation:

L'interface d'administration du serveur uml se trouve dans la catégorie servers.
Écran principal:

liste des UMLs
statut des UMLs. Les valeurs possibles sont:
lancée: la machine est en fonctionnement
arrêtée: la machine est stoppée
suspendue: la machine est en pause
bloquée: la machine est dans un état instable
statistiques d'occupation mémoire:

mémoire disponible
mémoire attribuée aux caches, buffers, ...
mémoire occupée
occupation du processeur à des tâches utilisateur
occupation du processeur à des tâches système
occupation du processuer à ne rien faire
occupation du processuer à des tâches de faible priorité
lien menant à la page de maintenance des UML
lien permettant de démarrer un UML
lien permettant de tuer un UML
lien menant à une page d'informations à propos d'un UML
lien menant à une page des logs d'un UML
lien menant à la page de configuration de l'interface
Écran de configuration de l'interface

répertoire de base des UMLs
liste des UMLs à surveiller depuis l'interface
liste des fichiers dans lesquels aller chercher les logs des UMLs
dessiner ou non les barres de statistiques ?
intervalle de rafraichissement de la page principale
Page de maintenance des UML

mise sous tension de la machine virtuelle
envoyer la combinaison <ctrl><alt><del> à la machine virtuelle
appuyer sur le bouton « reset » de la machine virtuelle
débrancher la machine virtuelle
mettre en pause la machine virtuelle
sortir la machine virtuelle de sa pause
arrêter proprement la machine virtuelle
redémarrer proprement la machine virtuelle
vérifier le disque de la machine virtuelle
débloquer une machine virtuelle bloquée
sauvegarder le disque d'un machine virtuelle
restaurer le disque d'une machine virtuelle
Démarrage d'une machine virtuelle

Page d'informations d'une machine virtuelle
Logs d'une machine virtuelle

fig
41 - Informations sur une machine UML

19.Maintenance LTSP
Ce guide décrit la méthode utilisée pour le démarrage des clients légers, ainsi qu'un introduction à toutes les erreurs et les problèmes qui peuvent être rencontrés pendant ce démarrage, et les moyens de les corriger.
19.1.Démarrage de la machine - câblage
Quand le client léger est allumé, la première opération réalisée est de vérifier le matériel.
19.1.1.Problème 1
Le message suivant peut apparaître:
Intel(R) Boot Agent Version 4.0.14 PXE-E61: Media test failure, check câble PXE-MOF: Exiting Intel PXE ROM DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER
Il s'agit d'un problème matériel de connexion switch et/ou câble. Pour le résoudre:
Vérifier le branchement ou le fonctionnement de la connectique réseau.
Utiliser un switch en état de fonctionnement.
19.2.Obtention des paramètres réseau – DHCP
Si l'environnement réseau semble sain, la machine va demander une adresse IP, ainsi que l'emplacement réseau de l'image de son système d'exploitation.
19.2.1.Problème 1
Si la machine n'a pas pu contacter le service distribuant les adresses réseaux (DHCP) – ou être contactée – le message d'erreur suivant apparaît:
PXE-E51: No DHCP or proxyDHCP offers were received PXE-MOF: Exiting Intel PXE ROM DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER
C'est probablement un problème de DHCP:
Vérifier les câbles.
Vérifier que le serveur DHCP est en fonction.
Vérifier que le serveur DHCP est en fonction.
Vérifier la configuration de DHCP: dhcpd.conf est peut être incomplet (l'entrée avec l'adresse MAC du client n'est pas présente), voir défectueux. Pour cela, consulter les messages du service DHCP:
si les logs ne contiennent pas un message comme « DHCPDISCOVER from <adresse-mac-du-client> via 10.25.0.2 »: le paquet n'est pas arrivé au service DHCP. Vérifier le réseau entre la station et le service (incluement les switches).
si les logs contiennent le message d'erreur « DHCPDISCOVER from 00:08:83:a5:26:80 via 10.25.0.2: network 10.25.0/16: no free leases », c'est qu'il manque une entrée correspondant au client léger.
À titre informatif, voici comment une requête doit apparaître dans les logs:
DHCPDISCOVER from 00:04:00:4b:58:34 via 10.25.0.2 DHCPOFFER on 10.25.2.4 to 00:04:00:4b:58:34 via 10.25.0.2 DHCPREQUEST for 10.25.3.10 from 00:0c:f1:6f:9c:f6 via eth0 DHCPACK on 10.25.3.10 to 00:0c:f1:6f:9c:f6 via eth0
Si les symptômes persistent, c'est que la station n'est pas brassée sur le bon réseau. Vérifier qu'elle est branchée sur le switch du réseau auquel elle appartient.
19.2.2.Problème 2
Si le message d'erreur suivant apparaît:
PXE-E74: Bad or missing PXE menu and/or prompt information
c'est que l'entrée vendor-encapsuled-options du fichier dhcpd.conf est défectueuse. Elle doit contenir exactement (sans retour à la ligne):
option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:\ 00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:\ 00:00:ff;
Problème 3
Si le message suivant apparaît:
PXE-T01: File not found
l'erreur vient sans doute du fichier dhcpd.conf. Il doit contenir une entré comme celle-ci:
filename "/tftpboot/pxelinux.bin";
19.2.3.Problème 4
Si vous voyez le message suivant:
ERROR ! No root-path. Check your DHCP configuration, to make sure that the 'option root-path' is specified Kernel panic: Attempt to kill init!
l'erreur vient sans doute du fichier dhcpd.conf. Il doit contenir une entré comme celle-ci:
option root-path "192.168.3.1:/home/ltsp/i386";
19.3.Récupération de l'image de boot – TFTP
Quand le client léger a récupéré ses paramètres réseau, il va charger son système d'exploitation en interrogeant un serveur tftp.
19.3.1.Problème 1
Si le message d'erreur suivant apparaît:
PXE-E32 : TFTP open timeout
C'est probablement une erreur de configuration du service tftp:
vérifiez que le fichier /etc/inetd.conf contient la ligne suivante
tftp dgram udp wait root /usr/sbin/in.tftpd /tftpboot/revoboot
Vérifiez que le fichier /home/ltsp/pxelinux.0 existe et a une taille non nulle.
19.3.2.Problème 2
Le message suivant:
PXE-E3B: TFTP Error - File Not Found
provient probablement du fait que le fichier indiqué dans dhcpd.conf (directive filename) n'existe pas.
19.4.Montage du système de fichier – NFS
Quand le client a chargé son système d'exploitation, il monte le partage NFS sur lequel se trouve sa partition racine (partage NFS).
19.4.1.Problème 1
Le problème le plus courant est que le serveur NFS soit mal configuré:
Root-NFS: Server returned error -13 while mounting / tftpboot/lts/ltsroot VFS: Unable to mount root fs via NFS, trying floppy. kmod: failed to exec /sbin/modprobe -s -k block-major-2, errno = 2 VFS: Cannot open root device "nfs" or 02:00 Please append a correct "root=" boot option Kernel panic: VFS: Unable to mount root fs on 02:0
C'est le signe qu'il y a vraisemblablement un problème dans /etc/exports, qui est le fichier de configuration de NFS. Ce fichier doit impérativement contenir la ligne suivante:
home *(rw,no_root_squash)
19.5.Lancement de la session graphique – Xfree86
La dernière étape à franchir est le démarrage de l'interface graphique. Les problèmes les plus souvent rencontrés touchent aux périphériques.
19.5.1.Problème 1
Certaines machines possèdent une carte graphique non standard:
Error: Auto probe of the video card failed ! You need to specify the proper X server in lts.conf Press <enter> to continue
Il suffit d'ajouter une entrée spécifique à la machine dans le fichier de configuration (dans /home/ltsp/i386/etc/lts.conf). Par exemple:
[ltsp34] XSERVER = vesa
19.5.2.Problème 2
Certaines machine possèdent des souris PS/2:
(EE) xf86OpenSerial : Cannot open device /dev/input/mice Nos such device or adress. (EE) Mouse0: cannot open input device (EE) PreInit failed for input device "Mouse0" (WW) No core pointer registred No core pointer Fatal server error: failed to initalize core devices
Il suffit d'ajouter une entrée spécifique à la machine dans le fichier de configuration (dans /home/ltsp/i386/etc/lts.conf). Par exemple:
[ltsp34] X_MOUSE_DEVICE = "/dev/psaux"
20.Maintenance de serveurs
Ce document se veut être un document synthétique qui vous permettra de détecter et résoudre les problèmes les plus courants d'un serveur Linux.
20.1.espace disque disponible
Le premier réflexe en cas de problème est de vérifier l'espace disque disponible, à l'aide de la commande df:
lna:~# df -h Système de fichiers Tail. Util. Disp. Uti% Monté sur /dev/sda1 1.4G 1.3G 117M 92% / /dev/lvm1/hd1 6.6G 3.9G 2.7G 59% /tftpboot fichier:/home 121G 59G 62G 49% /amd/fichier/root/home
On peut définir deux niveaux d'alerte:
quand l'espace utilisé (colonne 5) est supérieur à 95%, certains problèmes peuvent toucher des utilisateurs normaux.
quand l'espace disponible (colonne 4) devient nul, la machine (ou certains de ses services) peuvent se bloquer.
En cas de remplissage d'une partition, la seule mesure à prendre est de faire de la place. Le répertoire /var/log contient des fichiers de journaux, données non vitales, ce sont donc les premières cible d'une épuration. Éliminer de préférence les plus vieux fichiers. Dans le même esprit, le répertoire /var/cache est un bon candidat, ainsi qu'en dernier recours le répertoire /usr/src.
L'utilitaire du est particulièrement efficace pour juger de la taille de certains fichiers:
lna:~# du /var/* -sch 924k /var/backups 21M /var/cache 52M /var/lib 4.0k /var/local 4.0k /var/lock 73M /var/log 548k /var/mail 4.0k /var/opt 316k /var/run 22M /var/spool 12k /var/state 18M /var/tmp 1.6M /var/www 188M total
Si ce problème d'espace disque revient souvent, il faut probablement envisager de passer à un espace de stockage plus important, ou faire le ménage dans les applicatifs installés.
20.2.Mémoire disponible
Une autre cause de problème d'instabilité est le manque de mémoire vive. free permet rapidement juger de la mémoire restante:
lna:~# free -mt
total used free shared buffers cached
Mem: 250 243 6 0 32 142
-/+ buffers/cache: 68 182
Swap: 258 54 204
Total: 509 298 210
Sous Linux la mémoire est toujours complètement utilisée, comme on le voit sur la première ligne (6 Mo libres). Ceci est dû au fait qu'un système de cache (ici 142 Mo) et de tampons (ici 32 Mo) est mis en place pour accélérer les accès aux autres périphériques. En cas de besoin, cette mémoire est immédiatement disponible, on peut donc considérer que cette mémoire est en fait libre. Le calcul visant à ajouter la mémoire pouvant être disponible à la mémoire vraiment disponible est fait à la ligne 2 (ici, on voit que 182 Mo sont disponibles).
Un autre mécanisme est utilisé sous Linux: le swap. Cet espace, stocké sur disque dur, est utilisé pour augmenter artificiellement la mémoire disponible, et permet à un serveur de continuer de fonctionner même quand la mémoire vive disponible devient nulle (ici ligne 4: 204 Mo sont disponibles).
Concrètement, on distingue deux niveaux d'alerte:
quand la mémoire vive disponible devient nulle mais que qu'il reste de la place dans le swap (ligne 2: free = 0 et ligne 4: free <> 0), le serveur commencera à ralentir. la commande top permet de voir quel processus prend le plus de mémoire (processus qu'il faudra éventuellement redémarrer)
quand le swap est également rempli (ligne 4: free = 0), le serveur se bloquera probablement dans les minutes qui suivent. le plus pertinent est probablement de tenter d'éliminer le plus gros processus.
À noter: quand une machine semble avoir de la mémoire vive disponible (ligne 2: free <> 0) mais plus de swap (ligne 3: free = 0), c'est probablement que le serveur a eu à un moment un problème de mémoire disponible.
Si ce problème de mémoire revient souvent, il faut probablement envisager d'augmenter la mémoire de la machine concernée.
20.3.Charge et occupation processeur
Concrètement, la donnée représentative de la bonne santé d'un serveur est sa charge, affichable à l'aide de l'outil uptime:
lna:~# uptime 12:06:20 up 11 days, 19:58, 8 users, load average: 0.00, 0.01, 0.00
Les trois derniers nombres représentent la charge moyenne sur la dernière minute, les cinq dernières et les dix dernières.
Un serveur efficace doit avoir une charge moyenne inférieur à 1. Pendant un pic d'utilisation, cette charge moyenne peut monter à 2, voir 3. Un serveur dépassant 5 présente probablement un dysfonctionnement (mémoire, espace disque ?).
20.4.Fichiers verrous (locks)
Quand une application se plaint de ne pas pouvoir à cause d'un verrou posé sur un fichier – ce qui arrive généralement après un arrêt brutal de l'application – il suffit de supprimer le verrou, représenté par un autre fichier, pour démarrer correctement.
Applications coté utilisateur
En règle générale, les applications souhaitant marquer le fichier /mon/fichier comme verrouillé créent un fichier vide /mon/fichier.lock.
Ce n'est pas toujours le cas:
mozilla crée un fichier .lock quelque part dans le répertoire ~/.mozilla . Pour le trouver, il faut utiliser la commande find (en étant loggué avec le compte de l'utilisateur) :
bash-2.05b$ find ~/.mozilla -name "*lock*"
.mozilla/default/46j2zfa1.slt/lock
OpenOffice: méthode identique à mozilla, ainsi que les fichiers OSL_PIPE* du répertoire /tmp.
En ce qui concerne les services, le premier endroit où rechercher ce fichier verrou est /var/lock
20.5.Dépannage d'un serveur au comportement douteux
Les opérations à réaliser sur un serveur qui semble avoir un problème de fonctionnement – ralentissement en général – sont, dans l'ordre:
vérifier l'espace disque disponible. S'il est très bas, il faut impérativement partir à la chasse aux gros fichiers. La cible principale de cette chasse est le répertoire /tmp (attention de ne rien supprimer de vital), suivi des répertoires /var/log et /var/cache pour un contrôle visuel immédiat. Si cela ne suffit pas, une commande find correctement placée peut permettre de régler le problème également.
vérifier la mémoire disponible. Un programme peut posséder des fuites, ce qui n'est pas fréquent mais peux arriver. S'il s'agit d'un programme rattaché à un service, un simple démarrage du service suffira. S'il s'agit d'un programme plus critique d'un point de vue utilisateur (OpenOffice par exemple), le tuer est à envisager également: un processus trop gourmand en mémoire risque de fragiliser la machine, autant limiter les dégâts.
lancer l'outil top. Il permet de connaître rapidement les processus occupant le processeur. Les mêmes précautions d'usage que précédemment s'appliquent également. S'il apparaît que la charge est élevée sans qu'un processus puisse être identifier, le problème viens probablement du système de fichiers: remontez les systèmes NFS.
vérifier les paramètres réseaux. En particulier l'état des interfaces réseaux (ifconfig), la communication avec les serveurs aux alentours (ping), le nom de machine (hostname et host).
consultez les logs. Beaucoup d'informations y sont inscrites. Si vous ne savez pas quel fichier consulter, alors consultez /var/log/syslog.
pensez au matériel. Un serveur Linux ne devient pas instable sans raison. Des « kernoops » sont signe d'une machine mal refroidie ou de mémoire défectueuse. Des gels brutaux sont signe de processeur ou carte mère défaillante. Des liaisons réseau problématiques sont signe d'un câble réseau vieillissant ...
21.Annexes
21.1.Correction TP1 – Ligne de commande
1. Allez dans votre HOME
cd ~
2. Affichez le nom du répertoire courant
pwd
3. Créez un répertoire TP
mkdir TP
4. Allez dans le répertoire créé
cd TP
5. Affichez le contenu du répertoire courant
ls
6. Décompressez l'archive du tp 1 dans le répertoire courant
tar zxf /chemin/de/l/archive
7. Allez dans le répertoire lsg_cl/long-noms
cd lsg_cl/long-noms
8. Afficher le nombre de fichiers du répertoire courant
ls | wc -l
9. Afficher le nombre de fichiers finissant par "89"
ls *89 | wc -l
10. Déplacez les fichiers finissant par "977" dans ~/TP/lsg_cl/long-noms.tmp
mkdir ../long-noms.tmp; mv *977 ../long-noms.tmp
11. Listez le contenu de ce dernier répertoire
ls ../long-noms.tmp
12. Supprimez ce dernier répertoire
rm -fr ../long-noms.tmp
13. Copiez le répertoire ~/TP/lsg_cl/long-noms vers ~/TP/lsg_cl/long-noms.tmp
cp -a ../long-noms ../long-noms.tmp
14. Allez dans ce répertoire
cd ../long-noms.tmp
15. Affichez la taille de ce répertoire
du
16. Supprimez tous les fichiers commençant par « je_suis_un_fichier »
find -name "je_suis_un_fichier*" -exec rm {} \;
17. Affichez la taille de ce répertoire
du
18. Allez dans le répertoire ~/TP/lsg_cl/invalide
cd ~/TP/lsg_cl/invalide
19. Supprimez le fichier « doit etre supprime »
rm "doit etre supprime"
20. Supprimez le fichier « -h »
find -name "-h" -exec rm {} \;
21. Allez dans le répertoire ~/TP
cd ..
22. Trouvez quel fichier du répertoire recherche contient le terme «gagne»
grep gagne recherche/*
23. Affichez la date
date
24. Concaténez la sortie de la commande date vers le fichier « date-courante »
date > date-courante
25. Ajoutez la sortie de la commande cal vers le fichier « date-courante »
cal >> date-courante
26. Affichez le contenu du fichier « date-courante »
cat date-courante
27. Affichez les premières et dernières lignes du fichier « date-courante »
head -1 date-courante; tail -1 date-courante
28. Afficher le contenu trié du fichier « atrier.txt »
sort -n atrier.txt
29. Affichez le contenu trié du fichier « atrier.txt », uniquement les lignes contenant le mot "LIGNE"
sort -n atrier.txt | grep LIGNE
30. Enregistez le contenu trié du fichier « atrier.txt », uniquement les lignes contenant le mot "LIGNE", dans le fichier « tri.txt »
sort -n atrier.txt | grep LIGNE > tri.txt
31. Affichez avec le pager le contenu du fichier caché du répertoire « invalides »
ls -a invalides; less invalides/.fichier-a-trouver
32. Allez dans le répertoire parent
cd ..
33. Compressez le répertoire lsg_cl dans l'archive « lsg_cl.tar.gz »
tar zc lsg_cl > lsg_cl.tar.gz
21.2.Correction TP2 – Outils Avancés
1. Lancez screen
screen
2. Lancez top
top
3. Triez l'affichage par occupation mémoire
M
4. Créez une nouvelle console screen
<ctrl><a><c>
5. Lancez mc
mc
6. Revenez sur la première console
<ctrl><a><p>
7. Trier par age
A
8. Créez une nouvelle console screen
<ctrl><a><c>
9. Afficher les tâches en cours avec le pageur
ps aux | less
10. Depuis top, tuer le pageur (signal 9)
<ctrl><a><n> + k <pid du pageur>
11. Exploration de l'arborescence à l'aide de mc.
21.3.Correction TP3 - Réseau
1. Logguez-vous sur 192.168.3.2
ssh <user>@192.168.3.2
2. Déterminez son nom
hostname
3. Déterminez à quel réseau appartient la machine
ifconfig
4. Listez les machines sur les réseaux visibles
ping <broadcast>
5. Déterminez les noms des machines sur tous les réseaux visibles
host <adresse-ip>
6. Affichez les routes de la machine
route
7. Listez les passerelles autours de la machine
route | grep UG
8. Trouvez par quelle machine aller sur internet
traceroute www.google.fr
9. Affichez quels services écoutent sur la machine
netstat -lp
10. Affichez les machines connectées en ssh sur lna
netstat -p | grep ssh
Index des figures
fig 1 - vue générale 36
fig 2 - édition d'un fichier 36
fig 3 - visualisation de fichiers 37
fig 4 - copie de fichier 37
fig 5 - Écran de login à Webmin 56
fig 6 - Page d'accueil de webmin 57
fig 7 - Accès aux interfaces webmin de différents serveurs 58
fig 8 - Interface webmin de dhcp1 depuis l'interface webmin principale 59
fig 9 - Gestion du service dhcp 62
fig 10 - détail de l'interface de gestion du dhcp 63
fig 11 - gestion des sous-réseaux dhcp 64
fig 12 - Ajout manuel d'un hôte dans le dhcp 65
fig 13 - icone d'accès à l'interface de gestion du DNS sous webmin 69
fig 14 - Interface principale de gestion du serveur DNS 70
fig 15 - Édition d'une zone inverse 71
fig 16 - Liste des enregistrements d'une zone inverse 72
fig 17 - Édition des enregistrements inverses 73
fig 18 - Édition d'une zone directe 74
fig 19 - Ajout d'un enregistrement en zone directe 75
fig 20 - Édition d'une adresse directe 76
fig 21 - Interface d'administration du service ntp sous webmin 80
fig 22 - Détail de l'interface gestion du NTP de webmin 81
fig 23 - Liste des serveurs NTP contactés 82
fig 24 - Vérification de la synchronisation 83
fig 25 - Module webmin pour la gestion du service LDAP 84
fig 26 - Accès aux fonctions principales de gestion 85
fig 27 - Interface de gestion des utilisateurs 86
fig 28 - Paramètres généraux d'un utilisateur 87
fig 29 - Groupes d'appartenance d'un utilisateur 88
fig 30 - Profil d'un utilisateur 89
fig 31 - Paramètres samba d'un utilisateur 90
fig 32 - Interface de gestion des groupes 91
fig 33 - Modification d'un groupe 92
fig 34 - Interface de gestion des types de compte 93
fig 35 - Interface d'administration de User Mode Linux 96
fig 36 - Console d'administration UML 97
fig 37 - Indicateur graphique d'état d'une machine UML 98
fig 38 - Configuration du module d'administration UML 99
fig 39 - Page de maintenance d'un UML 100
fig 40 - Démarrage d'une machine UML 101
fig 41 - Informations sur une machine UML 102
fig 42 - Log d'une machine UML 103
