Petite présentation : Comment configurer rapidement son propre réseau local.


Ce texte de Éric Huiban est le support d'un exposé qu'il a présenté lors de la réunion du CULTe qui a eu lieu le Samedi 2002-05-25.
  1. Introduction :
  2. Le but de cette conférence est de montrer, "ce qu'il faut faire" pour configurer un réseau local sous IP, "comment on le fait" et "pourquoi on le fait". Ethernet étant le support courant de ce type de réseau, il sera choisi par défaut pour la démonstration. Le requis de base pour suivre cette démonstration reste la configuration correcte du matériel au niveau du réseau (câblage, hub, switch, carte réseau, pilotes de périphérique, etc). Les notions de base sur la nature d'un réseau seront aussi supposées connues.

    La structure de la présentation est organisée de façon à traverser les différentes couches logiques gérant le réseau dans une machine connectée à un réseau IP.

  3. Rappel sur l'organisation en couche et l'encapsulation des données.
  4. Le réseau IP est basé sur la superposition d'une série de couches fonctionnelles, chacune gérant une ou plusieurs fonctions nécessaires à la communication. Le modèle de cette segmentation n'est pas aussi bien documenté que le modèle OSI (ISO en anglais) et on retrouve, en partant du matériel en allant vers l'utilisateur, l'empilement de couches suivant :


  5. Les protocoles de bas niveau :
  6. L'essentiel de l'effort "créatif" va se porter sur la configuration de la couche IP. Pour comprendre tout ce qui va suivre, il est donc important de faire un petit rappel des constituants de cette couche IP : les protocoles IP, ICMP, ARP, RARP.


  7. Adressage IP.

  8. Le décors et les protagonistes ayant été présentés, il reste donc à commencer la préparation de notre réseau. Connaissant le pays, maintenant il est plus que temps d'en établir la carte et de considérer ce qu'est l'adressage IP, ses principes, et d'appliquer tout cela à l'élaboration d'un plan d'adressage.

  9. Configuration de la couche IP d'une machines

  10. Il n'y a en fait qu'une seule commande à connaître sous UNIX pour configurer une interface réseau dans la couche IP : ifconfig. Cette commande est usuellement utilisée sous quatre formes :

    D'autres options existent bien sûr mais pour une configuration simple, les trois formes données ici effectuent tout le travail. Pour de plus amples renseignements se reporter à la commande man ifconfig. Les options supplémentaires seront ajoutées au fil de la présentation lorsque cela sera nécessaire.

    Sur une machine connectée à un réseau IP, il faut toujours créer l'interface de bouclage par la commande ifconfig avec lo comme interface, 255.0.0.0 comme masque réseau et 127.0.0.1 comme adresse réseau. Si besoin plusieurs interface de bouclage peuvent être crées pour des besoins précis.

    L'usage des options arp, -arp peut être intéressant pour sécuriser un réseau : l'option -arp permet d'interdire à la fois l'usage du protocole ARP par la couche IP mais aussi d'interdire les réponses à une requête ARP. La commande arp, valide par défaut à l'usage de la commande ifconfig, permet l'activation du protocole ARP. Une machine ne connaissant pas auparavant l'adresse physique d'une autre machine précise sur le réseau ne pourra communiquer avec celle-ci. La machine où le protocole ARP aura été inhibé ne pourra d'ailleurs pas non plus communiquer avec qui que se soit sur le réseau. Normalement le remplissage de la table de correspondance entre les adresses IP et les adresses physiques est fait automatiquement et son contenu a une durée de vie de quelque minutes mais est rafraîchi tant que le réseau est en activité. Il faut, quand le protocole ARP est inhibé, remplir la table de correspondance à la main ou via un fichier de configuration prédéfini ou seront présentées les adresses de toutes les machines avec lesquelles il va falloir communiquer. On utilise pour cela la commande ARP sous les formes suivantes :

    Comme toujours se reporter a man arp pour plus d'information. Il est a noter que si le resolver fonctionne, (ce qui permet de traduire des les adresses IP en nom de machines lisibles), les adresses IP peuvent être remplacées par le nom de la machine. Et dans le cas ou le resolver ne fonctionne pas, il faut ajouter l'option -n à la commande arp pour consulter la table et enlever cette option dans le cas contraire.

    Avec ces deux commandes ifconfig et arp, la machine dispose d'une interface réseau IP sur ethernet. Il reste maintenant à s'assurer que les données que l'on y envoie sont bien envoyées la où il le faut, et qu'elle peuvent arriver à leur destinataire...

  11. Le routage

  12. Le routage concerne l'art et la manière de configurer un ensemble de machines pour faire transiter des information sur un réseau ou un ensemble de réseau et que les données arrivent à leurs destinataires respectifs. Là aussi plusieurs façon de faire sont possibles, mais avec une unique commande UNIX route. Et cette commande sans paramètre permet d'afficher de suite le contenu des table de routage de la machine. Comme pour la commande arp, il faut ajouter le paramètre -n : le resolver ne fonctionne pas encore ; nous ne l'avons pas encore configuré ! Plusieurs cas de routage sont à notre disposition et les principaux sont les suivants :

    On a donc pu voir qu'un réseau simple ou un réseau plus complexe avec le routeur pouvait se faire relativement simplement sous Linux à l'aide des commandes de base d'UNIX. Arrivé à ce point si aucune erreur de configuration n'a été fait il est possible de considérer que le réseau fonctionne dans son aspect le plus rustique. Il reste maintenant à vérifier son fonctionnement et à se donner un peu de confort en configurant les couches supérieures du réseau.

    On peut noter qu'un routeur ne demande qu'à se voir ajouter une fonction de NAT/masquerading pour cacher un ou plusieurs réseaux complets derrière une seule machine (cas d'un accès internet unique pour plusieurs machines), qui peut aussi embarquer un firewall de façon à protéger tous ces réseaux d'une intrusion.

  13. Vérifier le fonctionnement de son petit réseau.

  14. Pour contrôler le fonctionnement basique d'un réseau, il existe classiquement trois commandes ping, traceroute et netstat.

    Les deux premières reposent sur le protocole ICMP et permettent de vérifier l'accessibilité d'une machine ou d'un routeur, ainsi que la bonne traversée des routeurs. Ces deux commandes acceptent l'adresse IP de la machine cible ou le nom de cette machine si le resolver fonctionne.

    La commande ping donne le temps de transmission d'un aller-retour : quelques millisecondes pour de l'ethernet, sous 40ms pour du RNIS et quelques minutes pour la radio...

    La commande traceroute, elle, va afficher l'adresse de toutes les machines traversées avec les temps correspondants.

    Ces deux commandes permettent de vérifier si les différentes machines sont accessibles et si les routeurs sont "traversables". En cas de problème, il faut toujours penser à vérifier qu'une machine est bien accessible via le routage, mais aussi vérifier que la route dans le sens inverse est valide et que la cible peut répondre.

    Il est a noter que "pinger" et "tracerouter" en continu des machines sur internet est parfois considéré comme un acte "aggressif"... attention ou vous mettez les pattes.

    La dernière commande netstat va vous permettre de consulter toutes les tables interne concernant le réseau IP et ce pour toutes les couches. Il n'y a juste qu'à conseiller la lecture du résultat de man netstat pour en apprécier toutes les options.

    Maintenant il est vraiment possible de considérer que le réseau fonctionne avec des machines Linux provenant de distributions raisonnables ou les fichiers de configuration de la couche UDP/TCP sont correctement installés car relativement immuables. La caisse à outil de base s'est un peu remplie et il reste donc à se donner un peut de confort dans la rusticité ambiante.

  15. Les fichiers de configuration de la couche UDP/TCP et au delà.

  16. Il s'agit en fait d'abord des fichiers /etc/services et /etc/protocols qui doivent être présents et qui pour /etc/protocols déclare les différents numéros de protocoles et qui pour /etc/services contient la déclaration de tous les services disponibles sur un réseau IP standard. Ces deux fichiers sont normalement identiques sur toutes les machines de toute la planète ! Sauf peut-être chez certains groupes très individualistes et pas très communiquatifs. Si ces fichiers vous manquent, vous pouvez soit les copier depuis une autre machine, soit les réécrire à partir des informations données par man protocols et man services et données par les RFC.

    Une autre fonction à configurer dans le système IP d'une machine est le resolver qui a pour rôle de convertir les noms de machines humainement lisibles et mémorisables par les adresses IP correspondantes utilisables par le réseau IP. Le premier fichier pouvant être utile est le fichier /etc/hostname qui contient comme son nom l'indique le nom de la machine. Les deux fichiers suivants /etc/hosts et /etc/networks contiennent les tables de correspondance entre les noms de machines et leurs adresse IP, ainsi que la correspondance des adresses IP des réseaux et de leurs noms. Pour le format exact du contenu de ces fichiers : toujours se reporter à la commande man associée... ou aux RFCs ou au premier bon bouquin qui passe par là. Les ébauches de ces fichiers contenus dans les distributions courantes permettent d'en comprendre souvent la structure grâce aux commentaires qui y sont placés.

    Deux fichiers permettent de régler le fonctionnement du resolver sans avoir à le recompiler à chaque changement : /etc/host.conf et /etc/nsswitch.conf. host.conf à une structure relativement bien fixée pour les besoins courants et indique de, d'abord, chercher dans le fichier /etc/hosts, puis de chercher via un serveur externe (un DNS) dont l'adresse sera indiquée dans le fichier /etc/resolv.conf avec la mention nameserver IPDNS ou IPDNS est l'adresse IP du serveur de nom externe. Sa documentation exacte est consultable par la commande man resolv.conf. Le fichier /etc/nsswitch.conf a le même rôle que /etc/host.conf et est apparu avec la dernière librairie C de Linux contenant le code du resolver en lui même. Sa documentation est consultable par la commande `info libc "Name Service Switch".

    Il y aune dernière couche affectée à la sécurité des accès réseau qu'il faut surveiller si rien ne marche au niveau applications : le noyau peut interdire ou laisser passer des communications via le réseau en fonction des informations contenues dans les fichiers /etc/hosts.allow et /etc/hosts.deny dont la documentation est disponible via la commande man hosts_acces. Ces deux fichiers permettent ou interdisent explicitement ou non l'accès à certains services par certaines machines, certains réseaux, etc. Si les fichiers sont vide, aucun blocage n'aura lieu.Mais dans ce cas là, toute requête réseau même étrangère (cas d'une machine ou d'un réseau connecté à internet) sera acceptée !

    Il reste ensuite à lancer les applications liées au réseau ou aux clients, les daemons réseau fournissant en continu les différents services voulus par l'utilisateur. Mais ceci est déjà un autre histoire.

    Conclusion : on se sent déjà mieux... la base du réseau fonctionne et devrait maintenant permettre de faire tourner les applications nécessaire à l'utilisateur.

  17. Petit exercice La configuration d'un réseau avec sous-réseau et routeur
    Ou "Petit conte de fée dans une ferme collective sibérienne"

    Il s'agit simplement d'aider la famille ours vivant en Sibérie dans une ferme collective, à installer le réseau familial ! La direction de la ferme leur fait prendre l'adresse réseau de classe C 192.168.55.0 et l'accès vers le reste de la ferme se fait par une machine à l'adresse 192.168.0.1. Il faut savoir que papa ours utilise un cluster de 6 machines pour calculer la probabilité qu'a une tartine de miel de finir sur la mauvaise face lors d'une chute, que maman ours écrit un livre sur la tartine de miel à travers les âges et donc a un serveur documentaire et une station de travail, et que les oursons jouent à "cake 24 : scratch the bee" en réseau. Et tous se doivent d'accéder au réseau de la ferme collective.

    Bien sur, il y a le traditionnel invité, qui après avoir essayé le cluster de papa ours (trop dur !), la station de travail de maman ours (trop colorée !), et les machines des oursons (trop stressantes !), décide qu'il va utiliser son portable... Je tiens à vous rassurer ce n'est pas Boucle d'or(tm-Perrault) partie négocier un contrat pour un dessin animé... mais un personnage nommé Le Prez'(tm-Le CULTe) qui ne se posant pas de question envoie tout sur son interface réseau sans aucune autre considération de routage et qui se déplace souvent en bande dont les membres sont souvent aussi équipés de portables.

    Il faut savoir que si tous sont sur le même brin ethernet, le cluster de papa ours est bloqué par la saturation du réseau, que maman ours hurle parce qu'elle doit attendre pour visualiser ses références iconographiques, et que pour les oursons il est impensable qu'une abeille vole de façon saccadée. L'usage de switches ethernet efficace n'est pas possible pour la famille ours car trop chers et d'approvisionnement trop difficile...

    A vous de trouver une solution et de faire le plan d'adressage et d'écrire les scripts de configuration pour chaque machine. Note : toute la famille en tant que fermiers progressistes convaincus utilise Linux : mais il n'y a aucune obligation de répondre en utilisant l'alphabet cyrillique.

That's all folks !