Bon, ce mois-ci, nous aurions dû commencer à développer notre jeu mais comme je n'ai pas eu le temps je vais ressusciter un vieil article (non publié) que j'avais écrit lorsque j'avais récupéré mon VAX. Ce dernier ayant malheureusement fumé (d'ailleurs, si quelqu'un a des cartes pour microVAX II, je suis preneur), j'ai récemment acquis une station SUN. Le sujet de cet article est donc la création d'un mini-réseau éthernet entre mon 4000 et ma SUN. La fin sera un peu plus technique puisque nous aborderons l'exemple d'un réseau hétérogène contenant plusieurs sous-réseaux ...
Je ne vais pas refaire un historique ou un descriptif technique des différentes normes de l'Ethernet car cela a déjà été maintes et maintes fois fait. Simplement il faut se souvenir qu'il existe :
10 Base 5, le média utilisé est un gros câble coaxial. Pour s'y connecter, les machines disposent d'une prise AUI sous la forme d'une DB15, d'un câble de connexion pouvant faire plusieurs mètres ("drop cable") et d'un boîtier muni d'une prise vampire nommé "transceiver" et qui s'accroche au câble coaxial. La connexion est de type BUS, c'est-à-dire qu'à moins d'utiliser des appareils complémentaires, le réseau est constitué d'une ou plusieurs sections de ce câble, sans boucle et sans dérivation.
10 Base 2, le média utilisé est un câble coaxial fin. Cette technologie a été mise au point par Digital dans le but d'avoir quelque chose de plus abordable et flexible que le 10Base5. Il s'agit encore d'une architecture en BUS mais généralement le câble se connecte directement au dos de l'ordinateur par une prise BNC. On aura donc un câble coaxial qui naviguera de machine en machine ...
10 Base T. C'est le média le plus utilisé actuellement car le plus flexible.
En effet, il est basé sur une architecture en étoile, où les ordinateurs sont connectés via des paires torsadées à des concentrateurs. Il est donc possible de rajouter ou de supprimer une machine sans que cela entraîne une modification physique du réseau. Sur les machines, des prises RJ45 sont utilisées. La défaillance d'un câble ou d'un périphérique n'entraîne que la perte de l'ordinateur qu'ils servent et non plus de l'ensemble du réseau comme avec les technologies BUS.
Attention : lorsque vous allez acheter des câbles, faites bien attention à la catégorie et à la qualité de fabrication car un mauvais câble peut provoquer des pertes importantes de performances. Proscrire les câbles catégorie 2 qui sont réservés aux liaisons téléphoniques. Ne pas utiliser non plus du catégorie 3 avec du FastEthernet (100 Mb/s). Par contre, rien ne vous empêche d'utiliser de la catégorie 5 pour des liaisons téléphoniques mais bon ... c'est un peu de la confiture au cochon.
La SUN : Il s'agit d'une station UltraSparc 5 sous Solaris 7 et disposant en standard d'une prise Ethernet RJ45 capable de délivrer du 10 comme du 100 Mb/s.
Elle a aussi une autre RJ45 avec son contrôleur SCSI mais celle-ci ne sera pas utilisée dans l'exemple. Pas besoin de logiciel supplémentaire car, comme tout système UNIX, la gestion des réseaux TCP/IP est incluse dans le système.
Un Amiga 4000/040 sous WB 3.0 avec une carte ethernet Commodore A2065 (prises AUI et BNC).
L'AmigaOS ne gère pas les réseaux en natif, donc il m'a fallu choisir une couche TCP/IP. A l'époque ou j'ai connecté mon miga à mon VAX, MIAMI était spécialisé dans la connexion avec Internet par provider, donc je ne l'ai pas choisi. Je lui ai préféré AmiTCP, en version démo, du CD Fred Fish 10. C'est la dernière version démo disponible (allez faire un tour sur Aminet) mais vous pouvez acquérir des versions plus récentes, en particulier GENESIS qui contient des outils de configuration graphiques. Commodore avait aussi développé une couche nommée AS225 mais qui n'a jamais été commercialisée !
Bref, dans cet exemple, on utilisera la version démo d'AmiTCP et à nous les joies des fichiers de configuration textes ...
Même s'il est, temporairement je l'espère, en rade, je réserve un emplacement pour mon VAX. Il s'agit d'un microVAX II sous Ultrix 4.3 mais, lorsqu'il sera à nouveau fonctionnel, je lui mettrai NetBSD qui est plus moderne. Il dispose aussi d'une couche IP native (Unix oblige), et d'une prise AUI. Un transceiver me permet de le connecter à un réseau 10BaseT.
On élimine d'office le 10Base5 réservé aux gros réseaux.
Si les deux machines disposent toutes les deux de prises RJ45 (10BaseT), le plus simple est d'acheter un câble croisé : pour un investissement de moins de 100 Francs, vous aurez un réseau parfaitement fonctionnel ... mais limité à deux machines.
Si on utilise plus de deux machines, les choses se compliquent :
Le 10Base2 sera intéressant si vous pouvez récupérer des câbles coaxiaux et des terminateurs d'occasion : on en trouve assez facilement car beaucoup d'entreprises changent leur réseau vers une technologie 10BaseT beaucoup plus flexible.
Par contre, si vous devez acheter la connectique, il faudra comparer les solutions coax et RJ45 mais cette dernière sera, à mon avis, plus rentable. Les câbles sont moins chers, pas besoin de terminateurs, il faut juste acquérir un HUB. Allez voir chez le taïwanais du coin, on peut trouver des HUB 4 ports aux environs de 200 Francs.
Revenons maintenant à mon cas.
La connexion entre mon 4000 et mon VAX n'a posé aucun problème, ayant récupéré en même temps que ce dernier un segment coaxial, avec les terminateurs associés, connectable sur le Miga et un drop câble + transceiver vers du 10Base2 pour l'AUI du VAX.
Avec la SUN, le problème est tout autre : comment connecter l'AUI ou la BNC du Miga avec le RJ45 de la SUN ?
C'est donc la solution que j'ai choisie.
Comme tout logiciel bien foutu, la distribution d'AmiTCP utilise l'Installer de feu Commodore pour s'installer et se configurer.
On clique donc sur l'icône "Install_AmiTCP". Voici les différentes questions qui nous sont posées. Notez que j'ai utilisé l'option "expert" pour que l'on puisse voir toutes les options proposées.
/etc/passwd
cher aux systèmes Unix. Plusieurs utilisateurs peuvent donc cohabiter et auront chacun des droits différents. Je vous laisse le soin d'approfondir la question en lisant la documentation d'AmiTCP.
192.168.0.2
, non ?
chez.moi
".
Installer découvrira tout seul la présence de la carte Ethernet et donc que vous souhaitez utiliser ce média. Enfin, chez moi ça marche car l'A2065 existait avant AmiTCP, maintenant, savoir si il détecterait une AdrianeII ?
De toute façon, toutes les cartes récentes supportant le protocole SanaII, elles sont utilisables avec AmiTCP, mais il faudra les configurer manuellement. Leur documentation doit l'expliquer ...
192.168.0.0
à 192.168.0.255
; la SUN aura l'adresse 192.168.0.1
et le 4000 l'adresse 2
. Comme expliqué à la fin de l'article, N'UTILISEZ PAS les adresses 0 ou 255 qui sont réservées.chez.moi
", mais on pourrait en saisir plusieurs. Ainsi, si vous demandez au DNS l'adresse de "Zeus
", il cherchera un "Zeus.chez.moi
" puis dans les autres noms de réseaux que vous aurez saisi.
Voilà, après un reboot, AmiTCP est opérationnel.
Bon, ça c'était pour une installation automatique, mais étant donné que ma SUN n'est pas forcément allumée en même temps que l'Amiga, j'ai créé un script CSH pour lancer manuellement les connexions. Le voici :
|
login
", on définit l'utilisateur qui lance le service.
lo0
'. Cette interface permet de communiquer avec les services qui tournent sur notre machine.AMITCP:db/interfaces
.
D'autres options sont sauvegardées dans le répertoire AmiTcp, et principalement dans db. On ne va pas étudier un par un ces fichiers, je vous laisse le soin de lire les documentations, mais nous allons étudier des cas concrets.
AmiTCP:db/Resolv.conf
. Il contient deux directives :
NAMESERVER 192.168.0.1
qui est l'ADRESSE IP du DNS (ici, c'est Zeus)
DOMAIN chez.moi
le nom du domaine servi.
AmiTCP:db/hosts
on peut associer facilement un nom à une adresse.
Voici le mien :
|
Le format est le même que le fichier /etc/hosts
des stations UNIX.
En premier, on trouve l'adresse IP de la machine.
Suit son nom puis d'éventuels alias.
Maintenant, après avoir démarré AmiTCP (par le script startnet précédent), un ping devrait fonctionner ...
Certains services de base sont livrés avec AmiTCP : c'est le cas de Ftp.
Les autres peuvent être trouvés sur Aminet ... Leurs documentations indiquent les fichiers à modifier, mais généralement, il s'agit de rajouter un service dans AmiTcp:db/inetd.conf
.
C'est évident que ces fichiers de configuration sont un peu déroutants lorsqu'on est habitué à avoir des préférences graphiques comme avec les autres logiciels Amiga. Mais vous n'avez qu'à vous payer Génésis ou Miami !
D'autre part, ces fichiers sont directement inspirés de ceux des serveurs Unix et les connaître vous sera peut-être profitable dans votre vie professionnelle.
Même si les versions récentes des Unixes comportent maintenant de plus en plus d'outils de configuration graphique, on est parfois obligé quand même d'aller titiller ces fichiers.
Les informations précédentes sont suffisantes pour mettre en place un mini réseau. Cependant, si vous souhaitez connecter vos machines avec un réseau plus grand, il y a d'autres paramètres à connaître.
Les adresses IP, dans leur version actuelle, sont codées sur 4 octets, ce qui donne environ 4,2 Milliards d'adresses ... Evidemment, ces adresses ne sont pas attribuées de manière anarchique et des organismes tels que l'Inria pour l'Europe ou l'Internic pour l'ensemble du monde sont chargés de les distribuer.
D'abord, il faut savoir que les réseaux dont le premier octet et 127 sont réservés pour les loopback : il s'agit d'un réseau virtuel qu'utilise une machine pour communiquer avec elle-même. Inutile de préciser que si vous utilisez ce réseau ... ça ne marchera pas.
Notre réseau est un réseau privé : les machines de l'extérieur ne peuvent s'y connecter. Oui, mais ce n'est pas la raison pour prendre n'importe quelle adresse ! Si par la suite, vous souhaitez que vos machines puissent aller sur Internet, il vous sera impossible de vous connecter à tout serveur qui utilise le même réseau que vous.
Dans le RFC 1597, ont été définies des adresses à utiliser dans le cas d'un réseau privé. Ces adresses sont :
10.0.0.0 à 10.255.255.255 172.16.0.0 à 172.16.255.255 192.168.0.0 à 192.168.255.255
Dans un premier cas, nous avons un réseau de classe A (24 bits donc 16777214 machines maxi).
Dans le second cas, nous disposons de 16 réseaux consécutifs de classe B (20 bits soit 1048574 machines)
Dans le troisième cas, c'est 256 réseaux de classe C (8 bits soit 254 machines).
Dans notre cas, nous avons choisi de prendre une classe C, dont les adresses vont de 192.168.0.0 à 192.168.0.255.
adresse_A & Masque == adresse_B & Masque
c'est-à-dire si le ET bit à bit entre l'adresse de A et le masque est strictement égal au ET bit à bit entre l'adresse de B et le même masque de sous-réseau.
Prenons le cas de Miga (192.168.0.2) et Zeus (192.168.0.1) avec un masque de sous-réseau de classe C classique, à savoir 255.255.255.0. Peuvent-elles communiquer ensemble ?
192.168.0.2 & 255.255.255.0 = 192.168.0.0 192.168.0.1 & 255.255.255.0 = 192.168.0.0La réponse est OUI.
Prenons une autre machine dont l'adresse serait toto = 192.168.5.3
Pour Miga, ça ne change pas.
192.168.0.2 & 255.255.255.0 = 192.168.0.0alors que pour toto
192.168.5.3 & 255.255.255.0 = 192.168.5 .0Non, ça ne correspond pas, les machines ne peuvent se joindre.
Attention, c'est une erreur qui est fréquemment commise, même par les gens qui gèrent des réseaux à longueur de journée : si "toto" était défini comme passerelle pour "Miga", ce dernier ne pourrait communiquer avec l'extérieur car il ne peut joindre directement toto ; UNE PASSERELLE DOIT SE TROUVER FORCEMENT SUR LE MEME SOUS-RESEAU QUE LES MACHINES QU'ELLE SERT.
Mais 254 machines, ça fait quand même un peu beaucoup pour un seul et même réseau : il est souvent utile de pouvoir l'éclater en plusieurs sous-réseaux (par exemple si la moitié des machines se trouve sur un site distant). Simple, il suffit de mettre un masque plus restritif, par exemple :
255.255.255.192
Le nombre de machines sur notre réseau est indiqué par le nombre de bits à zéro dans le masque : les bits 5 4 3 2 1 et 0 donc 2^6 = 62 machines.
Notez que par convention c'est toujours les bits de poids le plus faible qui sont mis à zéro : je vous déconseille tout non-conformisme à ce niveau car beaucoup de couches IP sont très restrictives à cet égard (bogues !)
Mais, il est nul, devez-vous vous dire, 2 puissance 6 fait 64 et non 62. Et bien oui ... mais non car les adresses de machines (donc hors bits de réseau) qui sont tout à 0 ou tout à 1 sont réservées : dans le premier cas, cela indique que l'on communique avec le réseau alors que dans le second, c'est un broadcast c'est-à-dire que l'on parle à toutes les machines.
adresse masque 192.168.0.24 255.255.255.0 192.168.0.24 255.255.255.224 192.168.0.24 255.255.255.240 192.168.0.24 255.255.255.248 192.168.0.24 255.255.255.252Pour faciliter les choses passons au niveau binaire
bits 7 6 5 4 3 2 1 0 machine 0 0 0 1 1 0 0 0 = 24 réseau 0 0 0 0 0 0 0 0 = 0 1 1 1 0 0 0 0 0 = 224 = 128 + 64 + 32 1 1 1 1 0 0 0 0 = 240 = 128 + 64 + 32 + 16 1 1 1 1 1 0 0 0 = 248 = 128 + 64 + 32 + 16 + 8 1 1 1 1 1 1 1 0 = 254 = 128 + 64 + 32 + 16 + 8 + 4 + 2réponse ...
Voilà, j'espère que ça vous donnera des idées de communication ...
Dernier exercice : trouvez les erreurs de ce réseau ...