
                                  Diald Howto

Andrs Seco AndresSH@ctv.es
version franaise par Xavier Serpaggi

   v1.03, 17 avril 2000
     _________________________________________________________________

   _Ce document prsente quelques scnarios typiques permettant de
   commencer sans douleur  utiliser Diald. Ces scnarios comprennent une
   connexion  un FAI depuis un ordinateur isol en employant PPP au
   travers d'un modem sans utiliser pon/poff ou ppp-on/ppp-off, vers un
   serveur de proxy/firewall, avec diffrentes connexions  l'Internet
   utilisant diffrents FAIs._
     _________________________________________________________________

1. Introduction

1.1 Objectifs

   Ce document prsente quelques scnarios typiques permettant de
   commencer sans douleur  utiliser _Diald_. Ces scnarios comprennent
   une connexion  un FAI depuis un ordinateur isol en employant PPP au
   travers d'un modem sans utiliser pon/poff ou ppp-on/ppp-off, vers un
   serveur de proxy/firewall, avec diffrentes connexions  l'Internet
   utilisant diffrents FAIs.

   Les scnarios suivants seront traits dans ce document :
     * connecter un ordinateur isol  un FAI en utilisant un modem et
       PPP,
     * connecter un ordinateur  divers FAI en utilisant un modem et PPP,
     * connecter un proxy/firewall  un FAI en utilisant un modem et PPP.

   Dans les versions ultrieures de ce document, d'autres scnarios
   seront ajouts, comme la possibilit d'avoir plusieurs instances de
   _Diald_, l'utilisation des lignes ISDN (RNIS en France) ainsi que des
   lignes utilises pour mettre et recevoir des appels.

   Avant ce HOWTO, il existait un Diald-mini-Howto, crit par Harish
   Pillay h.pillay@ieee.org et qui prsentait un exemple de connexion 
   un FAI en utilisant un schma d'authentification bas sur chat (login
   et et mot de passe avant le lancement de pppd, sans avoir recours 
   PAP ou  CHAP).

   Des exemples de fichiers de configuration seront inclus dans ce
   document pour tre utiliss comme point de dpart  la mise en route
   de _Diald_. Pour obtenir des performances optimales et connatre tous
   les attributs des programmes il est ncessaire que vous lisiez toute
   la documentation de ceux-ci et que vous reconfiguriez les fichiers
   d'exemples donns ici.

   Enfin, selon la distribution de Linux que vous utilisez, les fichiers
   de configuration peuvent se trouver dans diffrents rpertoires. Si
   vous trouvez un des fichiers prsents ici dans un autre rpertoire
   que celui spcifi, je vous demande de me le faire savoir.

1.2 Nouvelles versions

   La version la plus rcente de ce document peut tre trouve sur ma
   page web http://www.ctv.es/USERS/andressh/linux aux formats SGML et
   HTML. D'autres versions et d'autres formats sont galement disponibles
   en espagnol sur le site internet d'Insflug
   http://www.insflug.org/documentos/Diald-Como/. Enfin, ce document peut
   galement tre trouv dans d'autres langues au LDP -- Linux
   Documentation Project, http://www.linuxdoc.org.

1.3 Remerciements

   Je veux remercier les personnes qui m'ont aid  mettre en place et 
   faire tourner mon premier _Diald_ grce  leurs fichiers d'exemple
   (une personne dont j'ai oubli le nom, Mr Cornish Rex, Hoo Kok Mun et
   John Dalbec), les personnes qui m'ont envoy des corrections et des
   suggestions relatives  ce document (Tim Coleman, Jacob Joseph, Paul
   Schmidt et Jordi Mallach), les futurs traducteurs et bien sr, toutes
   les personnes qui ont dvelopp et dveloppent _Diald_ pour nous.

2. Conditions de distribution et mise en garde

   Ce document est Copyright  2000 Andres Seco et est libre. Vous pouvez
   le distribuer sous les termes de la _Licence Publique Gnrale GNU_
   que vous pouvez consulter  l'adresse
   http://www.gnu.org/copyleft/gpl.html. Vous pouvez trouver des versions
   traduites non officielles quelque part sur l'Internet (En franais
   elles peuvent se trouver  l'adresse
   http://www.linux-france.org/article/these/gpl.html).

   Nous avons mis dans les informations et autres contenus de ce document
   le meilleur de notre savoir. Cependant nous pouvons avoir fait des
   erreurs. C'est donc  vous de dterminer si vous voulez suivre les
   instructions donnes dans ce document.

   Personne ne pourra tre tenu pour responsable des ventuels dommages
   survenus  votre ordinateur ou d'autres pertes, suites  l'utilisation
   des informations contenues dans ce document.

   L'AUTEUR ET LES PERSONNES QUI TIENNENT CE DOCUMENT  JOUR NE SONT
   RESPONSABLES D'AUCUN DOMMAGE SURVENU SUITE AUX ACTIONS EFFECTUES EN
   SE BASANT SUR LES INFORMATIONS CONTENUES DANS CE DOCUMENT.

   Bien sr, je suis ouvert  tout type de suggestions et  toutes
   corrections concernant le contenu de ce document.

3. Description rapide du fonctionnement de Diald

   En quelques mots, _Diald_ cre une nouvelle interface rseau et la
   dfinit comme tant la passerelle par dfaut. Cette interface n'est
   pas relle (dans la documentation originale elle est appele proxy
   interface). _Diald_ surveille cette interface et quand un paquet
   arrive, cre une connexion ppp, attend qu'elle soit tablie et dfinit
   cette nouvelle interface ppp (en gnral ppp0) comme tant la
   passerelle par dfault.

   _Diald_ surveille l'interface pour savoir quels paquets ont-t reus
   par l'interface ainsi que leur type. Cela lui permettra de dcider
   s'ils seront destins  tablir la connexion ppp,  maintenir le lien,
    le fermer ou  ne rien faire, et cela lui permettra galement de
   savoir combien de temps le lien devra tre maintenu aprs la
   transmission du paquet.

   En dfinitive, s'il n'y a plus de trafic et que la dure de vie du
   dernier paquet est coule, _Diald_ fermera le lien.

   Vous pouvez contrler les jours et les heures auxquelles le lien peut
   ou ne peut pas tre tabli, et de ce fait vous pouvez n'tablir le
   lien qu'aux moments o les prix sont bas ou le trafic faible.

   Ce qui prcde n'est valide que pour les versions de _Diald_
   suprieures  la 0.16.5 (la dernire version, au moment o ce document
   est crit, est la 0.99.3), mais les dernires versions incluent des
   attributs supplmentaires comme une liste d'utilisateurs autoriss, un
   dcompte du temps avanc, un meilleur support des lignes ISDN, de
   meilleures performances grce  l'utilisation ( la place de slip) du
   device ethertap comme proxy (cela se comporte comme une interface
   rseau qui lit/crit au travers d'une _socket_ en lieu et place d'un
   vrai priphrique rseau), la sauvegarde des connexions et d'autres
   fonctions.

4. Note sur l'authentification

   Quand vous vous connectez  un Fournisseur d'Accs Internet, vous
   devez en gnral donner votre nom d'utilisateur et votre mot de passe.
   Cela peut tre fait en utilisant plusieurs mthodes ; la mthode que
   vous utilisez en pratique est dtermine par votre fournisseur.

   En plus des trois possibilits exposes, vous pouvez utiliser un lien
   sans authentification (en gnral quand vous contrlez galement
   l'autre bout de la ligne).

4.1 Nom d'utilisateur et mot de passe -- invites Login et password

   En vrit il n'y a pas de mthode canonique pour l'authentification
   auprs d'un FAI lors de l'accs  l'Internet.

   L'identification est faite avant le lancement de pppd, et c'est le
   logiciel qui numrote, en gnral chat, qui envoie le nom
   d'utilisateur et le mot de passe. Ces donnes sont envoyes sous forme
   de texte brut, donc cette mthode ne doit pas tre considre comme
   sre.

   Un script d'exemple pour chat, dans lequel vous pouvez voir comment
   faire passer un nom d'utilisateur et un mot de passe avant de lancer
   pppd, ressemblera  quelque chose comme ceci :

ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE"
ABORT "NO ANSWER"
"" ATZ
OK ATDT_Numro_De_Tlphone_
CONNECT \d\c
ogin _Nom_d_Utilisateur_
assword _Mot_De_Passe_

   Les deux dernires lignes dfinissent le nom d'utilisateur et le mot
   de passe et quand les envoyer (aprs avoir reu respectivement
    ogin  et  assword ). Le script chat n'a besoin de voir qu'une
   partie des mots  login  et  password  ce qui permet de ne pas
   tester la premire lettre de chaque mot, et donc de s'affranchir des
   problmes de majuscule/minuscule.

   Supposons que ce script se nomme provider, et qu'il soit enregistr
   dans le rpertoire /etc/chatscript/. Alors, vous pouvez le lancer
   avec :

/usr/sbin/chat -v -f /etc/chatscripts/provider

4.2 PAP -- Password Authentification Protocol : Protocole d'Authentification du
mot de Passe

   Si le fournisseur dont vous utilisez les services demande le protocole
   d'authentification PAP, pendant la ngociation LCP de PPP, ce dernier
   devra l'utiliser. Quand, aprs l'utilisation de chat, la connexion est
   tablie, pppd est lanc. Dans ce scnario, pppd va envoyer le nom
   d'utilisateur et le mot de passe qu'il cherchera dans le fichier
   /etc/ppp/pap-secrets. Ce fichier doit avoir les droits de lecture et
   d'criture pour root uniquement. De ce fait, personne ne peut lire les
   mots de passe qu'il contient.

   PAP n'est pas trs sr vu que le mot de passe est envoy sous forme de
   simple texte et donc peut tre lu par quelqu'un qui surveille votre
   ligne de transmission.

   Voici un exemple simple de fichier /etc/ppp/pap-secrets :

_Nom_d_Utilisateur * _Mot_De_Passe_

4.3 CHAP -- Challenge Authentication Protocol : Protocole d'Authentification
Cod

   Si le fournisseur dont vous utilisez les services demande le protocole
   d'authentification CHAP, pendant la ngociation LCP de PPP, ce dernier
   devra l'utiliser. Quand, aprs l'utilisation de chat, la connexion est
   tablie, pppd est lanc. Dans ce scnario, pppd va envoyer le nom
   d'utilisateur et le mot de passe qu'il cherchera dans le fichier
   /etc/ppp/pap-secrets. Ce fichier doit avoir les droits de lecture et
   d'criture pour root uniquement. De ce fait, personne ne peut lire les
   mots de passe qu'il contient.

   CHAP est plus sr que PAP puisque le mot de passe n'est jamais envoy
   en clair sur la ligne. Le serveur d'authentification envoie un
   identifiant au hasard (le _challenge_) que le client va crypter avec
   son mot de passe avant de le renvoyer  ce premier.

   Voici un exemple simple de fichier /etc/ppp/chap-secrets :

_Nom_d_Utilisateur * _Mot_De_Passe_

   Parfois un mme FAI varie l'utilisation de ces protocoles, il n'est
   donc pas rare de dfinir le nom d'utilisateur et le mot de passe dans
   les deux fichiers.

5. Notes concernant la rsolution de noms

   Chaque fois que vous vous connectez  un FAI il est ncessaire qu'un
   DNS (service de noms) soit configur, comme cela votre ordinateur peut
   trouver les adresses IP associes  un nom de machine.

   Les adresses IP de votre serveur DNS sont places dans le fichier
   /etc/resolv.conf.

   Dans le cas d'un ordinateur isol se connectant  l'internet, ce
   fichier contient gnralement les adresses IP du serveur DNS de votre
   FAI.

#fichier /etc/resolv.conf pour les noms du FAI
nameserver 111.222.333.444
nameserver 222.333.444.555

   Dans le cas d'un ordinateur qui est un proxy/firewall, ce fichier
   contient gnralement la propre adresse IP de cette machine (ou
   l'adresse loopback -- _de bouclage_ : 127.0.0.1). Cet ordinateur doit
   faire tourner un serveur DNS qui transforme les noms de domaine en
   adresses IP en questionnant un DNS externe.

#fichier /etc/resolv.conf pour une rsolution locale des noms
nameserver 127.0.0.1

   L'installation d'un serveur DNS n'est pas le sujet de ce document,
   mais une approche rapide et pertinente peut tre trouve dans le
   DNS-Howto : http://www.freenix.org/unix/linux/HOWTO/DNS-HOWTO.html.

6. Connecter un ordinateur isol  un FAI en utilisant un modem et PPP

   Au moment de configurer _Diald_ pour connecter votre ordinateur 
   votre FAI, il est ncessaire de faire ce qui suit :
     * Installer le paquetage _Diald_. Le plus rapide tant d'installer
       le paquetage qui est contenu dans votre distribution de Linux.
     * Configurer le DNS ( l'aide du fichier /etc/resolv.conf).
     * Vrifier que vous pouvez appeler un FAI. Si votre distribution
       Linux a dj un utilitaire pour configurer une connexion, le plus
       simple est de l'utiliser (pppconfig est l'utilitaire de Debian,
       kppp celui de KDE, etc.). Si vous avez des problmes pour vous
       connecter  un FAI, les  Howto  suivants peuvent vous aider :
          + le PPP-Howto :
            http://www.freenix.org/unix/linux/HOWTO/PPP-HOWTO.html,
          + le Modems-Howto :
            http://www.freenix.org/unix/linux/HOWTO/Modems-HOWTO.html et
          + le Serial-Howto :
            http://www.freenix.org/unix/linux/HOWTO/Serial-HOWTO.html.
     * Configurer les fichiers /etc/ppp/pap-secrets et
       /etc/ppp/chap-secrets en y mettant votre nom d'utilisateur et
       votre mot de passe comme dcrit plus haut.

   Et enfin, pour _Diald_ il faut :
     * Prparer le fichier de configuration de _Diald_
       (/etc/diald/diald.options pour la version 0.16.5, et
       /etc/diald/diald.conf pour les versions plus rcentes).
     * Prparer le fichier de filtres /etc/diald/standard.filter, ou
       mieux, laisser ce fichier tel quel, et en modifier une copie que
       vous pouvez appeler /etc/diald/personal.filter.
     * Prparer le script qui va se charger de l'appel
       (/etc/diald/diald.connect qui doit avoir les droits d'excution de
       root) et le fichier d'instruction de chat
       (/etc/chatscripts/provider) qui sera utilis par le prcdent.
     * Prparer les scripts qui vont tre lancs aux moments o le lien
       sera tabli et supprim (/etc/diald/ip-up et /etc/diald/ip-down)
       si vous voulez utiliser cette possibilit. Les deux scripts
       doivent avoir les droits d'excution de root.
     * Prparer, si vous le dsirez, les scripts pour tablir et
       supprimer les routes (/etc/diald/addroute et /etc/diald/delroute).
       Tous les deux doivent avoir les droits d'excution de root. Cette
       tape n'est pas ncessaire si vous n'utilisez qu'une seule
       instance de _Diald_.
     * Finalement, lancer le dmon diald ( /etc/init.d/diald start 
       pour une Debian et  /etc/rc.d/init.d/diald start  pour une
       RedHat). Normalement, les scripts pour lancer _Diald_ au moment du
       dmarrage de l'ordinateur sont mis en place au moment de
       l'installation du paquetage dans les rpertoires /etc/rcX.d.

   Si vous faites quelque changement que ce soit aux fichiers de
   configuration de _Diald_ pendant que ce dernier est en train de
   tourner, vous devez le redmarrer ( /etc/init.d/diald restart  pour
   une Debian et  /etc/rc.d/init.d/diald restart  pour une RedHat).

6.1 Fichiers /etc/diald/diald.options ou diald.conf

   Dans ce fichier d'exemple vous devez vrifier :
     * le port de communication sur lequel votre modem est connect.
       Option device ;
     * la vitesse  laquelle votre port va communiquer avec votre modem.
       Option speed ;
     * le nom d'utilisateur pour ppp. Option pppd-options ;
     * le nombre d'essais de reconnexion aprs chec et le temps entre
       ces essais ;
     * les heures de connexion autorises : option restrict ;
     * si vous dsirez utiliser les scripts ip-up et ip-down. Options
       ip-up et ip-down ;
     * si vous dsirez utiliser les scripts addroute et delroute :
       options addroute et delroute. En gnral il n'est pas ncessaire
       de modifier ces scripts mais si vous utilisez plus d'une instance
       de _Diald_ ou si vous avez une configuration complexe, vous devrez
       le faire ;
     * si vous utilisez le fichier de filtre standard ou personnalis :
       option include.

##########################
# /etc/diald/diald.options

# Device auquel votre modem est connect
device /dev/ttyS0

# Fichier de log
accounting-log /var/log/diald.log

# Surveillance de la queue
#fifo /var/run/diald/diald.fifo

# Activation du deboguage
# Activer le deboguage rduit les performances
#debug 31

# Nous utilisons PPP comme encapsulateur
mode ppp

# L'adresse IP locale (cette adresse sera automatiquement remplace par celle
# que vous donne votre FAI au moment o vous vous connectez si vous utilisez
# l'option dynamic).
local 127.0.0.5

# L'adresse IP distante (au moment de la connexion cette adresse est remplace
# automatiquement par l'adresse IP du serveur distant qui reoit notre appel).
remote 127.0.0.4

# Masque de sous-rseau pour le lien vers le WAN
# (Wide Area Network -- rseau non local).
netmask 255.255.255.0

# L'adresse IP sera alloue dynamiquement au dbut de la connexion.
dynamic

# Si le lien est bris par une action distante, ne le relancer que s'il reste
# des paquets  envoyer.
two-way

# Si le lien existe, router directement vers la vraie interface ppp et non pas
# vers le proxy. Si vous ne faites pas cela, vous aurez une perte de performanc
es
# d' peu prs 20%. Certains noyaux anciens ne suportent pas reroute.
# Reportez-vous au manuel de diald pour plus d'informations.
reroute

# Diald s'occupera d'tablir la route par dfaut.
defaultroute

# Scripts pour tablir les routes personnalises.
#addroute "/etc/diald/addroute"
#delroute "/etc/diald/delroute"

# Scripts  excuter une fois que le lien est tabli et prt, ou une fois que l
e
# lien est dtruit et ferm. Dans les versions 0.9x de Diald, il existe l'optio
n
# ip-goingdown qui peut tre utilise au moment o le lien va tre dtruit mais
# qu'il est encore actif.
ip-up /etc/diald/ip-up
#ip-down /etc/diald/ip-down

# Scripts utiliss pour connecter ou dconnecter l'interface.
connect "/etc/diald/diald.connect"
#disconnect "/etc/diald/diald.disconnect"

# Utiliser un verrou UUCP pour signaler que le priphrique est en cours
# d'utilisation.
#lock

# Nous nous connectons  l'aide d'un modem. ATTENTION : ne mettez pas cette
# option dans le fichier d'options de ppp sinon il y aura conflit avec les
# options de diald. Pour connatre les options ppp que vous ne pouvez pas
# utiliser dans le fichier pppd-options, reportez-vous  la page de manuel de
# diald et recherchez pppd-options.
modem
crtscts
speed 115200

# Quelques options sur les compteurs et le nombre d'essais.
# Reportez-vous  la page de manuel de Diald pour plus d'informations.
connect-timeout 120
redial-timeout 60
start-pppd-timeout 120
died-retry-count 0
redial-backoff-start 4
redial-backoff-limit 300
dial-fail-limit 10

# Options qui seront passes  pppd.
# Ces options peuvent tre incluses dans le fichier /etc/ppp/options. Elles
# seront considres comme options par dfaut de pppd, mais si vous avez
# d'autres besoins de configurations pour Diald, dans le cas o vous avez
# plusieurs instances, vous devez pciser ici
# noauth - ne pas demander d'authentification au serveur distant.
#          "Infova Plus" (en Espagne) n'identifie pas votre machine.
# user   - votre nom d'utilisateur et de fai. Demandez  votre FAI la syntaxe
#          exacte vu que certains n'ont pas besoin du @fai.
pppd-options noauth user utilisateur@fai

# Restrictions horaires.
# Cette section doit apparatre avant les filtres.
# La commande restrict est exprimentale et peut changer dans les versions
# futures de diald. Repotez-vous  la page de manuel. (Cet exemple a t test
# pour la version 0.16 mais je pense qu'il fonctionne sur les versions plus
# rcentes.)
# Exemple : utilisation uniquement la nuit entre lundi et vendredi et toute la
# journe les samedi et dimanche.
restrict 8:00:00 18:00:00 1-5 * *
down
restrict * * * * *

# Pas de considrations spciales sur la tarification (le nombre de secondes
# au dpart comprises dans le cot, l'unit de tarification en secondes, temps
# en secondes pour tester s'il faut dtruire le lien)
impulse 160,0,0
# Si c'est tarif  la minute et que les 10 premires seront toujours comptes
:
#impulse 600,60,10

# Filtres standards
#include /etc/diald/standard.filter
# Ou filtres personnels
include /etc/diald/personal.filter

6.2 Fichier de filtres personnels

   Vous devez modifier ce fichier avec beaucoup de prcautions. Il est
   utilis pour dcider quand et pourquoi il faut tablir la connexion,
   la maintenir, la dtruire ou ignorer les paquets en fonction du type
   de trafic.

   En gnral le fichier de filtres standard de _Diald_ convient pour la
   plupart des cas mais il peut s'avrer trop ou au contraire pas assez
   restrictif dans certaines situations. Le fichier personal.filter que
   nous prsentons a subi quelques corrections par rapport  l'original
   de la version 0.16.

   Dans les versions futures de ce document, d'autres exemples comments
   plus restrictifs seront inclus.

# /etc/diald/personal.filter
# Les rgles de filtrage prsentes ici sont les mmes que dans le fichier
# standard.filter avec les changements suivants :
#
# Changement de 10  4 minutes dans le cas de "n'importe quelle autre connexion
# tcp".
# Ajout de "ignore tcp tcp.fin" pour ignorer les paquets FIN ACK.
# Ignorer les paquets icmp (ping et traceroute n'activent pas l'interface).
#


# Voici un ensemble de rgles de filtrages assez compliques
# (Ce sont celles que j'utilise.)
#
# J'ai dcompos les rgles en quatre sections :
# Les trames TCP, les trames UDP, les trames ICMP et enfin une rgle
# gnrale pour tout le reste.

ignore icmp any

#------------------------------------------------------------------------------
# Rgles pour les trames TCP.
#------------------------------------------------------------------------------
# Commentaires gnraux sur cet ensemble de rgles :
#
# En gnral nous souhaitons ne traiter que les donnes d'une liaison TCP
# ayant un sens pour le temps de dconnexion. Cependant, nous essayons
# d'ignorer les trames sans donnes.
# Puisque la taille minimale d'un en-tte dans une trame TCP est de 40 octets,
# toutes les trames d'une longueur de 40 ne devraient pas contenir de donnes.
# De cette manire il est possible de manquer des trames vides (des information
s
# optionnelles de routage et d'autres choses supplmentaires peuvent tre
# prsentes dans un en-tte IP), mais nous devrions en capter la majorit.
# Remarquez que nous ne voulons pas rejeter les trames avec un champ tcp.live
# vide puisque nous les utiliserons plus tard pour acclrer la dconnexion de
# certaines liaisons TCP.
#
# Nous voulons galement nous assurer que les trames WWW restent en vie mme
# si la socket TCP est arrte. Nous faisons cela parce que WWW ne garde pas la
# connexion une fois que les donnes ont t transfres, et il serait
# gnant d'avoir une liaison qui se cre et se coupe  chaque document.
#
# En dehors de WWW, l'utilisation la plus courante de TCP concerne les
# connexions de longue dure dont la coupure signifie que vous n'allez plus
# avoir besoin du rseau.
# Nous ne voulons pas ncessairement avoir  attendre 10 minutes que la
# connexion se termine alors que nous n'avons ni telnet ni rlogin en cours, don
c
# nous voulons acclrer le dlai de dconnexion sur les liaisons TCP qui sont
# termines. Cela est ralis en mettant dans un cache les trames qui n'ont pas
 l'indicateur
# live positionn.

# --- dbut proprement dit de l'ensemble de rgles ---

# Quand on dbute une connexion on ne donne tout d'abord au lien que 15
# secondes. L'ide ici est de pouvoir ventuellement se rendre compte que le
# rseau de l'autre ct de la connexion n'est pas accessible. Dans ce cas
# il n'est pas ncessaire de donner un temps de vie de 10 minutes au lien.
# Avec la rgle ci-dessous nous ne lui donnons initialement que 15 secondes.
# Si le rseau est accessible, nous devrions normalement recevoir une
# rponse contenant des donnes dans les 15 secondes. Si cela pose un problme
# parce que vous avez des rponses lentes de certains sites que vous
# visitez rgulirement, vous pouvez augmenter le temps avant dconnexion ou
# bien supprimer cette rgle.
accept tcp 15 tcp.syn

# Empcher named de garder la connexion active.
ignore tcp tcp.dest=tcp.domain
ignore tcp tcp.source=tcp.domain

# (Argh ! Le telnet de SCO commence par envoyer des SNY vides et n'initie la
# connexion que s'il obtient une rponse. Pfuuutt...
accept tcp 5 ip.tot_len=40,tcp.syn

# Empcher les trames vides (autres que les trames
# vides SNY) de maintenir le lien actif.
ignore tcp ip.tot_len=40,tcp.live

# Modifications d'Andres Seco pour ignorer les paquets FIN ACK.
ignore tcp tcp.fin

# On s'assure que le transfert http maintient la ligne active pendant 2
# minutes, mme aprs que c'est termin.
# REMARQUE : votre fichier /etc/services ne devrait pas dfinir le service tcp
# www, auquel cas vous devez commenter les deux lignes suivantes et vous
# procurer un fichier /etc/services plus rcent. Lisez la FAQ pour savoir
# comment obtenir un nouveau fichier /etc/services.
accept tcp 120 tcp.dest=tcp.www
accept tcp 120 tcp.source=tcp.www
# Idem pour https
accept tcp 120 tcp.dest=tcp.443
accept tcp 120 tcp.source=tcp.443

# Une fois que le lien n'est plus actif, nous tentons de stopper la connexion
# rapidement. Remarquez que si le lien est dj arrt, un changement d'tat
# ne le ramnera pas  l'tat actif.
keepup tcp 5 !tcp.live
ignore tcp !tcp.live

# une donne ftp ou une connexion ftp peut tre attendue pour rendre compte
# du trafic relativement frquent.
accept tcp 120 tcp.dest=tcp.ftp
accept tcp 120 tcp.source=tcp.ftp

# REMARQUE : les donnes ftp ne sont pas dfinies dans le fichier /etc/services
# distribu dans les dernires versions de NETKIT, donc j'ai comment ce
# passage.
# Si vous dsirez le dfinir, ajoutez la ligne suivante  votre fichier
# /etc/services :
# ftp-data        20/tcp
# et dcommentez les deux rgles suivantes :
#accept tcp 120 tcp.dest=tcp.ftp-data
#accept tcp 120 tcp.source=tcp.ftp-data

# Si nous n'avons pas russi  l'avoir avec les rgles ci-dessus, donnons au
# lien 10 minutes de plus.
#accept tcp 600 any
# Modification d'Andres Seco. Ne lui donnons que 4 minutes de plus.
accept tcp 240 any

# Rgles pour les trames UDP.
#
# Nous donnons ds  prsent un temps limite aux requtes de domaine puisque
# nous voulons seulement qu'elles tablissent le lien, pas qu'elles le maintien
nent
# pour un long moment.
# Cela parce que le rseau sera gnralement tabli par un appel de la
# bibliothque de rsolution de nom ( moins que vous n'ayez mis toutes les
# adresses que vous utilisez frquemment dans /etc/hosts, auquel cas vous
# dcouvrirez d'autres problmes.)
# Remarquez que vous ne devez pas donner une valeur de temps limite de
# dconnexion plus courte que le temps suppos que va mettre votre DNS pour
# rpondre. Sinon, quand le lien original s'tablit, il risque d'y avoir
# une attente suprieure  celle qu'il y a entre les sries de trames initiales
# avant qu'une trame destine  maintenir le lien passe par ce dernier.

# Ne pas activer le lien pour rwho.
ignore udp udp.dest=udp.who
ignore udp udp.source=udp.who
# Ne pas activer le lien pour RIP.
ignore udp udp.dest=udp.route
ignore udp udp.source=udp.route
# Ne pas activer le lien pour NTP ou pour timed.
ignore udp udp.dest=udp.ntp
ignore udp udp.source=udp.ntp
ignore udp udp.dest=udp.timed
ignore udp udp.source=udp.timed
# Ne pas activer les requtes de nom de domaine entre deux excutions de named.
ignore udp udp.dest=udp.domain,udp.source=udp.domain
# Activer le rseau pour les requtes de domaine qui ne viennent pas de
# named.
accept udp 30 udp.dest=udp.domain
accept udp 30 udp.source=udp.domain
# Faire la mme chose pour les diffusions de netbios-ns.
# REMARQUE : votre fichier /etc/services peut ne pas dfinir le service
# netbios-ns, auquel cas vous devez commenter les trois lignes suivantes.
ignore udp udp.source=udp.netbios-ns,udp.dest=udp.netbios-ns
accept udp 30 udp.dest=udp.netbios-ns
accept udp 30 udp.source=udp.netbios-ns
# empcher les transferts de routed et gated de maintenir le lien actif
ignore udp tcp.dest=udp.route
ignore udp tcp.source=udp.route
# Le reste a droit  2 minutes.
accept udp 120 any

# Rcuprer toutes les trames que nous n'avons pas traites auparavant et donne
r 30
# secondes de dure de vie  la connexion.
accept any 30 any

6.3 Tlphoner

   Le fichier /etc/diald/diald.connect (il doit avoir les droits
   d'excution) :

/usr/sbin/chat -f /etc/chatscripts/provider

   Le fichier /etc/chatscripts/provider. Dans ce fichier d'exemple vous
   devez modifier le numro de tlphone  appeler (le 0123456789) :

ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE"
ABORT "NO ANSWER"
"" ATZ
OK ATDT0123456789
CONNECT \d\c

6.4 Script de lancement de la connexion

   Il doit avoir les droits d'excution.

   Ce script peut tre utilis pour de nombreuses tches
   (synchronisation, envoi des messages en attente, rcupration des
   messages chez le FAI, etc.).

#!/bin/sh

iface=$1
netmask=$2
localip=$3
remoteip=$4
metric=$5

# mise  jour de l'heure et de la date
# netdate ntp.server.somecountry

# s'occupe des mails dans la file d'attente
# runq

echo `date` $1 $2 $3 $4 $5 | mail -s "diald - connexion" root@localhost

7. Connexion d'un ordinateur  diffrents FAI  l'aide d'un modem et de PPP

   Il n'est pas rare qu'un ordinateur isol ne se connecte pas qu' un
   unique rseau. Il est courant de se connecter  diffrents rseaux ou
    l'Internet par le biais de diffrents FAI. Dans ce cas il peut tre
   agaant de changer vos fichiers de configuration  chaque fois que
   vous voulez vous connecter  un aute site.

   La solution que je propose ici consiste  utiliser un jeu de plusieurs
   fichiers de configuration ; un pour chaque connexion. Vous pouvez
   trouver ici quelques scripts qui permettent d'automatiser le
   changement de l'un  l'autre.

7.1 Remarque sur l'envoi de courrier  l'aide d'un hte relais

   Si le progamme avec lequel vous lisez votre courrier utilise un Agent
   de Transfert de Messages (MTA en anglais) avec un hte relais smtp 
   qui envoyer tous les messages, ou s'il envoie les messages directement
   au serveur smtp de votre FAI, changer de connexion signifie avoir 
   reconfigurer cette option pour le serveur relais smtp. Cela  cause du
   fait que les FAI vrifient en gnral si la bote de rception est
   locale ou bien sur tout domaine qui leur est directement rattach ou
   si l'adresse IP de l'envoyeur appartient bien  l'intervalle
   d'adresses IP assign par ce FAI et ce, dans le but d'viter d'avoir
   un serveur relais ouvert qui puisse tre utilis pour envoyer des
   _spams_, des messages anonymes, etc.

   Dans les exemples suivant vous apprendrez comment changer ce paramtre
   dans les fichiers de configuration de Smail en un fichier simple grce
   auquel tous les messages externes seront envoys  un serveur smtp
   relais. Si vous utilisez un autre MTA sur votre systme, vous pouvez
   m'envoyer les changements ncessaires pour que je les inclue ici. Si
   vous utilisez un programme pour lire votre courrier qui s'adresse
   directement au serveur smtp externe (Kmail, Netscape, etc.),
   envoyez-moi galement vos modifications.

7.2 Scripts pour automatiser les connexions multiples et les changements de
l'une  l'autre

  Dmarrage

   En tout premier lieu vous devez crer un sous-rpertoire  /etc/diald
   appel providers (_traduction anglaise de fournisseurs !_) o vous
   stockerez 1) vos scripts pour passer automatiquement d'un FAI 
   l'autre, et 2) les sous-rpertoires contenant le jeu de fichiers
   ncessaire  la configuration de la connexion chez chaque FAI.

   Le script suivant cre ce rpertoire et y met les fichiers de
   configuration actuels de _Diald_, _chat_, _pppd_ et _Smail_. Ces
   derniers seront utiliss comme modles pour les futures
   configurations.

#!/bin/sh
#File /etc/diald/providers/setupdialdmultiprovider
mkdir /etc/diald/providers
mkdir /etc/diald/providers/setup
cp /etc/ppp/pap-secrets /etc/diald/providers/setup
cp /etc/ppp/chap-secrets /etc/diald/providers/setup
cp /etc/resolv.conf /etc/diald/providers/setup
cp /etc/diald/diald.options /etc/diald/providers/setup
cp /etc/diald/standard.filter /etc/diald/providers/setup
cp /etc/diald/personal.filter /etc/diald/providers/setup
cp /etc/diald/diald.connect /etc/diald/providers/setup
cp /etc/chatscripts/provider /etc/diald/providers/setup
cp /etc/diald/ip-up /etc/diald/providers/setup
cp /etc/diald/ip-down /etc/diald/providers/setup
cp /etc/smail/routers /etc/diald/providers/setup

  Un nouveau FAI

   Le script suivant vous aidera  copier la configuration qui sert de
   modle vers un nouveau rpertoire, pour la modifier dans l'optique
   d'une nouvelle connexion  un FAI ou  un rseau. Ce script
   (/etc/diald/providers/newdialdprovider/) prendra comme paramtre le
   nom du FAI ou du rseau.

#!/bin/sh
#Fichier /etc/diald/providers/newdialdprovider
mkdir /etc/diald/providers/$1
cp /etc/diald/providers/setup/* /etc/diald/providers/$1

    prsent vous pouvez modifier, en fonction de vos besoins, les
   fichiers nouvellement crs dans /etc/diald/providers/providername,
   tout en gardant  l'esprit que providername est le paramtre pass au
   script newdialdprovider.

  Passer de l'un  l'autre

   Pour terminer, ce script vous permettra de changer les fichiers de
   configuration de _Diald_ pour pouvoir vous connecter  un autre FAI ou
    un autre rseau. J'utilise des liens symboliques pour viter d'avoir
    dupliquer les fichiers. L'utilisation de tels liens permet que toute
   modification d'un fichier original comme par exemple /etc/resolv.conf
   soit reporte dans le fichier li, ici
   /etc/diald/providers/providername/resolv.conf.

#!/bin/sh
#Fichier /etc/diald/providers/setdialdprovider
/etc/init.d/diald stop
#On attend que Diald s'arrte
sleep 4
ln -sf /etc/diald/providers/$1/pap-secrets /etc/ppp
ln -sf /etc/diald/providers/$1/chap-secrets /etc/ppp
ln -sf /etc/diald/providers/$1/resolv.conf /etc
ln -sf /etc/diald/providers/$1/diald.options /etc/diald
ln -sf /etc/diald/providers/$1/standard.filter /etc/diald
ln -sf /etc/diald/providers/$1/personal.filter /etc/diald
ln -sf /etc/diald/providers/$1/diald.connect /etc/diald
ln -sf /etc/diald/providers/$1/provider /etc/chatscripts
ln -sf /etc/diald/providers/$1/ip-up /etc/diald
ln -sf /etc/diald/providers/$1/ip-down /etc/diald
ln -sf /etc/diald/providers/$1/routers /etc/smail
/etc/init.d/diald start

8. Connexion d'un proxy/firewall  un FAI  l'aide d'un modem et de PPP

   Connecter un rseau priv  l'Internet avec un serveur ddi qui gre
   le routage des paquets  partir du rseau local vers l'Internet tout
   en proposant des services de proxy/cache et la scurit d'un firewall
   est un thme complexe qui va au-del du but de ce document. Il existe
   d'autres  Howto  qui expliquent ces sujets de manire beaucoup plus
   comprhensible. Vous trouverez,  la fin de ce document, une liste de
   liens et de rfrences vers ces documents.

   Ici, nous nous contentons de configurer _Diald_ en supposant que
   l'ordinateur fait dja du masquage d'adresses IP (_IP-Masquerading_),
   dispose d'un proxy tel que _Squid_, d'une connexion  un FAI
   correctement configure et que la scurit des accs aux ports TCP/UDP
   a t revue (fichiers /etc/inetd.conf et autres tels que securetty,
   host.allow, etc.).

   Pour faire simple, il suffit uniquement de reconfigurer les rgles
   pour le masquage/le filtrage/l'accs,  chaque fois que le jeu
   d'interfaces change, donc quand l'interface ppp0 est tablie et
   qu'elle est dtruite. De bons endroits pour faire cela sont les
   scripts ip-up et ip-down de _pppd_.

8.1 Exemple pour Debian 2.1

   Avec Debian il vous suffit d'installer le paquetage _ipmasq_ et de
   dire, au moment de la configuration, que vous voulez changer les
   rgles de manire synchrone  _pppd_. Des scripts seront crs dans
   les rpertoires /etc/ppp/ip-up.d et /etc/ppp/ip-down.d pour prendre en
   charge le lancement de /sbin/ipmasq, un script qui analyse les
   interfaces existantes et cre une configuration simple qui est valable
   dans la plupart des cas ; vous pouvez le personnaliser  l'aide des
   fichiers de rgles de /etc/ipmasq/rules.

   La seule correction  faire aprs avoir install ce paquetage est de
   modifier le moment du lancement du script _ipmasq_ en effaant le lien
   symbolique contenu dans le rpertoire /etc/rcS.d et en en crant un
   nouveau dans /etc/rc2.d _aprs_ S20diald.  prsent, quand ipmasq est
   excut pour analyser les interfaces, s10 existe dj. S90ipmasq est
   un bon nom pour ce lien symbolique qui pointe vers /etc/init.d/ipmasq.

   Le fait d'utiliser Debian vous permet de ne pas avoir  vous soucier
   de la version de votre noyau puisque le script /sbin/ipmasq utilise
   ipfwadm ou ipchains selon le cas.

8.2 Exemple pour Suse 6.1

   Cet exemple nous vient de M. Cornish Rex, troll@tnet.com.au.

   Les commandes d'ip-masq et du contrle de routage mises en oeuvre ici
   sont  employer avec les noyaux version 2.2 qui utilisent ipchains et
   ne sont pas valides pour les versions 2.0.

   Nous allons supposer que l'interface ethernet a l'adresse ip
   192.168.1.1 avec un masque rseau de 16 bits, soit 255.255.0.0.

   Voici le fichier /etc/ppp/ip-up :

#!/bin/sh
# $1 = Interface
# $2 = Tty device
# $3 = speed
# $4 = local ip
# $5 = remote ip
# $6 = ipparam
/sbin/ipchains -F input
/sbin/ipchains -P input DENY
/sbin/ipchains -A input -j ACCEPT -i eth0 -s 192.168.0.0/16 -d 0.0.0.0/0
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 0:52 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 54:1023 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 0:112 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 114:1023 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6000:6010 -l
/sbin/ipchains -A input -j DENY -p icmp --icmp-type echo-request \
-i $1 -s 0.0.0.0/0 -l
/sbin/ipchains -A input -j DENY -p icmp -f -i $1 -s 0.0.0.0/0 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 5555 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 8000 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 8000 -l
/sbin/ipchains -A input -j DENY -p udp -i $1 -s 0.0.0.0/0 -d $4/32 6667 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6667 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4557 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4559 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 4001 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 2005 -l
/sbin/ipchains -A input -j DENY -p tcp -i $1 -s 0.0.0.0/0 -d $4/32 6711 -l
/sbin/ipchains -A input -j DENY -i $1 -s 192.168.0.0/16 -d 0.0.0.0/0 -l
/sbin/ipchains -A input -j ACCEPT -i $1 -s 0.0.0.0/0 -d $4/32
/sbin/ipchains -A input -j ACCEPT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -A input -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 -l

/sbin/ipchains -F output
/sbin/ipchains -P output DENY
/sbin/ipchains -A output -j ACCEPT -i eth0 -s 0.0.0.0/0 -d 192.168.0.0/16
/sbin/ipchains -A output -j DENY -i $1 -s 192.168.0.0/16 -d 0.0.0.0/0 -l
/sbin/ipchains -A output -j ACCEPT -i $1 -s $4/32 -d 0.0.0.0/0
/sbin/ipchains -A output -j ACCEPT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0
/sbin/ipchains -A output -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0

/sbin/ipchains -F forward
/sbin/ipchains -P forward DENY
/sbin/ipchains -M -S 120 120 120
/sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24
/sbin/ipchains -A forward -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0

exit 0

   Voici le fichier /etc/ppp/ip-down :

#!/bin/sh
# $1 = Interface
# $2 = Tty device
# $3 = Speed
# $4 = Local ip
# $5 = Remote ip
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
/sbin/ipchains-restore < /etc/ppp/orig.chains

   Voici le dernier fichier du dernier script, origin.chain (statut
   original d'ipchains) :

# orig.chains
# cre avec : ipchains-save > orig.chains
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d 192.168.1.1/255.255.255.255
-A output -s 192.168.1.1/255.255.255.255 -d 0.0.0.0/0.0.0.0

8.3 Exemple pour Slackware 3.6

   Cet exemple nous a t donn par Hoo Kok Mun, hkmun@pacific.net.sg.

   C'est l'exemple le plus simple qu'il m'ait t donn de voir mais il
   est compltement fonctionnel. Cet exemple nous montre comment
   configurer le masquage avant l'existence de l'interface s10 et il ne
   change pas quand l'interface ppp0 apparat. Si vos exigences en
   matire de scurit sont assez leves, il peut s'avrer limit.

#/etc/rc.d/rc.local
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm  -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0

   Comme vous pouvez le voir, il est destin aux noyaux version 2.0.

9. Programmes et versions utilises

   Pour crire ce document j'ai utilis les versions suivantes de diald :

     * Diald 0.16.5 -- dernire version maintenue par l'auteur original
       de diald.
     * Diald 0.99.3 -- dernire version avant la premire dition de ce
       document.

   Et les versions suivantes de pppd :

     * pppd 2.3.5

   La version 0.16.5 de diald est peut-tre la plus tendue et celle qui
   est incluse dans le plus de distributions Linux. Elle est suffisante
   pour la plupart des sites et elle est trs stable, mais bien sr, les
   versions plus rcentes ont de nombreuses fonctions intressantes.

10. Pour en savoir plus

   Les informations originales, sources de ce document, peuvent tre
   trouves dans les pages de manuel de diald, diald-examples,
   diald-control, diald-monitor, dctrl, pppd, chat, ainsi que dans les
   informations contenues dans les rpertoires de /usr/doc et sur les
   pages web de ces paquetages :

     * Nouvelle page officielle de Diald : http://diald.sourceforge.net/
     * Tlchargement des nouvelles versions :
       ftp://diald.sourceforge.net/pub/diald/
     * Ancienne page de Diald : http://diald.unix.ch
     * Ancienne page de Diald avant la version 0.16.5 :
       http://www.loonie.net/ erics/diald.html
     * Site FTP de pppd : ftp://cs.anu.edu.au/pub/software/ppp/
     * Autres sites : http://www.p2sel.com/diald
     * Et un de plus : http://rufus.w3.org/linux/RPM/

   Il existe une liste de diffusion, pour ce qui concerne les discussions
   qui tournent autour de diald, sur le serveur de liste de David S.
   Miller  vger.rutgers.edu. Pour s'abonner il suffit d'envoyer un
   message  Majordomo@vger.rutgers.edu avec le texte  subscribe
   linux-diald  _dans le corps du message_.

   Une archive de cette liste peut tre trouve 
   http://www.geocrawler.com.

   Il existe galement de nombreux documents RFC (_Request For Comments
   -- demande de commentaires_) qui dfinissent la manire dont les
   lignes encapsules de PPP et les protocoles associs (LCP, IPCP, PAP,
   CHAP, ...) doivent fonctionner. Vous pouvez trouver ces documents dans
   le rpertoire /usr/doc/doc-rfc et sur certains sites de la grande
   toile mondiale comme par exemple http://metalab.unc.edu et
   http://nic.mil/RFC. Vous pouvez demander des informations concernant
   les RFC en envoyant un courrier lectronique  RFC-INFO@ISI.EDU.

   Les  Howto  suivants peuvent vous tre utiles :

     * DNS-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/DNS-HOWTO.html
     * Firewall-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/Firewall-HOWTO.html
     * IP-Masquerade-HOWTO --
       http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html
     * IPCHAINS-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/IPCHAINS-HOWTO.html
     * Modems-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/Modems-HOWTO.html
     * NET4-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/NET4-HOWTO.html
     * PPP-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/PPP-HOWTO.html
     * Serial-HOWTO --
       http://www.freenix.org/unix/linux/HOWTO/Serial-HOWTO.html
