AndresSH@ctv.es
pon/poff
ou
ppp-on/ppp-off
, vers un serveur de proxy/firewall, avec diff�rentes
connexions � l'Internet utilisant diff�rents FAIs.
Ce document pr�sente quelques sc�narios typiques permettant de commencer sans douleur
� utiliser Diald.
Ces sc�narios 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 diff�rentes
connexions � l'Internet utilisant diff�rents FAIs.
Les sc�narios suivants seront trait�s dans ce document :
Dans les versions ult�rieures de ce document, d'autres sc�narios seront ajout�s, comme la possibilit� d'avoir plusieurs instances de Diald, l'utilisation des lignes ISDN (RNIS en France) ainsi que des lignes utilis�es 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 pr�sentait un exemple de connexion � un FAI en utilisant un sch�ma
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 utilis�s comme point de d�part � la mise en route de Diald. Pour obtenir des performances optimales et conna�tre tous les attributs des programmes il est n�cessaire que vous lisiez toute la documentation de ceux-ci et que vous reconfiguriez les fichiers d'exemples donn�s ici.
Enfin, selon la distribution de Linux que vous utilisez, les fichiers de configuration peuvent se trouver dans diff�rents r�pertoires. Si vous trouvez un des fichiers pr�sent�s ici dans un autre r�pertoire que celui sp�cifi�, je vous demande de me le faire savoir.
La version la plus r�cente de ce document peut �tre trouv�e 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
.
Je veux remercier les personnes qui m'ont aid� � mettre en place et � faire tourner mon premier Diald gr�ce � 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 s�r, toutes les personnes qui ont d�velopp� et d�veloppent Diald pour nous.
Ce document est Copyright © 2000 Andres Seco
et est libre. Vous pouvez
le distribuer sous les termes de la Licence Publique G�n�rale 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 fran�ais 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 d�terminer si vous voulez suivre les instructions donn�es 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 EFFECTU�ES EN SE BASANT SUR LES INFORMATIONS CONTENUES DANS CE DOCUMENT.
Bien s�r, je suis ouvert � tout type de suggestions et � toutes corrections concernant le contenu de ce document.
En quelques mots, Diald cr�e une nouvelle interface r�seau et la d�finit comme
�tant la passerelle par d�faut. Cette interface n'est pas r�elle (dans la
documentation originale elle est appel�e proxy interface
). Diald surveille
cette interface et quand un paquet arrive, cr�e une connexion ppp
, attend
qu'elle soit �tablie et d�finit cette nouvelle interface ppp
(en g�n�ral
ppp0
) comme �tant la passerelle par d�fault.
Diald surveille l'interface pour savoir quels paquets ont-�t� re�us par
l'interface ainsi que leur type. Cela lui permettra de d�cider s'ils seront
destin�s � �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 apr�s la transmission du paquet.
En d�finitive, s'il n'y a plus de trafic et que la dur�e de vie du dernier paquet est �coul�e, Diald fermera le lien.
Vous pouvez contr�ler 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 pr�c�de n'est valide que pour les versions de Diald sup�rieures � la
0.16.5 (la derni�re version, au moment o� ce document est �crit, est la 0.99.3),
mais les derni�res versions incluent des attributs suppl�mentaires comme une
liste d'utilisateurs autoris�s, un d�compte du temps avanc�, un meilleur support des
lignes ISDN, de meilleures performances gr�ce � l'utilisation (� la place de slip
) du device
ethertap
comme proxy (cela se comporte comme une interface r�seau qui
lit/�crit au travers d'une socket en lieu et place d'un vrai p�riph�rique
r�seau), la sauvegarde des connexions et d'autres
fonctions.
Quand vous vous connectez � un Fournisseur d'Acc�s Internet, vous devez en g�n�ral donner votre nom d'utilisateur et votre mot de passe. Cela peut �tre fait en utilisant plusieurs m�thodes ; la m�thode que vous utilisez en pratique est d�termin�e par votre fournisseur.
En plus des trois possibilit�s expos�es, vous pouvez utiliser un lien sans authentification (en g�n�ral quand vous contr�lez �galement l'autre bout de la ligne).
En v�rit� il n'y a pas de m�thode canonique pour l'authentification aupr�s d'un FAI lors de l'acc�s � l'Internet.
L'identification est faite avant le lancement de pppd
, et c'est le logiciel
qui num�rote, en g�n�ral chat
, qui envoie le nom d'utilisateur et le mot de
passe. Ces donn�es sont envoy�es sous forme de texte brut, donc cette m�thode ne
doit pas �tre consid�r�e comme s�re.
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_Num�ro_De_T�l�phone_
CONNECT \d\c
ogin _Nom_d_Utilisateur_
assword _Mot_De_Passe_
Les deux derni�res lignes d�finissent le nom d'utilisateur et le mot de passe et quand les envoyer (apr�s avoir re�u 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 premi�re lettre de chaque mot, et donc de s'affranchir des probl�mes de majuscule/minuscule.
Supposons que ce script se nomme provider
, et qu'il soit enregistr� dans le
r�pertoire /etc/chatscript/
. Alors, vous pouvez le lancer avec :
/usr/sbin/chat -v -f /etc/chatscripts/provider
Si le fournisseur dont vous utilisez les services demande le protocole
d'authentification PAP, pendant la n�gociation LCP de PPP, ce dernier devra
l'utiliser. Quand, apr�s l'utilisation de
chat
, la connexion est �tablie, pppd
est lanc�. Dans ce sc�nario, 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 tr�s s�r 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_
Si le fournisseur dont vous utilisez les services demande le protocole
d'authentification CHAP, pendant la n�gociation LCP de PPP, ce dernier devra
l'utiliser. Quand, apr�s
l'utilisation de chat
, la connexion est �tablie, pppd
est lanc�.
Dans ce sc�nario, 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 s�r 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 m�me FAI varie l'utilisation de ces protocoles, il n'est donc pas rare de d�finir le nom d'utilisateur et le mot de passe dans les deux fichiers.
Chaque fois que vous vous connectez � un FAI il est n�cessaire qu'un DNS (service de noms) soit configur�, comme cela votre ordinateur peut trouver les adresses IP associ�es � un nom de machine.
Les adresses IP de votre serveur DNS sont plac�es dans le fichier
/etc/resolv.conf
.
Dans le cas d'un ordinateur isol� se connectant � l'internet, ce fichier contient g�n�ralement 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 g�n�ralement 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 r�solution 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 trouv�e dans le DNS-Howto :
http://www.freenix.org/unix/linux/HOWTO/DNS-HOWTO.html
.
Au moment de configurer Diald pour connecter votre ordinateur � votre FAI, il est n�cessaire de faire ce qui suit :
/etc/resolv.conf
).
http://www.freenix.org/unix/linux/HOWTO/PPP-HOWTO.html
,
http://www.freenix.org/unix/linux/HOWTO/Modems-HOWTO.html
et
http://www.freenix.org/unix/linux/HOWTO/Serial-HOWTO.html
./etc/ppp/pap-secrets
et
/etc/ppp/chap-secrets
en y mettant votre nom d'utilisateur et votre mot
de passe comme d�crit plus haut.
Et enfin, pour Diald il faut :
/etc/diald/diald.options
pour la version 0.16.5, et
/etc/diald/diald.conf
pour les versions plus r�centes).
/etc/diald/standard.filter
, ou
mieux, laisser ce fichier tel quel, et en modifier une copie que vous pouvez
appeler /etc/diald/personal.filter
.
/etc/diald/diald.connect
qui doit avoir les droits d'ex�cution de
root) et le fichier d'instruction de chat
(/etc/chatscripts/provider
) qui sera utilis� par le pr�c�dent.
/etc/diald/ip-up
et /etc/diald/ip-down
) si vous
voulez utiliser cette possibilit�. Les deux scripts doivent avoir les droits
d'ex�cution de root.
/etc/diald/addroute
et /etc/diald/delroute
). Tous les
deux doivent avoir les droits d'ex�cution de root. Cette �tape n'est pas
n�cessaire si vous n'utilisez qu'une seule instance de Diald.
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 d�marrage de l'ordinateur sont mis
en place au moment de l'installation du paquetage dans les r�pertoires
/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
red�marrer (« /etc/init.d/diald restart
» pour une Debian et
« /etc/rc.d/init.d/diald restart
» pour une RedHat).
Dans ce fichier d'exemple vous devez v�rifier :
device
;
speed
;
pppd-options
;
restrict
;
ip-up
et ip-down
. Options
ip-up
et ip-down
;
addroute
et delroute
:
options addroute
et delroute
. En g�n�ral il n'est pas n�cessaire 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 ;
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 r�duit les performances
#debug 31
# Nous utilisons PPP comme encapsulateur
mode ppp
# L'adresse IP locale (cette adresse sera automatiquement remplac�e 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 remplac�e
# automatiquement par l'adresse IP du serveur distant qui re�oit notre appel).
remote 127.0.0.4
# Masque de sous-r�seau pour le lien vers le WAN
# (Wide Area Network -- r�seau non local).
netmask 255.255.255.0
# L'adresse IP sera allou�e dynamiquement au d�but 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 performances
# d'� peu pr�s 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 d�faut.
defaultroute
# Scripts pour �tablir les routes personnalis�es.
#addroute "/etc/diald/addroute"
#delroute "/etc/diald/delroute"
# Scripts � ex�cuter une fois que le lien est �tabli et pr�t, ou une fois que le
# lien est d�truit et ferm�. Dans les versions 0.9x de Diald, il existe l'option
# ip-goingdown qui peut �tre utilis�e au moment o� le lien va �tre d�truit mais
# qu'il est encore actif.
ip-up /etc/diald/ip-up
#ip-down /etc/diald/ip-down
# Scripts utilis�s pour connecter ou d�connecter l'interface.
connect "/etc/diald/diald.connect"
#disconnect "/etc/diald/diald.disconnect"
# Utiliser un verrou UUCP pour signaler que le p�riph�rique 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 conna�tre 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 pass�es � pppd.
# Ces options peuvent �tre incluses dans le fichier /etc/ppp/options. Elles
# seront consid�r�es comme options par d�faut de pppd, mais si vous avez
# d'autres besoins de configurations pour Diald, dans le cas o� vous avez
# plusieurs instances, vous devez p�ciser ici
# noauth - ne pas demander d'authentification au serveur distant.
# "Infov�a 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 appara�tre avant les filtres.
# La commande restrict est exp�rimentale 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
# r�centes.)
# Exemple : utilisation uniquement la nuit entre lundi et vendredi et toute la
# journ�e les samedi et dimanche.
restrict 8:00:00 18:00:00 1-5 * *
down
restrict * * * * *
# Pas de consid�rations sp�ciales sur la tarification (le nombre de secondes
# au d�part comprises dans le co�t, l'unit� de tarification en secondes, temps
# en secondes pour tester s'il faut d�truire le lien)
impulse 160,0,0
# Si c'est tarif� � la minute et que les 10 premi�res seront toujours compt�es :
#impulse 600,60,10
# Filtres standards
#include /etc/diald/standard.filter
# Ou filtres personnels
include /etc/diald/personal.filter
Vous devez modifier ce fichier avec beaucoup de pr�cautions. Il est utilis� pour d�cider quand et pourquoi il faut �tablir la connexion, la maintenir, la d�truire ou ignorer les paquets en fonction du type de trafic.
En g�n�ral le fichier de filtres standard de Diald convient pour la plupart
des cas mais il peut s'av�rer trop ou au contraire pas assez restrictif dans certaines
situations. Le fichier personal.filter
que nous pr�sentons a subi quelques
corrections par rapport � l'original de la version 0.16.
Dans les versions futures de ce document, d'autres exemples comment�s plus restrictifs seront inclus.
# /etc/diald/personal.filter
# Les r�gles de filtrage pr�sent�es ici sont les m�mes 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 r�gles de filtrages assez compliqu�es
# (Ce sont celles 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.
ignore icmp any
#------------------------------------------------------------------------------
# R�gles pour les trames TCP.
#------------------------------------------------------------------------------
# Commentaires g�n�raux sur cet ensemble de r�gles :
#
# En g�n�ral nous souhaitons ne 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�es.
# 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�es.
# 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 rejeter 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 une liaison qui se cr�e et se coupe � chaque document.
#
# En dehors de WWW, l'utilisation la plus courante de TCP concerne les
# connexions de longue dur�e 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. Cela 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, 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 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 (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, m�me apr�s que c'est 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
# 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 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 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
# R�gles pour les trames UDP.
#
# Nous donnons d�s � pr�sent un temps limite aux requ�tes de domaine puisque
# nous voulons seulement qu'elles �tablissent le lien, pas qu'elles le maintiennent
# pour un long moment.
# Cela 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 les trames que nous n'avons pas trait�es auparavant et donner 30
# secondes de dur�e de vie � la connexion.
accept any 30 any
Le fichier /etc/diald/diald.connect
(il doit avoir les droits
d'ex�cution) :
/usr/sbin/chat -f /etc/chatscripts/provider
Le fichier /etc/chatscripts/provider
. Dans ce fichier d'exemple vous
devez modifier le num�ro de t�l�phone � appeler (le 0123456789
) :
ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE"
ABORT "NO ANSWER"
"" ATZ
OK ATDT0123456789
CONNECT \d\c
Il doit avoir les droits d'ex�cution.
Ce script peut �tre utilis� pour de nombreuses t�ches (synchronisation, envoi des messages en attente, r�cup�ration 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
Il n'est pas rare qu'un ordinateur isol� ne se connecte pas qu'� un unique r�seau. Il est courant de se connecter � diff�rents r�seaux ou � l'Internet par le biais de diff�rents FAI. Dans ce cas il peut �tre aga�ant 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.
Si le progamme avec lequel vous lisez votre courrier utilise un Agent de
Transfert de Messages (MTA en anglais) avec un h�te 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
v�rifient en g�n�ral si la bo�te de r�ception 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 param�tre dans les
fichiers de configuration de Smail
en un fichier simple gr�ce auquel tous
les messages externes seront envoy�s � un serveur smtp
relais. Si vous
utilisez un autre MTA sur votre syst�me, vous pouvez m'envoyer les changements
n�cessaires 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.
En tout premier lieu vous devez cr�er un sous-r�pertoire � /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-r�pertoires contenant le jeu de fichiers n�cessaire � la configuration
de la connexion chez chaque FAI.
Le script suivant cr�e ce r�pertoire et y met les fichiers de configuration actuels de Diald, chat, pppd et Smail. Ces derniers seront utilis�s comme mod�les 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
Le script suivant vous aidera � copier la configuration qui sert de
mod�le vers un nouveau r�pertoire, pour la modifier dans l'optique d'une nouvelle
connexion � un FAI ou � un r�seau. Ce script
(/etc/diald/providers/newdialdprovider/
) prendra comme param�tre le nom
du FAI ou du r�seau.
#!/bin/sh
#Fichier /etc/diald/providers/newdialdprovider
mkdir /etc/diald/providers/$1
cp /etc/diald/providers/setup/* /etc/diald/providers/$1
� pr�sent vous pouvez modifier, en fonction de vos besoins, les fichiers
nouvellement cr��s dans /etc/diald/providers/providername
, tout en
gardant � l'esprit que providername
est le param�tre pass� au script
newdialdprovider
.
Pour terminer, ce script vous permettra de changer les fichiers de configuration
de Diald pour pouvoir vous connecter � un autre FAI ou � un autre r�seau.
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 report�e 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'arr�te
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
Connecter un r�seau priv� � l'Internet avec un serveur d�di� qui g�re le routage des paquets � partir du r�seau local vers l'Internet tout en proposant des services de proxy/cache et la s�curit� d'un firewall est un th�me complexe qui va au-del� du but de ce document. Il existe d'autres « Howto » qui expliquent ces sujets de mani�re beaucoup plus compr�hensible. Vous trouverez, � la fin de ce document, une liste de liens et de r�f�rences vers ces documents.
Ici, nous nous contentons de configurer Diald en supposant que l'ordinateur
fait d�ja du masquage d'adresses IP (IP-Masquerading), dispose d'un proxy
tel que Squid, d'une connexion � un FAI correctement configur�e
et que la s�curit� des acc�s 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 r�gles pour le
masquage/le filtrage/l'acc�s, � chaque fois que le jeu d'interfaces change, donc
quand l'interface ppp0 est �tablie et qu'elle est d�truite. De bons endroits pour
faire cela sont les scripts ip-up
et ip-down
de pppd.
Avec Debian il vous suffit d'installer le paquetage ipmasq et de dire, au
moment de la configuration, que vous voulez changer les r�gles de mani�re
synchrone � pppd.
Des scripts seront cr��s dans les r�pertoires
/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 cr�e une configuration simple qui est valable dans la plupart des
cas ; vous pouvez le personnaliser � l'aide des fichiers de r�gles de
/etc/ipmasq/rules
.
La seule correction � faire apr�s avoir install� ce paquetage est de modifier le
moment du lancement du script ipmasq en effa�ant le lien symbolique contenu
dans le r�pertoire /etc/rcS.d
et en en cr�ant un nouveau dans
/etc/rc2.d
apr�s S20diald
. � pr�sent, quand ipmasq
est
ex�cut� pour analyser les interfaces, s10
existe d�j�. 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.
Cet exemple nous vient de M. Cornish Rex,
troll@tnet.com.au
.
Les commandes d'ip-masq et du contr�le 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 r�seau 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
# cr�e 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
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
compl�tement 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 appara�t. Si vos exigences en mati�re de
s�curit� sont assez �lev�es, il peut s'av�rer 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.
Pour �crire ce document j'ai utilis� les versions suivantes de diald :
Et les versions suivantes de pppd :
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 tr�s stable, mais bien s�r, les versions plus r�centes ont de nombreuses fonctions int�ressantes.
Les informations originales, sources de ce document, peuvent �tre trouv�es
dans les pages de manuel de diald
, diald-examples
, diald-control
,
diald-monitor
, dctrl
, pppd
, chat
, ainsi que dans les
informations contenues dans les r�pertoires de /usr/doc
et sur les
pages web de ces paquetages :
http://diald.sourceforge.net/
ftp://diald.sourceforge.net/pub/diald/
http://diald.unix.ch
http://www.loonie.net/ erics/diald.html
ftp://cs.anu.edu.au/pub/software/ppp/
http://www.p2sel.com/diald
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 trouv�e �
http://www.geocrawler.com
.
Il existe �galement de nombreux documents RFC (Request For Comments
-- demande de commentaires) qui d�finissent la mani�re dont les lignes
encapsul�es de PPP et les protocoles associ�s (LCP, IPCP, PAP, CHAP, ...)
doivent fonctionner. Vous pouvez trouver ces documents dans le r�pertoire
/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 :
http://www.freenix.org/unix/linux/HOWTO/DNS-HOWTO.html
http://www.freenix.org/unix/linux/HOWTO/Firewall-HOWTO.html
http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html
http://www.freenix.org/unix/linux/HOWTO/IPCHAINS-HOWTO.html
http://www.freenix.org/unix/linux/HOWTO/Modems-HOWTO.html
http://www.freenix.org/unix/linux/HOWTO/NET4-HOWTO.html
http://www.freenix.org/unix/linux/HOWTO/PPP-HOWTO.html
http://www.freenix.org/unix/linux/HOWTO/Serial-HOWTO.html