GAZETTE N°26: Configurer votre réseau personnel

Configurer votre réseau personnel

Par Tom Kunz

Adaptation française : Éric Jacoboni et Pierre Tane.


Précédent Suivant Table des Matières

3. Configurer votre réseau personnel (à la maison ou au bureau)

3.1 De quoi va-t-on parler ?

Cet article couvre des sujets que vous avez probablement déjà vus dans la Linux Gazette ou dans le Linux Journal. Partons de la situation suivante : vous avez deux ordinateurs ou plus, au bureau ou à la maison, et vous voulez que l'un d'eux serve de passerelle pour les autres. Si votre FAI vous fait payer à la minute (ou par tranches de 5/10/15 minutes), ce qui est souvent le cas des comptes professionnels, vous ne voulez certainement pas perdre beaucoup de temps connecté à votre FAI. Vous ne voulez certainement pas non plus risquer d'oublier que vous êtes connecté et continuer à payer pour rien ! Vous cherchez donc une moyen de connecter et de déconnecter facilement votre réseau local de l'Internet, et ceci avec un surcoût minimal. Nous étudierons ici la numérotation à la demande, l'IP forwarding, l'IP masquerading, la configuration de ppp et les bases du réseau. Cela peut paraître beaucoup (et croyez moi, ça peut l'être !) mais ce n'est pas si terrible car vous vous apercevrez que, dans la plupart des cas, vous n'aurez pas nécessairement besoin de la puissance et de la flexibilité offertes par tout ce qui est traité ci-dessous.

Notez que, même si je détaille comment configurer votre passerelle Internet sous Linux, cela ne nécessite pas pour autant que votre réseau entier soit sous Linux. Une machine Linux peut servir de passerelle alors que le reste du réseau est constitué d'autres plates-formes. Vous pouvez avoir n'importe quels matériels et logiciels sur votre réseau dès lors que vous disposez du protocole TCP/IP. Ainsi, vous pourrez mélanger des machines sous DOS, MacOS, Win95 ou des stations de travail sous Unix sur un réseau configuré de la manière qui suit.

Ce type de mise en place est extrêmement utile pour de nombreuses raisons. Si vous comptez beaucoup utiliser des navigateurs WWW, ce genre de réseau est parfait. Les navigateurs WWW ouvrent des connexions TCP éphémères pour des opérations qui rapatrient des petits paquets d'information et ne nécessitent généralement pas plus de quelques secondes. Pendant que quelqu'un lit une page Web, le navigateur ne génère que peu de trafic sur le réseau, la connexion est alors libre, ce qui permet à un autre utilisateur de partager la bande passante non utilisée à plein régime. Une autre raison d'installer un tel dispositif est d'empêcher que les utilisateurs n'occupent des lignes téléphoniques importantes pendant de longues périodes. Récemment, j'ai installé un dispositif de ce type pour une petite compagnie dont les employés étaient souvent sur l'Internet à partir de leurs PC, chacun d'eux utilisant la ligne téléphonique de son propre bureau. Parmi le faible nombre de lignes payantes à leur disposition, il y en avait généralement plus de la moitié qui était utilisée pour des connexions alors que la seconde moitié servait à recevoir des appels vocaux. Avec mon installation, une seule ligne est dévolue à l'accès à l'Internet, tout le monde pouvant accéder à l'Internet tout en conservant la possibilité d'employer les lignes téléphoniques de leurs bureaux pour la voix.

Afin de décrire ce que j'ai fait, je me base sur une Red Hat 4.2 comme référence avec comme option Tout installer. Pour ce que j'en ai vu, la version 5.0 n'est pas fondamentalement différente (en ce qui concerne notre sujet tout du moins). J'indiquerais par contre les différences de configuration entre une Red Hat et une Slackware 3.3.

3.2 Avant de commencer : faites fonctionner votre réseau !

Pour commencer, je vous recommande d'autres documents avant de vous lancer dans la configuration d'un LAN :

Pour configurer un réseau local à la maison ou au bureau avec une passerelle dépendant d'une connexion téléphonique, la première chose à avoir est un réseau local qui fonctionne correctement. Je vous recommande de lire les documents mentionnés ci-dessus lorsque vous installerez votre réseau. Le type exact de carte réseau que vous utilisez n'est pas important mais, si l'on vous le demande, je vous recommande les cartes ISA, 16 ou 8 bits, pour commencer avec le réseau. Elles nécessitent moins d'effort et sont très bien prises en charge sous Linux depuis des années. Mes cartes préférées sont les cartes SMC/WD 80*3 mais, normalement, toutes les cartes ISA (non PnP, donc configurables par cavaliers) devraient donner satisfaction. Référez-vous à la documentation mentionnée ci-dessus pour des détails approfondis sur l'art et la manière de faire tourner votre réseau.

3.3 Configurer votre réseau local

J'utiliserai le terme de passerelle Linux ou de passerelle pour désigner la machine de votre réseau qui tournera sous Linux, sera équipée d'un modem et s'occupera des connexions de votre réseau avec le monde extérieur.

Les réseaux des petits bureaux ou des domiciles ne possèdent généralement pas de noms de domaines enregistrés. Si vous configurez votre connexion pour un bureau qui possède un nom de domaine enregistré avec une adresse IP valable sur l'Internet (qui n'est donc pas une adresse réseau réservée pour l'usage privé), vous devrez alors configurer votre réseau en fonction de ce nom de domaine et du bloc d'adresses IP qui vous ont été fournies par l'InterNIC. Si vous ne voyez pas de quoi je parle, vous allez alors utiliser les adresses de réseau réservées pour l'usage privé. L'adresse réseau que j'utiliserai est 192.168.1.0, celle que j'ai prise pour mon propre usage. Puisqu'elle est réservée, je sais que mes paquets n'entreront pas en conflit avec ceux de quelqu'un d'autre sur l'Internet puisque tous les paquets à destination des adresses réseau réservées sont éliminés par les routeurs de votre FAI et les routeurs principaux de l'Internet.

Notez que les étapes que je décris ici sont souvent présents en parallèle dans la section Faîtes fonctionner votre réseau. Une fois que vous vous êtes décidé pour un bloc d'adresses IP réservé pour votre réseau, vous devez configurer votre matériel afin qu'il soit reconnu et donner à vos logiciels les paramètres adéquats. Je vous recommande de mettre le numéro de noeud .1 à l'adresse réseau de votre passerelle. Ce n'est pas une loi, mais c'est souvent le cas et il est facile de s'en souvenir. Par exemple, si vous utilisez les adresses 192.168.1.0 pour votre réseau, votre passerelle Linux sera le 192.168.1.1. Les autres machines de votre réseau auront alors les numéros de 192.168.1.2 à 192.168.1.254. Certains administrateurs de réseau aiment avoir leur serveur de noms pour le réseau local configuré en tant que .254 mais, si vous ne disposez que de peu de machines sur votre réseau, vous n'aurez certainement pas besoin d'un serveur de noms.

Choisir un nom de domaine n'a pas à être longuement réfléchi. Vous devez juste choisir quelque chose de facile à retenir, qui décrive votre réseau et n'entrera pas en conflit avec des noms de domaines enregistrés. Les extensions .com, .org, et .edu, ainsi que les abréviations de pays (.de, .uk, .au, fr ou autres) ne sont pas permises. N'utilisez tout simplement pas un nom qui utilise une vraie adresse et tout se passera bien. Par exemple, mon réseau local à la maison a pour nom de domaine kunz.home. Il n'existe pas de domaine qui ait pour extension .home, c'est donc un nom valide. De même, si vous voulez installer un réseau au bureau de ACME Inc., vous pouvez prendre acme.office comme nom de domaine.

Les paramètres du réseau sous Linux peuvent être décidés, soit lors de l'installation initiale, soit après celle-ci. Si vous voulez appeler votre passerelle linux-gw et votre domaine smith.home, vous n'entrerez pas en conflit avec des noms en dehors de votre réseau. Si vous utilisez le bloc d'adresses 192.168.1.0 pour votre réseau, les paramètres de celui-ci seront alors :

  • Nom : linux-gw
  • Nom de domaine : smith.home
  • Adresse IP : 192.168.1.1
  • Masque de réseau : 255.255.255.0
  • Broadcast : 192.168.1.255
  • Passerelle par défaut :
  • Premier serveur de nom : (adresse IP du premier serveur de noms de votre FAI)
  • Deuxième serveur de nom : (adresse IP du second serveur de noms de votre FAI)
  • Troisième serveur de nom : (adresse IP du troisième serveur de noms de votre FAI)

Note : toutes les sites ne disposeront pas de plus d'un ou deux serveurs de noms. Dans ce cas, omettez les serveurs de noms 2 ou 3.

Notez aussi qu'il est important de laisser le champ passerelle par défaut vide ! Les tables de routage seront modifiées par diald dont nous allons parler plus loin.

Sur linux-gw, vous devrez éditer le fichier /etc/hosts. Celui-ci devrait contenir les noms et adresses IP des autres machines du réseau. Ainsi, si vous avez 4 machines sur votre réseau en plus de la passerelle sous Linux, votre /etc/hosts devrait ressembler à ce qui suit :

127.0.0.1        localhost nomsysteme.nomdomainelocal
192.168.1.1      linux-gw.smith.home linux-gw
192.168.1.2      winchester.smith.home winchester
192.168.1.3      ruger.smith.home ruger
192.168.1.4      browning.smith.home browning
192.168.1.5      mossberg.smith.home mossberg

En faisant cela, la passerelle Linux connaît les noms de toutes les machines du réseau. Vous devriez d'ailleurs faire de même sur toutes les stations de travail Unix et toutes les machines Linux de votre réseau. Sur une distribution Slackware, vous devrez faire ces modifications à la main. Sur une Red Hat, vous pouvez utiliser le programme netcfg, sous X, pour modifier l'entrée Hôtes.

Sur chacune des autres machines du réseau, vous devez configurer les paramètres comme suit. Assurez-vous de ne pas allouer la même adresse IP à deux machines différentes ! Ce qui suit est un exemple pour la machine appelée winchester du réseau smith.home :

  • Nom : winchester
  • Nom de domaine : smith.home
  • Adresse IP : 192.168.1.2
  • Masque de réseau : 255.255.255.0
  • Broadcast : 192.168.1.255
  • Passerelle par défaut : 192.168.1.1
  • Premier serveur de noms : (adresse IP du premier serveur de noms de votre FAI)
  • Deuxième serveur de noms : (adresse IP du deuxième serveur de noms de votre FAI)
  • Troisième serveur de noms : (adresse IP du troisième serveur de noms de votre FAI)

Attention au seul changement important : la passerelle par défaut. Quand n'importe laquelle des machines sur le réseau envoie des paquets, nous voulons qu'ils soient routés par 192.16.1.1 qui est votre passerelle Linux. Étant considérée comme la passerelle pour le reste du réseau, Linux va décider de l'endroit où seront expédiés les paquets. Vous devriez configurer toutes les machines du réseau avec les paramètres ci-dessus, en ne changeant que le nom d'hôte et l'adresse IP pour chacune d'entre elles. N'importe quelle plate-forme TCP/IP devrait pouvoir être configurée comme ce qui est indiqué ci-dessus, à l'exception toutefois, dans certains cas, des serveurs de noms secondaires et tertiaires. Il est également très possible que votre FAI ne vous donne qu'un ou deux serveurs de noms, le champ Troisième serveur de noms restant vide.

Si vous configurez votre distribution Slackware après l'installation, la manière appropriée de faire est de lancer netconfig en tant que root. Les paramètres du réseau vous seront demandés un à un et devraient suivre l'ordre de linux-gw indiqué ci-dessus. Sur une Red Hat, c'est le programme netcfg sous X qu'il faudra lancer sous root. Vous aurez alors accès à un outil graphique pour faire la même chose. Lancer control-panel sous root sur une Red Hat vous permet d'effectuer un certain nombre de tâches d'administration avec des frontaux graphiques, y compris la gestion du réseau.

Quand vous aurez fait ça, vous devriez avoir un réseau qui fonctionne, où vous pourrez exécuter telnet de n'importe quelle machine du réseau sur la passerelle Linux.

3.4 Installer diald

Le paquetage que nous allons utiliser pour effectuer la numérotation automatique est diald. Cela nécessite que votre modem soit déjà reconnu sous Linux. Si ce n'est pas le cas, consulter la documentation et cette page Web incroyablement utile : Linux Resources.

Une fois que vous vous êtes assuré que votre modem fonctionne correctement et qu'il est bien reconnu, nous pouvons configurer diald pour nos besoins. Je me permet de faire remarquer que j'ai eu moins de problèmes avec les modems externes ou non PnP. De nos jours, il est difficile (si jamais c'est encore possible) de trouver des modems internes non PnP. Si vous possédez un modem PnP, installez le paquetage isapnptools pour pouvoir initialiser la configuration du PnP.

Récupérez et installez diald. S'il n'est pas déjà installé sur votre système, vous pouvez l'avoir en version source sur Sunsite. Si vous avez une Red Hat, vous pouvez le trouver en version binaire au format RPM sur votre CD Red Hat 4.2. Il se trouve dans /[point_de_montage]/RHSCont/i386/diald-0.16-3.i386.rpm. Le fichier diald-config-0.1-1.i386.rpm se trouve dans le même répertoire et je vous recommande de l'installer. Sur une Red Hat 5.0, je ne l'ai pas trouvé sur la distribution 2 CD de Red Hat, la dernière version peut donc être trouvée sur Sunsite. Il en est de même pour la Slackware. Consultez les instructions d'installation inclues dans le paquetage. Si ces liens ne sont pas bons, utilisez celui-ci : http://www.sunsite.unc.edu/pub/Linux/system/network/serial/ pour trouver la dernière version de diald.

3.5 Installer pppd

Une fois diald installé, nous devons installer pppd. Il est fourni comme paquetage sur les distributions Red Hat et Slackware et est sélectionné si vous choisissez l'option Tout installer. Sur le CD Red Hat 4.2, il se trouve dans /[point_de_montage]/RedHat/RPMS/ppp-2.2.0f-3.i386.rpm. Dans le cas de la Red Hat 5.0, c'est /[point_de_montage]/RedHat/RPMS/ppp-2.2.0f-5.i386.rpm sur le premier CD. Pour la Slackware, le paquetage ppp.tgz se trouve aux environs de la disquette N3 ou dans /[point_de_montage]/slakware/n3. Si vous ne l'avez pas encore installé sur votre passerelle sous Linux, vous devrez peut-être le télécharger en version source sur Sunsite à http://www.sunsite.unc.edu/pub/Linux/system/network/serial/ppp/ppp-2.2.0g.tar.gz. Suivez simplement les instructions de construction du paquetage et installez-le via le Makefile.

3.6 Configuration du noyau

Maintenant que diald et pppd sont installés, il vous faut avoir le support du IP Masquerading qui est nécessaire pour ce type de configuration réseau. Si vous utilisez le noyau de base de la Red Hat 5.0, c'est bon car tout est compilé sous forme de module. L'IP forwarding sera fourni à la demande par le chargeur du noyau dès lors que vous aurez modifié le fichier /etc/sysconfig/network (voir plus bas la configuration d'un pare-feu en IP Forwarding). Le noyau par défaut d'une Slackware ne proposera généralement pas l'IP Masquerading. Si vous avez tout installé comme je vous le recommandais au début, les sources du noyau seront d'ores et déjà sur votre passerelle Linux. Si ce n'est pas le cas, téléchargez-en le code source.

Décompressez-le dans votre répertoire /usr/src et faites ce qui suit(lire à ce propos le Kernel HOWTO :

  1. cd /usr/src/linux
  2. Sous X, tapez make xconfig. Sinon, tapez make config.
  3. Vous allez devoir choisir un certain nombre d'options dans la rubrique Networking options. Vous devriez choisir Y pour
    • Network firewalls
    • TCP/IP networking
    • IP: forwarding/gatewaying
    • IP: firewalling
    • IP: masquerading
    • IP: ICMP masquerading
  4. Notez qu'il n'est pas nécessaire de configurer les fonctionnalités de log ou de mesure des paquets IP. La plupart des utilisateurs n'ont pas besoin de cela. Ne les configurez que si vous savez ce que vous faites. Je n'en parlerai de toute manière pas dans cet article.
  5. Une fois que vous avez configuré tout votre matériel, cliquez sur Save and Exit si vous avez fait make xconfig. Si vous avez des problèmes sur la configuration de votre noyau, allez voir la page Linux Resources pour des informations sur la meilleure manière de configurer votre noyau afin de bien prendre en charge votre matériel.
  6. Si vous êtes certain que la configuration de votre noyau est correcte, tapez make dep ; make clean ; make zlilo. Si vous avez compilé certaines composantes sous forme de modules, tapez ensuite make modules ; make modules_install. Si make zlilo se termine avec un message Kernel too big (ce qui arrive généralement quand on compile trop de choses directement dans le noyau sans passer par les modules), essayez make bzlilo.
  7. Une fois l'étape précédente terminée, rebootez la machine de manière à ce que le nouveau noyau soit utilisé. Si votre noyau est bien configuré, votre système sera capable de gérer l'IP forwarding et l'IP masquerading !

3.7 Configurer un pare-feu avec /IP Forwarding/

L'étape suivante dans l'art et la manière de configurer une machine sous Linux pour qu'elle puisse servir de passerelle vers l'Internet, c'est la configuration de l'IP Forwarding. Cela peut être difficile à faire. Cela dit, pour faire une simple passerelle et un pare-feu pour l'Internet, tout ce que nous avons à faire est de configurer les règles de transmission pour que les paquets de tous types trouvés sur l'interface ethernet soient copiés sur l'interface ppp.

Vous devriez vous renseigner sur les problèmes de sécurité en jeu. Par exemple, procurez vous SATAN et consultez des experts en sécurité si besoin est. Si votre accès à votre FAI se fait par connexion téléphonique, il y a moins de chances d'attaque que dans le cas d'une connexion par le biais d'une université. Les étudiants ne sont pas forcément malveillants mais ils peuvent être considérés comme une population à risque dans la mesure où ils sont plus curieux que l'utilisateur de Windows 95 de base, client de votre FAI. Ne prenez pas ce que je dis pour parole d'évangile, renseignez-vous sur les problèmes de sécurité si ce sujet vous intéresse.

Premièrement, installez le paquetage ipfwadm. S'il a déjà été installé et que votre noyau a été compilé à l'étape précédente pour le support de la transmission de paquets, vous êtes prêts pour passer à la prochaine étape qui est la configuration du pare-feu. Sur une Red Hat 4.2, le paquetage se trouve dans /[point_de_montage]/RedHat/RPMS/ipfwadm-2.3.0-2.i386.rpm. Sur une Red Hat 5.0, il se trouve sur le premier CD dans /[point_de_montage]/RedHat/RPMS/ipfwadm-2.3.0-5.i386.rpm.. Vous devrez également modifier le fichier /etc/sysconfig/network, pour mettre la ligne FORWARD_IPV4 à FOWARD_IPV4=true. Pour une Slackware, il devrait être installé avec le paquetage TCP/IP de base (N6, tcpip.tgz) : si vous disposez du protocole réseau TCP/IP, vous devriez déjà l'avoir. Si vous devez le télécharger, le source peut être trouvé sur http://www.xos.nl/linux/ipfwadm/.

Une fois que vous avez installé ces paquetages, vous devrez savoir les utiliser. En fonction du niveau de sécurité dont vous avez besoin, vous pouvez faire quelques uns des changements que je présente ici. Tout d'abord, vous devez éliminer de la table toutes les entrées précédentes du pare-feu concernant la transmission, édicter des règles par défaut quant à l'acceptation ou au refus des paquets et ensuite dire comment les paquets doivent être redirigés entre les interfaces. Par exemple, le script qui suit éliminera toutes les règles de transmission, acceptera par défaut tous les paquets et transmettra les paquets entres toutes les interfaces disponibles.

#!/bin/sh
ipfwadm -F -f
ipfwadm -F -p accept
ipfwadm -F  -a m -S 192.168.1.0/24 -D 0.0.0.0/0

Nous pouvons voir les règles de transmission IP en tapant la commande ipfwadm -F -l -n qui va lister toutes les règles numériquement. En faisant cela, on devrait obtenir une sortie du style :

IP firewall forward rules, default policy: accept
type  prot source               destination          ports
acc/m all  192.168.1.0/24       0.0.0.0/0            n/a

Cela nous informe que tous les paquets partant de notre réseau vers autre part seront transmis entre toutes les interfaces. Avec l'option supplémentaire -e sur la commande précédente, la sortie obtenue est plus complète. C'est intéressant, mais vous devrez avoir un écran de 132 caractères de large quand vous l'utiliserez. Un exemple de sortie :

IP firewall forward rules, default policy: accept
 pkts bytes type  prot opt  tosa tosx ifname  ifaddress       source
            destination          ports
  113  9452 acc/m all  ---- 0xFF 0x00 any     any
192.168.1.0/24       anywhere             n/a

Ainsi, nous pouvons voir que, même si l'IP Forwarding peut être incroyablement compliquée et sélective, nous pouvons écrire un script simple qui fera tout le travail pour nous et établira un pare-feu de transmission.

Si vous lisez la page de manuel de ipfwadm, vous penserez peut-être qu'il est utile de spécifier l'option -W. Pour des situations simples et un réseau en environnement sûr, l'option -W n'est pas nécessaire parce que vous voulez certainement que toutes les interfaces puissent voir tous les paquets. Cependant, au cas où vous voudriez empêcher certaines interfaces de recevoir des paquets, vous pouvez utiliser cette option par sécurité.

3.8 Configuration de pppd

La première chose à faire est de configurer pppd car il est souvent plus facile à tester que diald. Pour cela, nous devons créer un script chat qui dialoguera avec notre FAI et établira la connexion. Vous pouvez lire d'abord la page du manuel consacrée à chat, mais voici mon script comme exemple :

REPORT CONNECT ABORT BUSY '' atdt5551212 CONNECT '' : tkunz : PaSsWoRd
action ppp

Tiré de la page du manuel :

 
Cette séquence n'attend rien et envoie la chaine ATDT5551212
pour réaliser l'appel téléphonique. La chaîne attendue est CONNECT. Si cette
chaîne est reçue, le reste du script est exécuté. De plus, le programme écrira
dans le fichier « expect » la chaîne « CONNECT » et tous les autres caractères
qui suivent, comme le débit de connexion.  

Le script indiquera d'abord dans le fichier de trace ce que renvoie le modem après « CONNECT ». Ce fichier pourra être analysé plus tard afin de diagnostiquer ce qui aurait pu mal se passer lors de cet appel. La chaîne ABORT indique qu'il faut terminer le script si le modem lui renvoie la chaîne « BUSY ». Après cela, le script appelera le numéro téléphonique 555-1212, attendra un deux-points (« : ») et répondra par tkunz. Puis, il attendra un autre deux-points et répondra par PaSsWoRd. Lorsque la chaîne action est reçue, il répond par ppp et le script de chat prend fin. chat repasse alors le contrôle au programme qui l'a appelé. Il y a aussi un autre script qui fonctionne bien si vous n'avez pas besoin de la vérification d'erreur « REPORT » et si vous pensez que vous ne recevrez jamais le signal « BUSY ».

atz OK atdt5551212 CONNECT name: tkunz word: PaSsWoRd action: ppp

Celui ci fera la même chose, sauf qu'il initialise le modem avec les valeurs par défaut en envoyant d'abord « atz», et qu'au lieu d'attendre un deux-points, il attend de recevoir « name: » et « word: » avant d'envoyer respectivement « tkunz » et « PaSsWoRd » au terminal distant.

Des scripts simples comme ceux ci-dessus peuvent être utilisés avec chat pour automatiser la procédure de login avec votre FAI.

pppd utilise chat pour établir une connexion et, lorsque ce dernier se termine, pppd continue à dialoguer avec le site distant, déterminant ses adresses IP locale et distante, puis pppd prend en compte les autres options qui lui sont passées pour assurer une connexion fiable.

Pour vous donner une idée de ce à quoi peut ressembler un ensemble de scripts qui lance une connexion PPP, voici un exemple de ce que j'utilise pour établir manuellement une connexion PPP à mon FAI.

Contenu d'un fichier nommé startppp dans mon répertoire personnel :

#!/bin/sh
/usr/sbin/pppd /dev/cua3 115200 connect 'chat -f /etc/ppp/chatscript'
defaultroute crtscts proxyarp passive

Cela indique à pppd qu'il doit utiliser mon modem, désigné par /dev/cua3 (COM4 en MS-Dos), à une vitesse de 115200 que mon modem 33.6 Kbps peut assurer. L'argument connect indique qu'il faut utiliser la chaîne suivante comme ligne de commande pour connecter pppd au site distant.

Remarque pour les programmeurs : pppd connecte ses fichiers standards d' entrée et de sortie (stdin et stdout) sur la ligne de commande spécifiée par l'option connect. C'est bon à savoir si chat ne fonctionne pas avec votre modem, ce qui arrive souvent avec les modems PCMCIA ou non standards. Vous pouvez alors écrire un script shell intégrant expect et/ou d'autres utilitaires texte, ou un script en Perl faisant la même chose. Le remplacement de chat est nécessaire pour que stdin et stdout dialoguent avec le site distant et que cela se termine en retournant la valeur 0. Voir la page du manuel de chat pour les significations des valeurs de retour.

L'option defaultroute indique à pppd qu'il doit modifier les tables de routage pour que cette connexion soit ajoutée comme route par défaut pour le reste du monde. L'option crtscts indique à pppd qu'il doit utiliser le contrôle matériel du flux pour le modem, une OBLIGATION pour les modems de plus de 9600 bps. proxyarp ajoute une entrée à la table ARP pour les systèmes local et distant. passive demande à pppd » d'être patient pour la réception des paquets LCP du FAI. Si pppd ne reçoit pas immédiatement un paquet LCP du FAI, il supprime la porteuse. J'ai personnellement trouvé cela comme « ingrédient magique » pour que pppd fonctionne avec plusieurs FAI's différents.

Contenu du fichier /etc/ppp/chatscript, utilisé par chat dans startppp :

REPORT CONNECT ABORT BUSY '' atdt5551212 CONNECT '' : tkunz : PaSsWoRd
action ppp

Substituez aux champs appropriés votre nom de login, votre mot de passe et la commande (s'il y en a une) qui lance ppp, et regardez ce qui se passe. Si vous n'avez jamais utilisé pppd sous Linux, vous devrez peut-être contacter votre FAI avant d'établir une connexion afin de savoir s'il y a des options spécifiques nécessaires pour créer et maintenir une connexion PPP. Vous pouvez essayer le script ci-dessus puis étudier le fichier /var/log/messages pour voir ce qui se passe. Vous pouvez aussi modifier votre fichier /etc/syslog.conf pour que les messages soient produits au bon endroit avec une Red Hat. J'utilise un /etc/syslog.conf de la Slackware légèrement modifié :

# /etc/syslog.conf
# Tres important ! Tous les espaces sont des TABS, 
# pas des " " (caractère espace) !
#
*.=info;*.=notice                               /var/log/messages
*.=debug                                        /var/log/debug
*.warn                                          /var/log/syslog

Après avoir créé ce fichier syslog.conf, faites un « touch » sur /var/log/messages, /var/log/debug, et /var/log/syslog, relancez syslogd et examinez les messages qui apparaissent. Occasionnellement, j'ai noté des bizarreries comme syslogd ne voulant pas abandonner la configuration précédente ; en ce cas, relancez la machine pour tout remettre en ordre.

Lorsque syslogd place les bons messages aux endroits spécifiés plus haut, vous pouvez suivre la progression de pppd dans une fenêtre ou sur une console virtuelle pendant que le script startppp s'exécute dans une autre. En examinant /var/log/messages (ainsi que les voyants du modem s'il en a), vous pouvez savoir si chat a réussi ou échoué, ou si les bonnes options ont été passées à pppd. En tant que root, la commande « tail -f /var/log/messages » vous permettra de voir les messages au fur et à mesure de leur insertion dans /var/log/messages.

Avec l'expérience, vous devriez pouvoir établir une connexion PPP en utilisant ces scripts et ces commandes. Je répète que vous aurez peut-être besoin d'appeler votre FAI pour connaître les options LCP ou IPCP qui doivent être utilisées.

3.9 Configurer diald

Vous devez être maintenant capable d'établir un lien PPP avec votre FAI en exécutant startppp, et d'utiliser des navigateurs web pour aller consulter les autres machines du réseau lorsque vous avez installé les règles d' IP forwarding. La pièce suivante du puzzle s'appelle diald. Celui-ci est un moyen de connexion à la demande, c'est-à-dire que lorsqu'il détecte que vous voulez sortir du réseau local pour aller sur l'Internet, il appelle votre FAI et établit la connexion pour vous.

La première chose à comprendre, pour le moment, est que nous allons devoir modifier notre façon de penser à propos de pppd et de chat. Auparavant, dans notre script de la section précédente, nous lancions pppd puis effectuions la commande connect. Après cela, pppd s'exécutait avec les options données sur la ligne de commande. Avec diald, nous devons admettre qu'il prendra en compte la plupart des détails que pppd gérait auparavant. Ces détails comprennent le script d'appel et les options normalement passées à pppd. diald, non plus pppd, s'occupera désormais de l'implantation de tout cela.

diald crée une interface sl0 « virtuelle », qui est une interface SLIP vers nulle part. Nous devrons assigner l'adresse IP 192.168.0.1 à sl0, et l'adresse IP 192.168.0.2 à l'extrémité distante de l'interface SLIP truquée. Puis, il crée une route pour que le trafic non destiné au réseau local aille sur sl0. Lorsque diald trouve des paquets copiés sur sl0, il se rend compte que ceux-ci doivent partir sur l'Internet et démarre le processus de connexion. Afin que tout cela fonctionne, nous devons configurer l'« IP forwarding » pour qu'il soit léger dans le sens où il fera suivre à toutes les interfaces, y compris sl0. Ainsi, les paquets générés par l'une des machines du réseau iront sur la passerelle Linux. Le mécanisme d'« IP forwarding » les copiera sur l'interface sl0 s'ils ne sont pas seulement destinés au réseau local, puis diald démarrera en lançant le processus de connexion et pppd pour établir le lien.

La page de manuel diald-examples (5) a été installée sur votre système lorsque vous avez installé diald. Si vous la lisez, vous y trouverez sûrement ce qui correspond à votre situation. Cependant, la plupart d'entre vous trouverons que cela correspond à la section intitulée « A Leaf Node with Dynamic Local Address using PPP » (Une machine isolée ayant une adresse IP dynamique en utilisant PPP). Ce qui suit provient directement de cette page pour cette situation particulière :

              mode ppp
              connect /etc/diald/connect
              device /dev/ttyS1
              speed 115200
              modem
              lock
              crtscts
              local 192.168.0.1
              remote 192.168.0.2
              dynamic
              defaultroute
              include /usr/lib/diald/standard.filter

Pour commencer, vous devrez avoir tout cela dans votre fichier /etc/diald.conf initial. Nous lui ajouterons des options plus tard.

Arrivé ici, il est important de comprendre que diald doit savoir où trouver les programmes externes route, ifconfig et pppd. Cet article suppose que vous ayez installé ceux-ci à leurs emplacements par défaut, qui sont :

              /usr/sbin/pppd
              /sbin/ifconfig
              /sbin/route

Si, pour certaines raisons, vous ne les avez pas intallés à ces endroits, créez des liens ou déplacez-les aux endroits adéquats.

Passons à la modification du fichier /etc/diald.conf initial. D'abord, nous avons créé un script de chat dans la section sur la configuration de pppd. Nous modifions donc les lignes commençant par connect, device et speed pour refléter notre configuration. Si vous suivez exactement les directives que j'ai données dans la configuration de pppd et que, comme moi, vous avec un modem 33.6 Kbps sur le port COM4, alors vous devriez avoir un diald.conf qui ressemble à celui-ci :

              mode ppp
              connect "chat -f /etc/ppp/chatscript"
              device /dev/cua3
              speed 115200
              modem
              lock
              crtscts
              local 192.168.0.1
              remote 192.168.0.2
              dynamic
              defaultroute
              include /usr/lib/diald/standard.filter

Notez que si vous avez un modem 28.8k, 33.6k, ou 56k votre ligne speed sera identique. Si vous utilisez un 14.4k, utilisez plutôt speed 57600. Assurez-vous aussi d'utiliser le bon numéro de port. Les ports COM de MS-DOS ont un numéro égal à 1 de plus que le numéro de cua car MS-DOS commence sa numérotation à « 1 » alors qu'UNIX a tendance à commencer par « 0 ».

Une chose à remarquer à propos du fichier diald.conf est l'ensemble des options qui auraient du, normalement, être passées à pppd. Comme il l'est précisé dans la page de manuel de diald, vous ne devez pas les passer directement à pppd. Cela fait partie des détails gérés uniquement par diald. Dans notre script startppp original, nous avions spécifié « ... defaultroute crtscts proxyarp passive ». Dans notre nouvelle situation, nous devons configurer ces options dans diald.conf. Toutes ces options, sauf passive, peuvent être spécifiées. Nous obtenons donc un diald.conf ressemblant à ceci :

              mode ppp
              connect "chat -f /etc/ppp/chatscript"
              device /dev/cua3
              speed 115200
              modem
              lock
              crtscts
              local 192.168.0.1
              remote 192.168.0.2
              dynamic
              defaultroute
              proxyarp
              include /usr/lib/diald/standard.filter

Si l'on a besoin d'ajouter la commande passive à pppd pour qu'il fonctionne correctement avec notre FAI, on insère la nouvelle ligne suivante à celles du dessus :

              pppd-options passive

Ce diald.conf devrait vous permettre de lancer une connexion avec votre FAI. Sinon, interrogez son service technique pour connaître leurs recommandations.

Arrivé là, vous devriez pouvoir lancer diald et étudier les messages qui apparaissent dans /var/log/messages. Lorsque diald a démarré, vous devriez aussi pouvoir envoyer des paquets à partir d'autres noeuds de votre réseau vers l'Internet et remarquer que diald établit et coupe automatiquement une connexion. Si ce n'est pas le cas, revenez aux étapes précédentes pour voir d'où vient le problème.

3.10 Configuration des temporisations et des autres options

Une caractéristique très utile de diald est qu'il sait détecter l'inactivité et couper alors le lien PPP après un délai précisé par l'utilisateur. Si vous n'avez qu'une ligne téléphonique chez vous et que vous l'utilisez juste pour de courts instants de connexion, vous apprécierez cette caractéristique. De la même façon, si vous êtes une société qui est taxée toutes les 5/10/15 minutes, vous pouvez être sûr que le lien sera coupé après un certain temps d'inactivité, ce qui réduira le montant de vos factures téléphoniques.

Il y aussi des variables importantes qui ne sont pas associées au lien lui-même, mais au temps que les différentes parties de diald passent à exécuter une temporisation. Par exemple, si l'appel de votre FAI, l'envoi de votre nom d'utilisateur, de votre mot de passe et autres actions connexes prennent plus de 60 secondes, vous ajouterez une ligne comme celle-ci dans le fichier :

              connect-timeout 120

Ou, si vous souhaitez que diald recommence un appel 10 fois avant d'abandonner, et n'attende que 15 secondes pour réinitialiser le modem entre les appels, vous ajouterez les deux lignes suivantes :

              retry-count 10
              redial-timeout 15

Vous pouvez aussi jouer avec certaines options que vous offre diald. Par exemple, l'option two-way indique que si la porteuse est perdue pendant la connexion, diald ne retentera pas le dialogue. Qu'est-ce qu'il y a de bien là-dedans ? Eh bien, si vous devez forcer la fin de la connexion PPP à votre FAI (en tuant manuellement pppd, en débranchant physiquement la ligne téléphonique, etc.), diald n'essaiera pas de vous doubler et de rappeler. Si vous avez une ligne dédiée, et que les temps de connexion avec votre FAI ne vous préoccupent pas, vous n'aurez pas besoin de cette option car vous resterez probablement connecté pendant de longues périodes

Si le temps de connexion est un problème pour vous, vous pourrez utiliser l'option accounting-log ... . Le paramètre de celle-ci sera le chemin complet d'un fichier qui gardera la trace des moments où le lien s'est établi et a été rompu, ainsi que du volume des données qui ont été envoyées sur la liaison. Mais j'avais dit que je ne perdrai pas de temps à parler de comptabilité...

La page de manuel de diald est riche en options, et je vous recommande de la lire en parallèle avec cet article. diald est merveilleusement configurable et peut convenir à une énorme variété de besoins, selon la complexité voulue.

3.11 Remarques sur les applications

OK ! Désormais vous pouvez aller partout dans votre réseau, lancer Netscape, IE, Arena, Mosaic, ou tout autre navigateur et aller sur l'Internet. Cependant, pourquoi est-ce que votre passerelle Linux semble couper de façon aléatoire une connexion ? Que fait-elle ?

Vous devez fouiller dans les applications particulières de votre réseau et voir comment elles sont configurées. Deux grosses choses à vérifier sont le client courrier et les navigateurs web contenant des clients courrier. Si votre client courrier demande de nouveaux messages, il génèrera un paquet qui partira sur votre passerelle et démarrera une connexion. Ceci signifie que, tant la connexion Internet n'est pas établie, un client mail fonctionnant quelque part sur votre réseau local peut involontairement forcer la passerelle à établir une connexion. Cela peut être ennuyant et/ou coûteux, aussi bien pour un utilisateur à la maison que pour une société. Je l'ai fait accidentellement en de nombreuses occasions, coupant la communication téléphonique de ma femme par une tentative de connexion de la passerelle (heureusement, c'est une femme merveilleuse, patiente et pas rancunière) !

Pour régler ce problème, vous devez informer votre équipe (ou votre famille) que lorsqu'ils ont fini avec leur client mail, ils doivent le terminer immédiatement. Ils doivent aussi être informés qu'ils devraient couper la vérification automatique du courrier pour tous les clients courrier qu'ils utilisent, surtout si vous êtes facturés au temps de connexion à votre FAI ou à la minute d'appel (les pays européens facturent souvent même les appels locaux (NdT : !!!!)).

Une autre chose à surveiller est le fichier /etc/resolv.conf des hôtes UNIX de votre réseau. Il ne doit pas contenir de serveurs de noms se trouvant à l'extérieur de votre réseau local, ou toute application recevant un nom d'hôte générera des paquets et forcera votre passerelle à se connecter. Pour cette raison, il est sage de garder tous les noms d'hôtes dont votre réseau local a besoin dans le fichier /etc/hosts de chaque machine UNIX. Si votre réseau local est assez grand pour nécessiter cet effort, vous pouvez aussi configurer votre propre serveur de noms local pour gérer les demandes de noms. Un serveur de nom local avec ses propres règles pour le domaine local et un serveur de nom cache pour les requêtes extérieures est probablement la méthode la plus efficace pour gérer cela. Si vous utilisez un agent local de courrier, comme sendmail, assurez-vous de le configurer de façon à ce qu'il ne force pas la passerelle à appeler le FAI à chaque courrier sortant. Mettez ces courriers en attente jusqu'à ce que la connexion soit disponible ou transmettez-les tous ensemble à un moment planifié.

Évidemment, ce document ne rentre pas dans les détails de configuration des différentes applications de votre réseau utilisant une passerelle d'appel à la demande. Cependant, il est utile d'être prévenu de certaines des conséquences auxquelles vous aurez à faire face lorsque vous ajouterez différentes applications et plates-formes à votre réseau, et des raisons pour lesquelles les choses ne se passent pas comme vous l'aviez prévu. Si vous êtes confronté à un réseau plus important qui nécessite une surveillance accrue pour que tout fonctionne correctement et une grande bande passante vers l'Internet, cela peut être le moment de penser à investir dans des connexions plus rapides (RNIS, T1, T3, OC3, etc.) et dans des lignes louées correspondant mieux à vos besoins. Notez que diald peut fonctionner avec RNIS, mais dans le cas d'un réseau à grande échelle avec des demandes de bande passante plus élévée, une connexion permanente peut être la meilleure solution

3.12 Conclusion

Voilà, il semble approprié de dire que la configuration d'un petit réseau avec connexion à la demande grâce à diald est une tâche qui peut être un peu compliquée, selon la complexité de votre réseau. Mais, si vous avez des besoins « ordinaires », vous pouvez suivre les procédures que je vous ai proposées afin d'obtenir une connexion à la demande qui fonctionne de façon fiable. Beaucoup diront « Que veut dire « besoins ordinaires » ? » ou « Jusqu'à quelle taille de réseau, cela fonctionne-t-il ? ». La réponse est subjective, mais je peux dire de façon presque certaine qu'un réseau de 2 à 8 machines, chacune ayant ses propres navigateur web, client courrier, et autre, se suffira d'un modem à 28.8 Kbps. La connexion à mon FAI dépasse rarement les 28.8 Kbps sur mon modem 33.6 Kbps à cause des lignes et tombe souvent à 21.6 Kbps, tout en restant raisonnablement correcte pour 2 ou 3 machines accédant simultanément à l'Internet. Si vous recherchez la vitesse, vous feriez bien de vous procurer un modem à 56 Kbps. Par expérience, je sais que diald n'aura aucun problème avec ce type de modem pourvu qu'il soit externe et connecté à une UART 16550 ou que vous ayez construit un gestionnaire de configuration PnP capable de configurer correctement un modem 56 Kbps interne.


Précédent Suivant Table des Matières

Copyright (c) 1998, Tom Kunz -Publié dans le numéro 26 de la Linux Gazette, Mars 1998

Adaptation française : Éric Jacoboni et Pierre Tane.