Mise en place de diald pour Linux - un exemple
 GNU Copyright par Harish Pillay, [email protected] version
 fran�aise 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 d�marrage. Quand une demande de connexion se
 pr�sente, il t�l�phone automatiquement � mon FAI (Fournisseur d'Acc�s
 Internet) pr�f�r�, Pacific Internet ici � Singapour.
 ______________________________________________________________________

 Table des mati�res


 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



 ______________________________________________________________________

 11..  FFiicchhiieerrss ddee ccoonnffiigguurraattiioonn

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

 11..11..  FFiicchhiieerr //eettcc//rrcc..dd//rrcc..llooccaall































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

 # d�marrage d'innd
 /etc/rc.d/rc.news

 # d�marrage du d�mon httpd du CERN
 echo "D�marrage de CERN httpd avec proxy et cache."
 /usr/local/bin/httpd

 # chargement des modules n�cessaires
 /etc/rc.d/rc.modules

 # d�marrage de diald
 echo "D�marrage du d�mon 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




 11..22..  SSccrriipptt PPPPPP �� ll''aavveeuugglleettttee


 �  Amor�age de minicom.

 �  Connexion au fournisseur d'acc�s

 �  Invoquer PPP de l'autre c�t�

 �  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




 11..33..  FFiicchhiieerr //eettcc//ddiiaalldd..ccoonnff

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

















































 # Voici un ensemble de r�gles de filtrages assez compliqu�es
 # (Ce sont les r�gles que j'utilise.)
 #
 # J'ai d�compos� les r�gles en quatre sections.
 # Les trames TCP, les trames UDP, les trames ICMP et enfin une r�gle
 # g�n�rale pour tout le reste.
 #------------------------------------------------------------------------------
 # R�gles pour les trames TCP.
 #------------------------------------------------------------------------------
 # Commentaires g�n�raux sur cet ensemble de r�gles :
 #
 # En g�n�ral nous n'aimerions traiter que les donn�es d'une liaison TCP
 # ayant un sens pour le temps de d�connexion. Cependant, nous essayons
 # d'ignorer les trames sans donn�e.
 # Puisque la taille minimale d'un en-t�te dans une trame TCP est de 40 octets,
 # toutes les trames d'une longueur de 40 ne devraient pas contenir de donn�e.
 # De cette mani�re il est possible de manquer des trames vides (des informations
 # optionnelles de routage et d'autres choses suppl�mentaires peuvent �tre
 # pr�sentes dans un en-t�te 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 acc�l�rer la d�connexion de
 # certaines liaisons TCP.
 #
 # Nous voulons �galement nous assurer que les trames WWW restent en vie m�me
 # si la socket TCP est arr�t�e. Nous faisons cela parce que WWW ne garde pas la
 # connexion une fois que les donn�es ont-�t� transf�r�es, et il serait
 # g�nant d'avoir la liaison qui se cr�ee et se coupe � chaque document.
 #
 # En dehors de WWW l'utilisation la plus courante de TCP est pour les
 # connexions de longues dur�es dont la coupure signifie que vous n'allez plus
 # avoir besoin du r�seau.
 # Nous ne voulons pas n�cessairement avoir � attendre 10 minutes que la
 # connexion se termine alors que nous n'avons ni telnet ni rlogin en cours, donc
 # nous voulons acc�l�rer le d�lai de d�connexion sur les liaisons TCP qui sont
 # termin�es. Ceci est r�alis� en mettant dans un cache les trames qui n'ont pas l'indicateur
 # live positionn�.

 # --- d�but proprement dit de l'ensemble de r�gles ---

 # Quand on d�bute une connexion on ne donne tout d'abord au lien que 15
 # secondes. L'id�e ici est de pouvoir �ventuellement se rendre compte que le
 # r�seau de l'autre c�t� de la connexion n'est pas accessible. Dans ce cas
 # il n'est pas n�cessaire de donner un temps de vie de 10 minutes au lien.
 # Avec la r�gle ci-dessous nous ne lui donnons initialement que 15 secondes.
 # Si le r�seau est accessible alors nous devrions normalement recevoir une
 # r�ponse contenant des donn�es dans les 15 secondes. Si cela pose un probl�me
 # parce que vous avez des r�ponses lentes de la part de certains sites que vous
 # visitez r�guli�rement, vous pouvez augmenter le temps avant d�connexion ou
 # bien supprimer cette r�gle.
 accept tcp 15 tcp.syn

 # Emp�cher 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 r�ponse. Pfuuutt...
 accept tcp 5 ip.tot_len=40,tcp.syn

 # Emp�cher 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, m�me apr�s que ce soit termin�.
 # REMARQUE : votre fichier /etc/services ne devrait pas d�finir le service tcp
 # www, auquel cas vous devez commenter les deux lignes suivantes et vous
 # procurer un fichier /etc/services plus r�cent. 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 d�j� arr�t�, un changement d'�tat
 # ne le ram�nera pas � l'�tat actif.
 keepup tcp 5 !tcp.live
 ignore tcp !tcp.live

 # une donn�e ftp ou une connexion ftp peut �tre attendue pour rendre compte
 # du trafic relativement fr�quent.
 accept tcp 120 tcp.dest=tcp.ftp
 accept tcp 120 tcp.source=tcp.ftp

 # REMARQUE : les donn�es ftp ne sont pas d�finies dans le fichier /etc/services
 # distribu� dans les derni�res versions de NETKIT, donc j'ai comment� ce
 # passage.
 # Si vous d�sirez le d�finir, ajoutez la ligne suivante � votre fichier
 # /etc/services :
 # ftp-data        20/tcp
 # et d�commentez les deux r�gles suivantes
 #accept tcp 120 tcp.dest=tcp.ftp-data
 #accept tcp 120 tcp.source=tcp.ftp-data

 # Si nous n'avons pas r�ussi � l'avoir avec les r�gles au dessus, donnons au
 # lien 10 minutes de plus.
 accept tcp 600 any

 # R�gles pour les trames UDP.
 #
 # Nous donnons d�s � pr�sent 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 r�seau sera g�n�ralement �tabli par un appel de la
 # biblioth�que de r�solution de nom (� moins que vous n'ayez mis toutes les
 # adresses que vous utilisez fr�quemment dans /etc/hosts, auquel cas vous
 # d�couvrirez d'autres probl�mes.)
 # Remarquez que vous ne devez pas donner une valeur de temps limite de
 # d�connexion plus courte que le temps suppos� que va mettre votre DNS pour
 # r�pondre. Sinon quand le lien original s'�tablit, il risque d'y avoir
 # une attente sup�rieure � celle qu'il y a entre les s�ries de trames initiales
 # avant qu'une trame destin�e � 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 requ�tes de nom de domaine entre deux ex�cutions de named.
 ignore udp udp.dest=udp.domain,udp.source=udp.domain
 # Activer le r�seau pour les requ�tes de domaine qui ne viennent pas de
 # named.
 accept udp 30 udp.dest=udp.domain
 accept udp 30 udp.source=udp.domain
 # Faire la m�me chose pour les diffusions de netbios-ns
 # REMARQUE : votre fichier /etc/services peut ne pas d�finir 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
 # emp�cher 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

 # R�cup�rer toutes trames que nous n'avons pas trait�es auparavant et donner 30
 # secondes de dur�e de vie � la connexion.
 accept any 30 any




 11..44..  FFiicchhiieerr ddiiaalldd..ddeeffss

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


 # D�finition des r�gles de protocole par d�faut
 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
 # D�finition des en-t�tes 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
 # D�finition des en-t�tes 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
 # D�finition de en-t�tes 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
 # D�finition des en-t�tes 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


 22..  MMaa ccoonnffiigguurraattiioonn


 �  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.


 33..  RReemmaarrqquueess


 �  Changez le nom du port s�rie /dev/ttyS1 ``ci-dessus'' de mani�re �
    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 � [email protected]