Reseau-cxion locale-lan

De Lea Linux
Aller à la navigation Aller à la recherche

Configuration carte réseaux pour un réseau local

Configuration carte réseaux pour un réseau local
par Serge (quelques modifications par Fred et Jicé)
ou comment faire communiquer tous vos ordinateurs entre eux

Le protocole réseau de prédilection pour Unix et l'internet est le TCP/IP, mais pour de nombreux débutants et non informaticiens, configurer un réseau est plus qu'un casse tête. Alors on va voir comment configurer un tel réseau sous Linux (quelques PC reliés entre eux) , pour les connexions pour le net, voir les autres rubriques.

Le HARDWARE (carte réseau)

Pré-requis

Bon avant tout il faut configurer la partie hard du réseau. Dans le cas d'un réseau local, on a plusieurs machines, pour les connecter entre elles, il faut des cartes réseau et ce qu'on appelle un "média" ou "support". On a le choix entre plusieurs topologies que je ne vous explique que très rapidement :

  • Câblage en bus coaxial ou "BNC" : le moins cher à mettre en place, de bonnes performances de communication jusqu'à quelques machines (moins de 10) et pour des applications non critiques, c'est a dire des partages de fichiers, un petit intranet local. Il suffit pour cela d'une carte réseau par machine avec connecteur BNC, un câble coaxial entre deux machines de 50 Ohms, avec un T BNC pour chaque machine et deux bouchons réseaux de 50 Ohms à chaque extrémité du support (c'est à dire pour la première et la dernière machine de la chaîne). Ça ne revient pas cher (cartes et câbles compris on arrive en gros à 200 fr par machine maximum). Il faut quand même respecter les normes, c'est à dire pas plus de 500m de câble, pas moins de 50 cm entre deux stations, bien mettre les bouchons à chaque extrémité et c'est bon.
  • Câblage en étoile RJ45 : C'est un peu plus cher, mais ce type de câblage a de bien meilleures performances : on peut espérer aller jusqu'à 100 Mb/s avec du matériel fait pour (contre 10 Mb/s pour le BNC), on peut enlever une machine sans "rompre" le support (c'est à dire que les stations qui ne sont pas en relation avec la station qui vient d'être déconnectée continueront de fonctionner comme si de rien n'était). Bref c'est beaucoup mieux et c'est le standard pour des réseaux avec des applications gourmandes, un grand nombre de machines etc... Le câblage est différent, on utilise alors des paires torsadées en cuivre, chaque câble doit faire 100m maximum, on passe par un élément actif (Hub ou Switch) pour connecter les machines, les prises sont du type RJ45 (un peu comme les prises téléphoniques américaines). En fait chaque carte réseau est reliée par un câble à un élément actif, d'ou le nom de câblage en étoile (partant de l'élément actif). On distingue deux types d'élément actif :
  • les HUBS qui en fait "émulent" une connexion en bus en envoyant sur chaque câble toutes les informations du réseau qu'ils reçoivent. Ceux-ci laissent à la machine destinataire des requêtes réseau le soin de les prendre en compte ou de les ignorer si elle n'est pas destinataire,
  • les SWITCH qui sont beaucoup plus intelligents que les HUBS : ils envoient les informations du réseau UNIQUEMENT vers la machine destinataire, donc on gagne en performance (et en sécurité, car il devient plus difficile de "sniffer" le réseau), c'est pour cela que le câblage en RJ45 est plus performant que le BNC.

Entre le 10 Mb ou le 100 Mb il suffit d'avoir le matériel qu'il faut, c'est a dire carte réseau, HUB ou SWITCH à 100 Mb. Seul les SWITCH permettent effectivement un "vrai" réseau en étoile. Certains HUBs ou SWITCH permettent de mélanger les deux types de vitesse, alors qu'en général, une carte 10 Mb/s oblige toutes les machines à communiquer en 10 Mb/s.Remarque : On trouve maintenant sur le marché des KITS carte réseau + HUB + câblage pour pas cher du tout (3 cartes, 1 HUB les câbles pour 400 fr), si vous devez faire un achat, prenez plutôt ça, attention quand même à ce que les cartes soient supportées par Linux (cf. : Hardware HOWTO).

Pour les cartes réseau, je vous conseille les cartes réseau "100% COMPATIBLE NE2000 PCI" ou "ISA NE2000" si vous ne pouvez pas prendre de PCI. Dans le cas de carte ISA je vous conseille les PnP (facile à configurer) alors que les non PnP passent souvent par un programme de configuration sous DOS, si votre machine est 100% linux sans partition DOS vous allez être embêté !
Remarque : si vous utilisez xxxBSD en plus de Linux, sachez que le driver de BSD pour les cartes NE2000 est pourri : si vous avez besoin de mettre plusieurs interfaces dans la même machine, n'utilisez pas de carte compatible NE2000, sinon chaque paquet va mettre dans les 1 seconde a passer !!! (si vous ne me croyez pas, demandez à BooK ce qu'il en pense...)

Pour les cartes plus exotiques, regardez le Hardware-HOWTO et/ou demandez dans des listes de diffusion ou dans les news si quelqu'un a déjà réussi à faire marcher cette carte sous Linux.

Paramétrage de la carte.

Bon, on va étudier les différents cas:

  • Carte PCI : normalement vous n'avez rien à faire, juste pour test un "modprobe module" ou module est le nom du module pour votre carte (modprobe ne2k-pci pour les NE2000 PCI) et ça devrait passer sans le moindre problème ! (si ça ne passe pas, vérifiez que vous avez le support PCI dans votre kernel, voir [../kernel/kernel.php3 rubrique compilation kernel], et que le module de votre carte est bien compilé, voir rubrique module et kernel).
  • Carte ISA PnP : après avoir mis la prise en charge du PnP dans votre machine (rubrique PnP) il suffit de mettre dans /etc/isapnp.conf les ressources de votre carte réseau (attention à ne pas écraser les ressources d'une autre carte) en faisant un pnpdump >/etc/isapnp.conf. Décommentez alors dans ce fichier les ressources (voir la rubrique PnP !). Le reste de la configuration est identique à celle des cartes PCI : faites un test en chargeant le module ad-hoc (c'est à dire : modprobe ne) .
  • Carte ISA non PnP : aïe ! (Serge exagère... ;) le plus dur! Soit vous avez de la chance et il suffit de configurer votre carte via des cavaliers (jumpers) et puis de tester en chargeant le module en indiquant les ressources en option du module ([../kernel/modules.php3 rubrique module]). Soit vous avez pas de chance, il faut passer sous DOS (par exemple avec une disquette de boot FreeDOS), utiliser le programme de configuration fourni avec la carte, affecter les ressources de la carte (une seule fois heureusement - quand vous avez fait attention à ne pas entrer en conflit avec d'autres cartes...) et lors du chargement du module passez, là aussi, les options (genre : append="macarte=iobase,irq,etc...".

Ça ne marche pas ! Bon pas de panique ! Vérifiez que les ressources de votre carte n'écrase pas celle d'une autre (typique si lors du chargement du module vous obtenez "device or ressource busy" , on vérifie ça dans /proc/ioports, /proc/interrupts. Vérifiez que l'adresse mémoire (ioport) et les interruptions (irq) ne sont pas déjà occupées par une autre carte. Vérifiez aussi à l'aide de la notice de la carte que vous n'essayez pas d'attribuer une ressource que cette carte ne peut pas prendre (normalement la plage d'irq et de mémoire valide est indiquée dans la notice).  Vérifiez, suivant votre cas, que le PnP est bien validé dans le kernel, la prise en charge PCI, et que quelqu'un a déjà réussi à faire marcher cette &*#! de carte réseau.

Prise en compte de la carte par le kernel.

Bon le module se charge, ok, il reste juste à rajouter dans /etc/conf.modules les options pour le chargement automatique du module quand le kernel en a besoin, ainsi qu'un alias (lien) pour le kernel qui indique à celui-ci que ce module gère une carte réseau par :

alias ethX     nom_module

    Avec: X'=0 pour la première carte réseau, 1 pour la seconde etc. (si vous n'avez qu'une seule carte réseau - sur cette machine - alors X=0, soit eth', est votre seule possibilité)
    nom_module : le nom du module (driver) de la carte (ne2k-pci par exemple)

Pour savoir si des options sont nécessaires (cas des cartes NE 2000 ISA) voir la rubrique modules.

Configuration réseau de la carte

Bon la carte est installée, le module se charge sans erreur maintenant il va falloir lui affecter une adresse IP, etc... Pour ceux qui savent ce qu'est une adresse IP, un masque de sous réseau, une passerelle par défaut, etc. hop passez au [#configstatique paragraphe suivant], pour les autres : lisez la suite (autrement votre réseau ne marchera pas c'est sûr ! (La lecture d'un bon livre sur TCP/IP est certainement utile si vous comptez installer un réseau de plusieurs milliers de machines ;)

Le protocole TCP/IP

Bon je ne vais pas détailler à fond le protocole TCP/IP mais juste les bases nécessaires pour comprendre comment on configure un réseau TCP/IP.

       Adresse, classe d'adresse et masque réseau

Bon vous devez sûrement vous demander comment deux machines entre elles arrivent à communiquer. Et bien, tout simplement avec une adresse. C'est comme pour le courrier-escargot (merci la francophonie), quand quelqu'un veut vous envoyer un courrier il envoie une lettre et le facteur vous trouve grâce à l'adresse que vous avez pris soin d'écrire sur celle-ci. Bon et bien pour comprendre ce qui suit vous gardez ça en tête, en remplaçant trame réseau par courrier, et carte réseau par boîte à lettres. Si notre analogie n'est pas trop farfelue (elle ne l'est pas ;) 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 cela s'exprime-t-il ? Par une adresse qui comporte une partie "réseau" et une partie "hôte" (la partie spécifique à la carte) tout cela sur 4 octets (si vous savez pas ce qu'est un octet, ce n'est pas grave, dites vous que c'est un nombre compris entre 0 et 255). On représente alors l'adresse complète comme ceci :

       W.X.Y.Z (où chaque lettre peut prendre une valeur entre 0 et 255 donc)

Bon d'accord, j'ai une adresse mais comment je reconnais le réseau et l'hôte? Et bien, on a coupé en classe de réseau toutes les adresses possibles suivant les valeurs de W. Je vous donne ce découpage, puis je l'explique:

Classe A: adresse comprise entre 1.0.0.0 à 126.255.255.255
Classe B: adresse comprise entre 128.0.0.0 à 191.255.255.255
Classe C: adresse comprise entre 192.0.0.0 à 223.255.255.255

Il existe la classe D aussi mais qui n'est pas utilisable, elle sert en fait au protocole lui-même dans son fonctionnement pour "atteindre" plusieurs machines à la fois (on appelle ça le multicast), on ne va pas détailler ça ici :-). Si vous avez bien suivi, vous avez pu constater que les adresses 0.x.x.x (utilisées pour l'adresse de route par défaut, c'est à dire le chemin à prendre pour aller sur un autre réseau), et 127.x.x.x (adresse interne de chaque machine pour les applications) ne sont pas utilisables non plus ...bref même si vous ne comprenez pas ce que je dis, rappelez vous simplement qu'elles sont tout simplement INUTILISABLES. Utilisez les adresses dans les plages ci-dessus (i.e.: correspondant aux classes A, B et C).

Chaque classe d'adresse a aussi son masque de sous réseau :
Classe A: 255.0.0.0
Classe B: 255.255.0.0
Classe C: 255.255.255.0

Bon maintenant j'explique. Quand vous voulez faire un réseau local IP, vous choisissez d'abord une classe. Bon laquelle choisir ? Ça va dépendre du nombres de machines que vous comptez connecter à votre réseau.

Pour comprendre, on ne va s'occuper que des réseaux de classe C (i.e.: ceux ne pouvant contenir que peu de machines), mais tout ce qui va suivre s'applique très simplement aux autres classes. Le masque réseau de la classe C est : 255.255.255.0. Cela veut dire que la partie W.X.Y de l'adresse W.X.Y.Z sert à adresser (contacter) le réseau (i.e. toutes les machines du sous-réseau auront le même W.X.Y) et le Z sert à adresser les machines. La partie du masque contenant les nous donne la partie de l'adresse qui correspond à la machine. Donc cela nous donne :

Si le masque est 255.225.255.0 et que l'adresse d'une carte réseau est W.X.Y.Z alors W.X.Y.0 est l'adresse du réseau. Ce réseau peut être constitué de toutes les cartes W.X.Y.Z ou Z varie entre et 254 (pas 255 car c'est là encore une adresse spéciale).

Quand on veut désigner l'adresse du réseau , on remplace par des 0 les identifiants machines.

Pour la classe C, chaque réseau a donc 254 (de 1 à 254 pour Z) machines possibles. De même pour la classe B on a 65 000 (et quelques) machines possibles. Pour la classe A on dispose de plus de 16 millions de machines possibles.

Pour configurer un réseau local, il vous faut de choisir l'adresse réseau que vous voulez. Bon on prend un exemple, je choisis 192.1.3.0 comme adresse de réseau donc classe C. Je peux alors numéroter mes machines de 192.1.3.1 à 192.1.3.254.

Bon vous allez me dire : On peux choisir n'importe quelle adresse ? Je ne vais jamais avoir besoin de classe A : je n'ai pas 16 millions de machines ? Etc... En fait ces classes ont été inventées pour l'internet, on a attribué alors les classes A aux très grandes organisations comme l'armée américaine (ça été fait pendant la guerre froide hein) pour leur permettre de relier toutes leurs machines. La B était pour les grand organismes (université, industrie, etc...) et les classes C pour les petits groupes. Comme vous vous en doutez, ces adresses sont attribuées par un organisme international qui régit tout ça pour que deux adresses ne soit pas dupliquées sur internet.
Donc en résumé si vous restez en local, sans aucune sortie vers l'extérieur (même pas un modem vers le net), vous utilisez l'adresse que vous voulez en respectant son masque et la numérotation réseau/machine.

Comme on a vu que les adresses sont attribuées sur le net, que ce passe-t-il si vous utilisez une adresse déjà utilisée sur le net ? Et bien, dans un premier temps, toutes les machines de votre réseau qui vont vouloir aller sur les sites internet qui possèdent la même adresse de réseau IP que vous ne pourront pas y accéder, car pour elles c'est l'adresse de chez vous donc elles ne vont pas chercher l'adresse sur le Net. Dans un second temps, vous allez être en relation avec d'autres machines qui vont forcément confondre votre réseau avec celui qui est enregistré sur internet. Mais alors, quelle adresse je choisis afin de ne pas entrer en conflit avec d'autres machines sur Internet ? Et bien l'organisme international a réservé des adresses qui ne seront JAMAIS utilisées (tous les routeurs du monde les ignorent !) sur le net pour que vous puissiez les utiliser en local ! Elle est pas belle la vie ! Ces adresses sont :

classe A: 10.0.0.0
classe B: 172.16.0.0 à 172.31.0.0
classe C: 192.168.0.0 à 192.168.255.0

Comme aucun site du net n'a cette adresse, si vous l'utilisez chez vous, vous ne risquez pas de ne pas pouvoir atteindre un site parce qu'il possède cette adresse vu qu'il n'en existe pas ! Donc pas de conflit entre votre réseau et le réseau des réseaux.

Donc, si vous avez un modem ou modem câble ou ADSL (voir [/reseau/adsl.php3 rubrique ADSL]) et si vous comptez surfer sur la toile un jour : UTILISEZ une des adresses réseau ci-dessus !!

Vous voulez que l'une de vos machines soit sur le net avec un beau site etc... : il vous faut alors acheter une adresse IP à votre fournisseur d'accès, soit pour un réseau complet et là vous n'avez pas le choix : on vous impose l'adresse, soit juste pour une machine, là votre machine connectée au NET a l'adresse que votre fournisseur vous impose et votre réseau local une des adresses réservées vue plus haut. En plus il va falloir faire du "masquerading" pour pouvoir utiliser l'accès au NET depuis toute les machines, voir pour cela la rubrique "masquerade" ou le HOWTO : vu d'internet, toutes les machines de votre réseau local ont l'adresse de la seule machine connectée au net (en fait, vu d'internet on ne voit que cette machine) :

_ ---- _ +---> PC2 ( ) | ( INTERNET )<-----> PC1 <---+---> PC3 (_ _) | ---- +---> PC4

En fait, vous pouvez aussi utilisez le système précédant pour créer des sous-réseaux à l'intérieur d'un sous-réseau de classe A, B ou C. Bon je ne vais pas expliquer ça ici non plus, reportez vous au site www.linuxenrezo.org pour plus de détail, de toute façon si vous devez faire de telles choses c'est que vous savez ce que vous faites.

Bon maintenant on va apprendre d'autres termes utile à une configuration réseau TCP/IP :

  • Passerelle par défaut ou GATEWAY: c'est l'adresse de la machine qui est reliée aux autres réseaux (par exemple la machine qui possède le modem pour aller sur le net) (dans le dessin ci-dessus, PC1 est la passerelle de votre réseau local)
  • Route par défaut (default): c'est l'adresse 0.0.0.0
  • Localhost: adresse IP 127.0.0.1 (cela sert aux applications qui veulent accéder à la couche TCP/IP de la machine où elle tourne sans passer par le réseau, si vous ne comprenez pas c'est pas grave)

Avec ça, ça devrait aller :)

De la théorie à la pratique: Configuration statique (sans serveur DHCP).

Dans cette partie je traite de la configuration d'une carte réseau en statique, c'est à dire à la main. Il existe un autre moyen: par client DHCP, c'est à dire qu'un serveur va s'occuper d'attribuer adresse, masque et gateway (passerelle) automatiquement à votre station, c'est ce que fait votre provider à chaque connexion pour la configuration IP de votre modem ou de votre carte pour des connexions modem câble ou ADSL. Pour l'instant voyons la manière "à la main". Dans cette partie on ne s'occupe que du cas où l'on n'a qu'une seule carte dans la station.

La carte est configurée au niveau HARD (module qui se charge bien), on a choisi/obtenu une adresse IP de réseau, on a décidé comment on adresse chaque machine : on peut réellement attribuer les adresses aux machines. Des utilitaires comme "netcfg", "netconfig" ou "linuxconf" permettent de configurer très facilement une carte réseau (voir www.linuxenrezo.org) mais bon je trouve plus ludique/instructif de vous l'apprendre à la main, comme ça on sait ce que l'on fait, de plus des distribution comme la Slackware ne possèdent pas ces outils par défaut.

Supposons, que l'on souhaite attribuer l'adresse X.X.X.X à la carte eth0 sur le réseau dont le masque de sous réseau du LAN est Y.Y.Y.Y (c'est pareil pour les autres cartes...). Rien de plus simple, on tape (en root) :

# ifconfig eth0 X.X.X.X netmask Y.Y.Y.Y

et votre réseau est configuré ! (Il faut bien le reconnaître : c'est pas la mort). Bon pour ne pas avoir à configurer ça à chaque reboot, ajoutez cette commande dans un script de démarrage comme par exemple /etc/rc.d/rc.local.
Cependant, la plupart des distributions ont des utilitaires pour configurer ça et lancer un script automatiquement, lancez par exemple netconfig ou netcfg ou linuxconf, vous avez bien au moins l'un de ces utilitaires (sinon : télécharger linuxconf sur rufus par ex.).
Pour la Slackware, placez ces commandes dans le /etc/rc.d/inet1. Éditez-le, cherchez les lignes suivantes et renseignez-les avec vos paramètres :

IPADDR="192.168.1.1"     (remplacez par l'adresse de votre machine)
NETMASK="255.255.255.0"  (mettez votre masque de réseau, ici classe C)
NETWORK="192.168.1.0"    (mettez votre adresse de réseau)
BRODCAST="192.168.1.255" (votre adresse de broadcast, c'est a dire votre adresse réseau avec les identifiants machines à 255)


Vérifiez que plus bas dans ce fichier il y a bien 'DHCP="no"'. Le reste du fichier est OK. Toujours pour la Slackware, pour charger votre module automatiquement, éditez le fichier /etc/rc.d/rc.modules, decommentez la ligne (c'est à dire enlever le # en début de ligne) qui correspond au module de votre carte réseau, par exemple pour une pci ne2000:

/sbin/modprobe ne2k-pci

Configuration par client DHCP

Bon maintenant on va voir comment configurer sa carte automatiquement par client DHCP, c'est à dire que c'est un serveur DHCP (soit sur votre réseau local d'entreprise, soit votre provider) qui va vous attribuer un adresse IP, un masque, une gateway (et même plus si affinités ;). Bon pour cela il faut quand même avoir configuré le module de la carte, le "driver" comme vu précédemment.

Maintenant il reste à dire au démarrage de Linux que cette carte va être configurée par un serveur DHCP, pour cela il faut un client DHCP, je traite ici de dhcpd (en fait il fait serveur et client à la fois). Il existe aussi pump et dhclient mais bon pour des goûts personnels que beaucoup partagent, je traite ici de dhcpd. Récupérez le donc (allez sur freshmeat par exemple ou rpmfind). Pour les kernels 2.2.X prenez une version au moins égale à la 1.3.x.

Il suffit alors de taper une ligne de commande du type :

dhcpd -d ethX

Puis vérifier que votre carte à bien une adresse ip par:

ifconfig

Vous devrez voir une ligne avec lo et une autre avec ethX. Vérifiez que ethX n'a pas pour adresse 0.0.0.0, cela voudrait dire que cela n'a pas marché.

Bon après on automatise ça en incluant cette commande dans un script de démarrage de la machine (/etc/rc.d/localou rc.local etc...). Pour les RedHat et Mandrake, linuxconf permet ça, pour la Slackware, éditer /etc/rc.d/rc.inet1d et mettez l'option yes pour DHCP

DHCP="yes"

Si vous avez des machines non linux sur votre réseau

Il suffit de configurer les autres machines avec les mêmes règles de réseaux TCP/IP. Dans Win9x, ça ce trouve dans le panneau de configuration, réseau, ajouter le protocole microsoft TCP/IP et réglez les valeurs comme il se doit.

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 02/04/2000.

Copyright

Copyright © 02/04/2000, Serge Tchesmeli

Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la Licence pour documents libres, Version 1.1 publiée par la La Guilde des Doctorants. Pour plus d'informations consulter la LDL sur le site de La Guilde des Doctorants.