FUNIX

Mettez un manchot dans votre PC



Présentation  |  Solution portable   |  Surfer  |  Gérer le mail et les news   |   Mettre à jour sa page perso   |  Estimer le coût de ses communications |   Connaître la vitesse de connexion  ]

Dernière modif 15.7.02

Configuration PPP (cas de plusieurs providers)

Configuration Internet

Présentation

Cette page a pour objet de vous expliquer comment créer des scripts de connexion PPP dans le cas où vous disposez de plusieurs FAI, par exemple dans le cas où vous vous testez plusieurs FAI gratuits.
Dans un premier temps, j'explique comment créer des scripts permettant de choisir le fai chez qui on veut se connecter, puis j'explique comment gérer le mail en ayant plusieurs emails dispersés chez plusieurs fai, les news avec plusieurs serveurs de news, comment surfer, mettre à jour sa page perso.

Dans un premier temps avant de commencer, vous devez connaître:

- Le numéro de téléphone de votre fournisseur d'accès
- Votre nom de compte chez votre fournisseur et votre mot de passe
- L'adresse IP du serveur DNS primaire de votre fournisseur (éventuellement)
- L'adresse IP du serveur DNS secondaire de votre fournisseur (éventuellement)
 

NOTE: Je propose dans cette page une solution que j'espère la plus portable possible, pour cela vous devez avoir la même architecture PPP que décrite dans ma page connexion PPP à la main.

Voir ma remarque importante sur la page connexion PPP "à la main".

Solution portable

On supppose que vous avez les fichiers de connexion PPP tel que décrits dans la page connexion PPP à la main. Je présente une config avec libertysurf et fnac qui se contente d'un login et d'un mot de passe, et free et waika9 qui nécessitent une identification par CHAP. Ce script ne gère pas les identifications PAP pour le moment.

Au cas où  vous avez un serveur DNS qui tourne sur votre machine, créer le fichier /etc/named contenant :

        };
};
zone "." {
        type hint;
        file "named.ca";
};
zone "kervao.fr"{
        type master;
        file "kervao.fr";
        notify no;
};
zone "0.0.127.in-addr.arpa"{
        type master;
        file "named.local";
};

On va modifier le fichier /etc/ppp/ppp-on comme suit:

#!/bin/bash
#

# définition du nom de domaine de la machine qui peut être totalement différent de celui du FAI
MON_DOMAINE=kervao.fr

# définition de l'interface ppp0, si vous en avez plusieurs,
# vous pouvez faire en sorte de la  rentrer en argument
DEVICE=ppp0

# définition du fichier contenant les paramètres de connexion
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer

# définition des options à passer à pppd
OPTIONS="modem defaultroute debug"
OPTIONS_DEF="-detach noauth lock crtscts asyncmap 00000000"
OPTIONS_CHAP="noauth ipcp-accept-remote ipcp-accept-local idle 180"

if [ "$1" = "" ] ; then
        ######################################################################
        ##### Pas de paramètre indiqué : on utilise la connexion par defaut
        ######################################################################
        CONNEXION=fnac
else
        CONNEXION=$1
fi

# à rajouter si vous voulez que sendmail soit reconfiguré à chaque connexion en fonction du FAI
# voir page sendmail
export $CONNEXION

############################################################################
##### Initialisations diverses en fonction de la connexion désirée
############################################################################
#
case $CONNEXION in
        fnac)
                ####################
                # fnac  ou mageos      #
                ####################
                echo Tentative de connexion sur Fnac
                TYPE=
                REMOTE_NAME=$DEVICE
                UTIL=login-chez-fnac
                MOTP=password-en-clair
                TELE=0298304698
                # en cas d'attribution automatique d'adresses IP des serveurs DNS du fai
                # commentez les lignes DNS et DNS2
                DNS="194.149.160.9 194.149.160.1"
                # si vous avez un serveur DNS décommenter la ligne suivante
                # DNS2=""194.149.160.9; 194.149.160.1;"
                ;;

        liberty)
                ####################
                # libertysurf      #
                ####################
                echo Tentative de connexion sur LibertySurf
                TYPE=
                REMOTE_NAME=$DEVICE
                UTIL=login-chez-liberty
                MOTP=password-en-clair
                TELE=0298304691
                # en cas d'attribution automatique d'adresses IP des serveurs DNS du fai
                # commentez les lignes DNS et DNS2
                DNS="194.149.160.9 194.149.160.1"
                 # si vous avez un serveur DNS décommenter la ligne suivante
                # DNS2="194.149.160.9; 194.149.160.1;"
                ;;

        free)
                ####################
                # free             #
                ####################
                echo Tentative de connexion sur Free
                TYPE=CHAP
                REMOTE_NAME=proxad
                UTIL=login-chez-free
                MOTP=password-en-clair
                TELE=0860912006
                # en cas d'attribution automatique d'adresses IP des serveurs DNS du fai
                # commentez les lignes DNS et DNS2
                DNS="217.27.32.5 217.27.32.6"
                # si vous avez un serveur DNS décommenter la ligne suivante
                # DNS2="217.27.32.5; 217.27.32.6;"
                ;;

 waika9)
                ####################
                # waika9           #
                ####################
                echo Tentative de connexion sur Waika9
                TYPE=CHAP
                REMOTE_NAME=proxad
                UTIL=login-chez-waika9
                MOTP=password-en-clair
                TELE=0860912006
                # en cas d'attribution automatique d'adresses IP des serveurs DNS du fai
                # commentez les lignes DNS et DNS2
                DNS="217.27.32.5 217.27.32.6"
                # si vous avez un serveur DNS décommenter la ligne suivante
                # DNS2="217.27.32.5; 217.27.32.6;"
                ;;

        *)
                echo "Nom de connexion inconnu $CONNEXION ??"
                echo "Vous avez le choix entre free, liberty, waika9 et fnac"
                exit 0
                ;;
esac

###########################################################################
#### Création du fichier /etc/resolv.conf
#### Commenter cette partie en cas d'attribution automatique des adresses
#### IP des serveurs DNS du fai
###########################################################################
echo "search $MON_DOMAINE" >/etc/resolv.conf
# si vous avez un serveur DNS local  décommenter la ligne suivante
# echo "nameserver 127.0.0.1" >> /etc/resolv.conf
for dns in $DNS ; do
        echo "nameserver $dns" >>/etc/resolv.conf
done

###########################################################################
#### Création du fichier /etc/named.conf
#### A décommenter en cas de serveur DNS local et
#### de NON atrribution des adresses IP des serveurs DNS du FAI
##########################################################################
# echo "options {">/etc/named.conf
# echo "        directory \"/var/named\";">>/etc/named.conf
# echo "        forwarders{">>/etc/named.conf
# for dns in $DNS2 ; do
#                 echo "        $dns" >>/etc/named.conf
# done
# cat /etc/named >> /etc/named.conf

###########################################################################
##### Initialisation du fichier /etc/ppp/ppp-on-dialer
###########################################################################
cat <<END_OF-DATA > /etc/ppp/ppp-on-dialer
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT$TELE'
'CONNECT' ''
END_OF-DATA

###########################################################################
##### Lancement de la connexion
###########################################################################

if [ $TYPE = "CHAP" ] ; then
echo "$UTIL   *       $MOTP" >/etc/ppp/chap-secrets
        rm -f /etc/ppp/pap-secrets
        touch /etc/ppp/pap-secrets
        chmod 600 /etc/ppp/pap-secrets
        chmod 600 /etc/ppp/chap-secrets
        PPPOPTIONS="$OPTIONS $OPTIONS_CHAP remotename $REMOTE_NAME user $UTIL"
exec /usr/sbin/pppd noauth /dev/ttyS0 115200 $PPPOPTIONS  ipparam $CONNEXION \
        connect "/usr/sbin/chat -v -f $DIALER_SCRIPT"

else
        rm -f /etc/ppp/chap-secrets
        touch /etc/ppp/chap-secrets
        chmod 600 /etc/ppp/pap-secrets
        chmod 600 /etc/ppp/chap-secrets
        PPPOPTIONS="$OPTIONS $OPTIONS_DEF ipparam $CONNEXION"
        #######################################################################
        ##### Complément du fichier /etc/ppp/ppp-on-dialer
        #######################################################################
        cat <<END_OF-DATA >> /etc/ppp/ppp-on-dialer
'ogin:' '$UTIL'
'ord:' '$MOTP'
'TIMEOUT' '5'
'~--' ''
END_OF-DATA

exec /usr/sbin/pppd $PPPOPTIONS /dev/ttyS0 115200 \
                    connect "/usr/sbin/chat -v -f $DIALER_SCRIPT"
fi

ATTENTION: Ne pas mettre d'espace ou de tabulation au niveau du 'ogin:', jusqu'à END_OF-DATA.

NOTE:    - ipparam sert à passer un argument à /etc/ppp/ip-up le script qui sera appelé à l'établissement de la connexion, dans le cas présent on lui passe le nom du FAI utilisé, il servira après pour lancer certaines actions dans ip-up suivant le type de FAI. Pour avoir une idée de l'utilité de ce paramètre, voir la page sendmail au paragraphe configurer sendmail en fonction du FAI utilisé.
                    - En cas d'attribution automatique des serveurs DNS, il n'est pas nécessaire de définir la variable DNS, le fichier /etc/resolv.conf sera automatiquement renseigné.

Voici maintenant à quoi ressemble le fichier /etc/ppp/ip-up

#!/bin/bash

# This file should not be modified -- make local changes to
# /etc/ppp/ip-up.local instead
# l'argument 4 correspond à l'adresse IP attribuée par le FAI
# l'argument 6 correspond est passé en argument de la commande pppd juste
# après ipparam, voir /etc/ppp/ppp-on
ADRESSE=$4
CONNEXION=$6

# écriture des paramètres de connexion dans un fichier de log
echo " " >> /var/log/connex
echo $1 >> /var/log/connex
echo "Connecté à $CONNEXION adresse $4 le " >> /var/log/connex
date >> /var/log/connex
nslookup $4|grep Name:|sed 's/Name:*//' >> /var/log/connex

# si serveur DNS local

# en cas d'attribution automatique d'adresses IP des serveurs DNS
# on décommente les lignes suivantes

#rm -f /etc/named.conf
#echo "options {">/etc/named.conf
#echo "        directory \"/var/named\";">>/etc/named.conf
#echo "        forwarders{">>/etc/named.conf
#cat /etc/ppp/resolv.conf| grep nameserver | awk -F" " '{if ($2 != "127.0.0.1") {print $2";"}}' >>/etc/named.conf
#cat /etc/named >> /etc/named.conf

# jusqu'à ici

# Pour serveur DNS local, attribution auto ou pas
# on relance le serveur en décommentant la ligne suivante
# /etc/rc.d/init/named restart

# on envoie le courrier
# attention vous ne pourrez envoyer le courrier
# sur un serveur SMTP d'un fai que si vous êtes
# connecté avec ce fai
# /usr/sbin/sendmail -q -v >> /var/log/connex

# on récupère le courrier
# root doit posséder un .fetchmailrc
# relevant les boîtes aux lettres de tout le monde
 /usr/bin/fetchmail -a

exit 0

A tout honneur, tout seigneur, les grandes lignes du script ppp-on m'ont été communiquées par Bernard Delechamp j'ai adapté ensuite. Pour appeler ce script, c'est très simple, il suffit de taper:

/etc/ppp/ppp-on liberty

A la place de liberty, dans mon exemple, on peut aussi bien mettre fnac, waika9 et free.

Servez vous ensuite de sudo, pour spécifier les utilisateurs qui pourront lancer une connexion PPP, ils taperont ensuite:

sudo /etc/ppp-on liberty

Maintenant si vous voulez que sendmail se reconfigure suivant le fai utilisé (pour pouvoir envoyer des emails), allez faire un tour sur la page configurer sendmail en fonction du FAI utilisé

Si pour une raison x ou y votre fichier /etc/resolv.conf n'est pas renseigné automatiquement en cas d'atribution automatique des adresses IP de votre serveur DNS une fois la connexion établie, rajoutez les lignes suivantes dans votre fichier /etc/ppp/ip-up  en début de fichier (après le #!/bin/bash tout de même)

rm -f /etc/resolv.conf
echo "search kervao.fr" > /etc/resolv.conf
# en cas de serveur DNS local, décommentez la ligne suivante
# echo "nameserver 127.0.0.1"
tail --lines 25 /var/log/messages | grep DNS |  awk -F" " '{print "nameserver "$9}' >> /etc/resolv.conf
 

Surfer

Pour surfer rien de plus il suffit dans la configuration de netscape de ne pas spécifier de proxy (à moins que ce soit un proxy local) mais de choisir la connexion directe à internet, et là quelque soit le fai, vous surferez sur le web.

Gérer le mail et les news

Pour le mail c'est toujours plus compliqué, vous avez deux solutions, la première basique:

- créer autant d'utilisateur que vous avez de fai, pour vous y retrouvez chacun ayant pour nom celui du provider. Configurer maintenant Netscape ou votre navigateur préféré avec comme serveur de mail entrant le pop du fai, comme serveur de mail sortant le smtp du fai, et comme serveur de news le serveur nntp du fai.
Avantage de cette solution vous testez à fond les possibilités du provider, inconvénient si vous être seul utilisateur, vous ne récupérez pas vos mails chez d'autres providers ou pop gratuit (comme ifrance), et tout se retrouve dispersé dans les différentes boîtes aux lettres de vos utilisateurs.

Autre solution plus "sioux":

- vous continuez à utilisateur votre login habituel sur votre machine, vous configurez Netscape ou votre navigateur préféré pour ne pas utiliser de proxy mais une connexion directe, pour utiliser movemail (dans le cas de Netscape) ou le serveur pop que vous aurez installer sur votre système pour récupérer le courrier et sendmail pour le départ. Comme ça quelque soit le provider la configuration de Netscape reste la même. Vous êtes évidemment obligé de donner un email qui apparaitra dans les mails et posts sortants, on verra plus bas comment arranger ça, mettez celui que vous utilisez le plus courramment.
Pour les news leafnode va les chercher sur le serveur nntp du provider qui est défini dans le fichier config (/etc/leafnode par défaut). Il faudrait donc modifier le script ppp-on pour mettre à jour config suivant le fai utilisé, puis récupérer les posts dans la file d'attente pour changer l'email, fonction non testée. Si cette idée vous rebute, sachez que vous pouvez très bien accèder au lecteur de news de free quelque soit le provider utilisé (à condition d'avoir un compte chez eux), c'est la solution que j'ai adoptée.
Pour le mail entrant ça pose pas de problème, chaque utilisateur dispose dans sa homedirectory d'un fichier .fetchmailrc, il suffit de l'étoffer un peu en y notant tous les serveurs pop où vous êtes sensés récupérer du mail:

set logfile /var/log/fetchmail.log
poll pop.fai.fr protocol pop3
 user login-fai there with password password-fai is olivier here

poll pop.fnac.net protocol pop3
 user login-fnac there with password password-fnac is olivier here

poll pop.free.fr protocol pop3
 user login-free there with password password-free is olivier here

poll pop.ifrance.com protocol pop3
 user login-ifrance there with password password-ifrance is olivier here

poll pop.fnac.net protocol pop3
 user login2-fnac there with password password2-fnac is veronique here

poll pop.ifrance.com protocol pop3
 user login2-ifrance there with password password2-ifrance is veronique here

poll pop.libertysurf.fr protocol pop3
 user login-liberty there with password password-liberty is olivier here

Vous constaterez qu'en se connectant avec un fai vous pouvez quand même récupérer le courrier chez les serveurs pop des autres fai, ce qui est super pratique.

Vous constaterez qu'on peut aussi en profiter pour récupérer le courrier d'autres utilisateur du système, dans l'exemple olivier est mon compte utilisateur, veronique ma moitié, je récupére son courrier et je le redirige vers sa boîte aux lettres.
Petit rappel vous récupérez le courrier en tapant en tant que simple utilisateur (après avoir défini un .fetchmailrc adéquat) par:

fetchmail -a

Pour automatiser la chose, au moment de la connexion fetchmail peut être appelé automatiquement dans le fichier /etc/ppp/ip-up (voir exemple plus haut), il faut alors que root possède un .fetchmailrc dans sa home directory (/root) capable de récupèrer le courrier de tous les utilisateurs.

Pour le mail sortant, maintenant que vous avez configuré Netscape pour utiliser sendmail, c'est ce dernier qui va se charger de relayer le courrier vers le fai.
Une chose est claire, vous ne pouvez pas vous connecter chez un fai et envoyez vos mails chez le serveur smtp d'un autre, les serveurs smtp des fai sont configurés de telle sorte d'interdire de relayer le courrier si celui-ci n'appartient pas au domaine du serveur, ceux-ci pour éviter les spam. En clair à chaque connexion il faut reconfigurer sendmail pour "attaquer" le serveur SMTP correspondant au fai utilisé, pour cela n'oublier pas d'aller voir à la rubrique  configurer sendmail en fonction du FAI utilisé.

NOTE Voir également la page recevoir du courrier avec fetchmail/procmail pour la récupération du courrier et l'installation d'un serveur pop.

Mise à jour page perso

Pour info, je me connecte avec un fai gratuit quelconque et je peux accéder aux serveurs ftp d'autres fai  pour mettre à jour mes pages. C'est intéressant à savoir.
Pour info je me sers de ncftp pour mettre à jour mon site.

Estimer le coût de ses communications

Il est intéressant de pouvoir faire des stats sur ses communications passées durant le mois, pour cela lors de chaque connexion nous allons noter le FAI utilisé, l'heure de début et de fin de connexion dans un fichier particulier.

Dans le fichier /etc/ppp/ip-up présenté plus haut, vous allez rajouter la ligne suivante:

echo -n "$CONNEXION|"`date`"|">> /var/log/historique-connexion

A présent dans le fichier /etc/ppp/ip-down rajouter la ligne suivante:

date >> /var/log/historique-connexion

Cela va donner un fichier qui aura cette tête là:

fnac|Sat Jun 24 18:45:35 CEST 2000|Sat Jun 24 18:54:46 CEST 2000
liberty|Sat Jun 24 19:14:02 CEST 2000|Sat Jun 24 19:34:11 CEST 2000

Maintenant libre à vous de créer un petit programme pour mettre en forme tout ça. Je vous propose un programme en PHP3  (que j'ai volontairement renommé en .txt pour qu'il ne soit pas interprété) qui présentera les résultats sous forme d'une page HTML, comme ceci (les chiffres sont en minute):
 

FAI Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre
Fnac/Mageos 0 0 0 0 0 9.1833333333333 0 0 0 0 0 0
LibertySurf 0 0 0 0 0 6.15 0 0 0 0 0 0
Free 0 0 0 0 0 0 0 0 0 0 0 0
Freesbee 0 0 0 0 0 0 0 0 0 0 0 0
Total (min) 0 0 0 0 0 15.333333333333 0 0 0 0 0 0
Coût estimé (FHT) 0 0 0 0 0 2.1466666666667 0 0 0 0 0 0

Ce script PHP3 présente un défaut il ne gère pas le passage d'un mois à un autre, si vous vous connectez à cheval d'un mois à un autre (avec passage à minuit), la communication n'est pas prise en compte. De même pour  le coût comme j'appelle uniquement en heure creuse (0.14FHT la min), il n'y a pas de distinction de ce côté là (heure creuse, heure pleine), par ailleurs l'établissement de chaque appel est facturé  0.615FHT, ce n'est pas pris en compte.
C'est la première version du script, par ailleurs je ne suis pas une bête de programmation, je compte néanmoins l'améliorer, pour corriger notamment les défauts cités plus haut. Si vous trouvez un bug ou si vous avez des remarques au sujet de ce programme n'hésitez pas à m'en faire part.

Note Désolé j'ai pas encore converti mon script en euros, je vous laisse ce soin.

Connaître la vitesse de connexion

Si vous voulez connaître la vitesse de connexion, on va légèrement modifier le script ppp-on au niveau de :

###########################################################################
##### Initialisation du fichier /etc/ppp/ppp-on-dialer
###########################################################################
cat <<END_OF-DATA > /etc/ppp/ppp-on-dialer
'ABORT' 'BUSY'

On va rajouter

cat <<END_OF-DATA > /etc/ppp/ppp-on-dialer
'REPORT' 'CONNECT'
'ABORT' 'BUSY'

Maintenant au niveau de la commande chat, on va rajouter au lieu de :

"/usr/sbin/chat -v -f $DIALER_SCRIPT"

Ceci

"/usr/sbin/chat -v -f $DIALER_SCRIPT -r /tmp/report-file"

Attention, ces commandes apparaîssent deux fois dans le fichier. Maintenant lors d'une connexion, l'inscription suivante va s'inscrire dans le fichier /tmp/report-file :

Opening "/tmp/report-file"...
chat:  Jul 14 09:17:56 CONNECT 45333/ARQ/V90/LAPM/V42BIS
Closing "/tmp/report-file".

Ce fichier n'est pas écrasé mais incrémenté à chaque connexion. Il vous suffit à chaque début de connexion de jeter un coup d'oeil dedans pour voir à quelle vitesse vous êtes connectés.

Voici un petit script pour en extraire la vitesse:

#!/bin/bash
LINE=`fgrep CONNECT /tmp/report-file`
set $LINE none
echo $6 | awk -F "/" '{ print $1 }'

On peut faire en sorte que ce soit inscrit dans le fichier historique-connexion, pour cela en début de fichier ppp-on on va d'abord supprimer tout fichier /tmp/report-file en rajoutant:

rm -f /var/log/ChatReport

Copier le script d'extraction de la vitesse dans /etc/ppp et appelez le speed, donnez lui les droits 755. Maintenant apportez ces modifications dans le fichier ip-down, au lieu de :

date >>  /var/log/historique-connexion

On va écrire

echo -n "`date`|" >> /var/log/historique-connexion
echo "`/etc/ppp/speed`" >>  /var/log/historique-connexion

Voilà un extrait maintenant du fichier historique-connexion :

voonoo|Fri Jul 14 10:23:52 CEST 2000|Fri Jul 14 10:23:59 CEST 2000|45533
liberty|Fri Jul 14 10:26:18 CEST 2000|Fri Jul 14 10:26:42 CEST 2000|40000

Vous n'avez pas à modifier le script connex.php présenté plus haut qui fait des stats pour estimer le coût des communications.
 
 

[Retour page d'accueil FUNIX] [Retour haut de la page]