  Mise en place de diald pour Linux - un exemple
  GNU Copyright par Harish Pillay, h.pillay@ieee.org version
  franaise par Xavier Serpaggi
  1996

  Ce qui suit est un exemple de configuration que j'ai faite fonctionner
  sur plusieurs machines et qui autorise l'installation automatique de
  diald au moment du dmarrage. Quand une demande de connexion se
  prsente, il tlphone automatiquement  mon FAI (Fournisseur d'Accs
  Internet) prfr, Pacific Internet ici  Singapour.
  ______________________________________________________________________

  Table des matires


  1. Fichiers de configuration

     1.1 Fichier /etc/rc.d/rc.local
     1.2 Script PPP  l'aveuglette
     1.3 Fichier /etc/diald.conf
     1.4 Fichier diald.defs

  2. Ma configuration

  3. Remarques



  ______________________________________________________________________

  11..  FFiicchhiieerrss ddee ccoonnffiigguurraattiioonn

  Merci beaucoup  Eric Schenk pour le super outil qu'est diald.

  11..11..  FFiicchhiieerr //eettcc//rrcc..dd//rrcc..llooccaall































  #! /bin/sh
  # Mettez ici toutes les commandes de configuration locale
  # On lance gpm
  echo "Lancement de gpm..."
  gpm -t ms &

  # dmarrage d'innd
  /etc/rc.d/rc.news

  # dmarrage du dmon httpd du CERN
  echo "Dmarrage de CERN httpd avec proxy et cache."
  /usr/local/bin/httpd

  # chargement des modules ncessaires
  /etc/rc.d/rc.modules

  # dmarrage de diald
  echo "Dmarrage du dmon diald pour Pacific Internet ..."
  cd /usr/lib/ppp
  /usr/lib/ppp/diald.pacific.internet

  /usr/lib/ppp/diald.pacific.internet


  /usr/sbin/diald /dev/ttyS1 /dev/ttyS1 lock debug 20 -m ppp local 127.0.0.2 \
    remote 127.0.0.3 defaultroute modem crtscts \
    connect "chat -v -f /usr/lib/ppp/pppchat.pi" \
    dynamic -- debug noipdefault

  /usr/lib/ppp/pppchat.pi


  ABORT "NO CARRIER"
  ABORT BUSY
  "" ATZ OK
  ATm1s50=255s111=0DT1-800-555-1212
  CONNECT ""
  login MONNOMDELOGIN
  ssword MOMMOTDEPASSE




  11..22..  SSccrriipptt PPPPPP  ll''aavveeuugglleettttee


    Amorage de minicom.

    Connexion au fournisseur d'accs

    Invoquer PPP de l'autre ct

    Suspendre minicom (alt-A-J).

    Invoquer le script suivant











  #!/bin/sh
  #       Mise en place d'une liaison PPP  l'aveuglette - script appel blind.ppp

  DEVICE=ttyS1
  (
          stty 38400 -tostop
          pppd -detach debug noipdefault defaultroute mru 1500 /dev/$DEVICE &
          exit 0
  )  /dev/$DEVICE




  11..33..  FFiicchhiieerr //eettcc//ddiiaalldd..ccoonnff

  Mon fichier /etc/diald.conf (inchang par rapport  la distribution
  originale) :

















































  # Voici un ensemble de rgles de filtrages assez compliques
  # (Ce sont les rgles 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.
  #------------------------------------------------------------------------------
  # Rgles pour les trames TCP.
  #------------------------------------------------------------------------------
  # Commentaires gnraux sur cet ensemble de rgles :
  #
  # En gnral nous n'aimerions traiter que les donnes d'une liaison TCP
  # ayant un sens pour le temps de dconnexion. Cependant, nous essayons
  # d'ignorer les trames sans donne.
  # 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 donne.
  # De cette manire il est possible de manquer des trames vides (des informations
  # 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 rejetter 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 la liaison qui se cree et se coupe  chaque document.
  #
  # En dehors de WWW l'utilisation la plus courante de TCP est pour les
  # connexions de longues dures 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, donc
  # nous voulons acclrer le dlai de dconnexion sur les liaisons TCP qui sont
  # termines. Ceci 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 alors 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 la part 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 de maintenir le lien actif (autres que les trames
  # vides SNY).
  ignore tcp ip.tot_len=40,tcp.live

  # On s'assure que le transfert http maintient la ligne active pendant 2
  # minutes, mme aprs que ce soit 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

  # 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 au dessus, donnons au
  # lien 10 minutes de plus.
  accept tcp 600 any

  # Rgles pour les trames UDP.
  #
  # Nous donnons ds  prsent un temps limite aux requettes de domaine puisque
  # nous voulons juste qu'elles tablissent le lien, pas qu'elles le maintiennent
  # pour un long moment.
  # Ceci 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 trames que nous n'avons pas traites auparavant et donner 30
  # secondes de dure de vie  la connexion.
  accept any 30 any




  11..44..  FFiicchhiieerr ddiiaalldd..ddeeffss

  Mon fichier diald.defs (inchang par rapport  la distribution
  originale) :


  # Dfinition des rgles de protocole par dfaut
  prule tcp tcp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9
  prule udp udp 9:12:13:14:15:16:17:18:19:+0:+1:+2:+3:9:9:9
  prule icmp icmp 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9
  prule any any 9:12:13:14:15:16:17:18:19:9:9:9:9:9:9:9
  # Dfinition des en-ttes des trames internet.
  var ip.ihl 0(24)&0xf
  var ip.version 0(28)&0xf
  var ip.tos 1(24)&0xff
  var ip.tot_len 2(16)&0xffff
  var ip.id 4(16)&0xffff
  var ip.frag_off 6(16)&0x3fff
  var ip.ttl 8(24)&0xff
  var ip.protocol 9(24)&0xff
  var ip.check 10(16)&0xffff
  var ip.saddr 12
  var ip.daddr 16
  # Dfinition des en-ttes des trames TCP.
  var tcp.source +0(16)&0xffff
  var tcp.dest +2(16)&0xffff
  var tcp.seq +4
  var tcp.ack_seq +8
  var tcp.doff +12(28)&0xf
  var tcp.fin +13(24)&0x1
  var tcp.syn +13(25)&0x1
  var tcp.rst +13(26)&0x1
  var tcp.psh +13(27)&0x1
  var tcp.ack +13(28)&0x1
  var tcp.urg +13(29)&0x1
  var tcp.live +127
  # Dfinition de en-ttes des trames UDP.
  var udp.source +0(16)&0xffff
  var udp.dest +2(16)&0xffff
  var udp.len +4(16)&0xffff
  var udp.check +6(16)&0xffff
  # Dfinition des en-ttes des trames ICMP.
  var icmp.type +0(24)&0xff
  var icmp.code +1(24)&0xff
  var icmp.checksum +2(16)&0xffff
  var icmp.echo.id +4(16)&0xffff
  var icmp.echo.sequence +6(16)&0xffff
  var icmp.gateway +4


  22..  MMaa ccoonnffiigguurraattiioonn


    Un 486/66 avec 20 Mo de ram et plein d'espace disque :-)

    des UART 16550 en abondance

    diald 0.11, pppd 2.2.0d, noyau 1.3.95 avec modules.


  33..  RReemmaarrqquueess


    Changez le nom du port srie /dev/ttyS1 ``ci-dessus'' de manire 
     ce qu'il corresponde  vos attentes.

    Assurez vous que vous pouvez vous connecter avec PPP en utilisant
     le script blind.ppp.

  Si vous avez des questions crivez  Harish Pillay  h.pillay@ieee.org














































