Mettez un manchot dans votre PC
Dernière modification 15.7.02
Personnellement je préfère masqdialer car on maîtrise la connexion, en plus on a le choix du FAI à utiliser, par contre son développement semble à l'abandon ce qui est dommage.
On considèrera l'adresse IP du réseau local comme étant 192.168.13.*, celle du serveur 192.168.13.1, il a pour nom asterix.
--------------------------------- réseau privé
|
|
PC sous
PC sous
Windows
Linux
|
internet
rpm -ivh c-mserver-0_5_5-4_i386.rpm
Ca va vous installer un exécutable mserver dans /usr/sbin, un répertoire de doc c-mserver-0.5.5 dans /usr/doc et un fichier de config mserver.conf dans /etc. Il va de plus configurer le démarrage pour que le serveur se lance au boot. Vous allez donc retrouver un fichier mserver sous /etc/rc.d/init.d avec cette tête là (avec des droits d'exécution) :
#! /bin/sh
# Copyright (c) 1995-1998 S.u.S.E. GmbH Fuerth, Germany.
# Original Author: Mike Klinkert
# New Author: Willi Eigenmann
# Modified to suit redhat distribution 22/06/1999
# chkconfig: 345 93 36
# description: Starts and stops the mserver \
#
used to provide Internet access.
# /etc/rc.d/init.d/mserver
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Check that mserver.conf exists.
[ -f /etc/mserver.conf ] || exit 0
case "$1" in
start)
echo "Starting mserver."
/usr/sbin/mserver
;;
stop)
echo -n "Shutting down
mserver: "
killproc /usr/sbin/mserver
echo
;;
restart|reload)
$0 stop
$0 start
;;
check|status)
echo -n "Checking for
mserver, pid is: "
pidof /usr/sbin/mserver
echo
;;
*)
echo "Usage: $0 {start|stop|restart|check}"
exit 1
;;
esac
exit 0
Par ailleurs les liens symboliques suivants sur le fichier /etc/rc.d/init.d/mserver sont créés automatiquement:
/etc/rc.d/rc0.d/K36mserver
/etc/rc.d/rc1.d/K36mserver
/etc/rc.d/rc2.d/K36mserver
/etc/rc.d/rc3.d/S93mserver
/etc/rc.d/rc5.d/S93mserver
/etc/rc.d/rc6.d/K36mserver
/etc/rc.d/rc4.d/S93mserver
tar xvfz c-mserver-0.5.5.tar.gz
Cela créé un répertoire mserver-0.5.5 dans lequel vous taperez :
./configure --sysconfdir=/etc
puis
make
Et enfin en tant que root
make install
Par défaut le serveur mserver se trouve sous /usr/local/bin. Pour un lancement automatique vous avez un fichier mserver se trouvant sous ./mserver-0.5.5/initscripts à copier sous /etc/rc.d/init.d, mais ce fichier est pas terrible je vous propose de créer plutôt le fichier mserver proposé plus haut par l'installation RPM et d'y adapter les chemins qui vont bien. Donnez lui les droits en exécution.
chmod 755 /etc/rc.d/init.d/mserver
Maintenant pour un lancement automatique à l'état de marche 3,4 et 5 :
chkconfig --level 345 mserver on
Et un arrêt aux autres états de marche
chkconfig --level 0126 mserver off
Pour configurer masqdialer, il suffit d'éditer et
de modifier
/etc/mserver.conf. Le fichier est créé
automatiquement avec l'installation RPM, avec l'installation avec tarball,
copier le fichier mserver.conf se trouvant ./mserver-0.5.5/mserver/
sous
/etc.
Voici les lignes importantes du fichier
# c-mserver config file
# Charles P. Wright
# cpwright@villagenet.com
# en clair ici, on indique ce quelles interfaces le daemon mserver
doit écouter en attente de demande de connexion
# vous allez mettre l'adresse IP de votre serveur linux, dans
mon exemple 192.168.13.1,
# le port indiqué 224 doit être cohérent avec
celui déclaré dans /etc/services (voir plus bas)
# 127.0.0.1 ne doit pas être changé, ça correspond
à la machine linux elle même
listen_on = "192.168.13.1:224,127.0.0.1:224"
(...)
# How many clients can we have waiting on the incoming queue before
they get
# locked out
# limitation du nombre de clients
slimit = 10
(...)
# If there is more than one client is one of them allowed to hangup
the
# connection?
# plusieurs clients peuvent-ils couper la connexion
multiclientkill = true
(...)
# What version of getstat should we use? pppdlock, netdev,
lockonly and
# exitcode are your choices if you are using PPP then you should
really use
# pppdlock. If you have a weird method of connecting use netdev.
If you want
# to check if a file simply exists then use lockonly. Exitcode will
execute a
# program and if it returns the value in goodcode then the link
will count as
# being up. pppdpid will record the pid of pppd when it connects
and ensures
# that that process is still a pppd.
# pppdlock correspond au fichier de lock de ppp
# stattype = pppdlock
# chez moi, en choisissant pppdlock je ne peux stopper la connexion
d'un client, j'ai choisi
stattype = lockonly
(...)
# What is the name of your interface that exists when and only when
you are
# connected? This can used for the stat check and it is used
for the netload
# feature. You can set this on a device by device basis.
# nom de l'interface ppp
netdev = ppp0
(...)
# What command should we use to check the link status? If the
link is good
# it should return 0, otherwise it should return a non-zero value.
This is used
# as the format string to snprintf, the %s will be replaced with
the checkhost
# which is defined below.
# commande à taper pour vérifier qu'on est bien connecté
linkcheck = "/bin/ping -c 1 %s"
(...)
# What host should we make sure is active when performing a linkcheck?
I
# suggest using an IP number instead of a hostname to expedite the
operation,
# this gets performed a lot and the longer it takes for it to happen
the more
# frustrated a user will get.
# machine de test à pinguer pour voir si on est connecté
checkhost = "194.149.160.9"
(...)
# What is the lockfile for your modem, dial out as normal and then
look in
# /var/lock
# En choisissant stattype=lockonly, on doit préciser le fichier
lock du modem
# pour ma part c'est celui-là (et non pas LCK..modem)
lockfile = "/var/lock/LCK..ttyS0"
(...)
# What machines are allowed to capture the modem?
# 127.0.0.1 correspond à votre machine linux (ne pas toucher
cette adresse),
# 192.168.13.* au préfixe des adresses IP de votre réseau
privé
capture_ipallow = "127.0.0.1:192.168.13.*"
# What machines are allowed to administer the server. I recommend
you make
# this a machine that only you have access to. The firewall
(localhost) is
# usually a good choice. You can disable this by setting it
to 0.0.0.0 (I am
# assuming no host will have that IP address).
# la machine qui peut administrer le serveur (par défaut
localhost)
admin_ipallow = "127.0.0.1"
# What users are allowed to administer the server. I would
choose your account
# but not root. Having the root password being transmitted
over the network
# can be a *really* bad thing. If you are using it on only
loopback it isn't
# as bad.
# comme son nom l'indique, franchement je vois pas trop l'intérêt
d'une telle commande
# pour moi l'admin de masqdialer se réduit à un vi
sur le fichier de config en tant que root
admin_userallow = "olivier"
# What machines are allowed to lock and unlock connections?
# qui a le droit de créer un fichier de lock et à
le virer
lock_ipallow="192.168.13.*:127.0.0.1"
# What users are allowed to lock and unlock connections?
# mettez les utilisateurs de votre réseau (éventuellement
*)
lock_userallow = "olivier,veronique"
(...)
# What file contains the username/password combinations. It
is in the format of
# /etc/passwd. You might want to choose something else as
your file since
# transmitting unix passwords over the network in the clear is a
bad thing.
# You can use the provided authgen utility to setup an authorization
file.
# si vous mettez en place une authentification par login/mot de
passe
# il faut indiquer ici le fichier qui va bien
authfile = "/etc/passwd"
# Should we use shadow passwords? This requires that you run
the daemon as
# root and that you use the account names in /etc/passwd.
This is probably
# not as good as a separate authorization file because the passwords
are being
# sent over the network, but it is convenient. If you use
this option the
# authfile will be ignored and the server will use the functions
in shadow.h!
# si vous avez mis en place les shadows passwd mettre true
shadow = true
(...)
# What script should we run just after a client connects?
# The argument is the client hostname
# ici c'est le script qui va être lancé quand le client
va se connecter
# sur le serveur linux (et non pas chez le FAI)
# j'ai laissé la valeur par défaut, à tout
hasard j'ai créé un fichier du
# même nom mais vide, cette option est très intéressante
à mon avis
clientup = "/usr/local/share/mserver/clientup"
# What script should we run just after a client disconnects?
# The argument is the client hostname
# script à appeler lors d'une déconnexion du poste
client du poste linux
# et non pas du FAI
# j'ai laissé la valeur par défaut, à tout
hasard j'ai créé un fichier du
# même nom mais vide
clientdown = "/usr/local/share/mserver/clientdown"
# What script should we run just after a user authenticates?
# The argument is the client hostname and username
#script à lancer lors de l'authentification sur le poste
linux
# j'ai laissé la valeur par défaut, à tout
hasard j'ai créé un fichier du
# même nom mais vide
authup = "/usr/local/share/mserver/authup"
# What script should we run just after a client unauthenticates?
# The argument is the cleint hostname and username
# j'ai laissé la valeur par défaut, à tout
hasard j'ai créé un fichier du
# même nom mais vide
authdown = "/usr/local/share/mserver/authdown"
# What script should we run after the link has been brought up?
# This can be specified on a per connection basis.
# The argument is the connection's name
# script à lancer quand une connexion PPP est établie,
le script
# standard est ip-up (voir page connexion
PPP à la main)
linkup = "/etc/ppp/ip-up"
# What script should we run right before the link has been intentionally
brought
# down?
# script à appeler juste avant la deconnexion,
prekill = "/etc/ppp/goingdown"
# What script should we run after the link has been intentionally
brought down?
# script à appeler juste après la déconnexion
du FAI
# traditionnellement ip-down (voir page connexion
PPP à la main)
linkdown = "/etc/ppp/ip-down"
(...)
# Which connection do you want mserver to auto-dial?
# comment this out if you don't want it to auto-dial.
# décommentez si on veut une connexion automatique
#autodial "VillageNet(Balder)"
# What are the names of our connections? The order that they
are listed
# is the order that LIST will use, the first one is the default
connection
# for some clients.
# on indique ici les connexion possibles
cname = "fnac,liberty"
# Actually Define our connections
# What is the command you use to bring up the connection, this can
be a script
# or you can call pppd directly.
# script à lancer pour lancer une connexion sur la fnac (voir
page connexion PPP avec
plusieurs FAI)
fnac_script = "/etc/ppp/ppp-on fnac"
# What IP addresses are allowed to manipulate this connection.
You are allowed
# up to 10 different masks separated by colons. You must either
use the real
# numbers or a '*' to match any in each quad. You must specify
all of the quads# that is '*' wouldn't work but '*.*.*.*' would.
# adresses IP des postes réseau autorisés à
se connecter avec la fnac
fnac_ipallow = "192.168.13.*:127.0.0.1"
# What users are allowed to dial out this connection? "*" or "" will
allow any
# user to dial out, otherwise provide a comma separated list of
users.
# This is a string that is displayed when CINFO is called, it isn't
actually
# used for any dialing, but just for cosmetics. The clients
may eventually
# depend on this so I suggest setting it.
# ch'tit commentaire
fnac_info = "Connexion à la fnac"
# The internal kill method is much more reliable unless you have
something wierd# you should really use it!
# j'ai laissé ça en commentaire, visiblement c'est
pas utile
# fnac_kill = "/etc/ppp/ppp-off"
# The per connection netdev, this is only needed for the netdev stat
method
# it defaults to the value of netdev.
# nom du device ppp0 utilisé
fnac_netdev = "ppp0"
# The per connection checkhost, this is only needed for the exitcode
stat method
# it defaults to the value of checkhost.
# adresse IP d'une machine sur internet à pinguer pour voir
si on est connecté
fnac_checkhost = "194.149.160.9"
# Which method of parsing the logfile should we use for this connection?
# j'ai laissé ça par défaut
fnac_parselog = "pap"
# Another connection
# définition de la connexion liberty
liberty_script = "/etc/ppp/ppp-on liberty"
liberty_info = "Connexion à Liberty"
liberty_checkhost = "194.149.160.9"
liberty_ipallow = "127.0.0.1:192.168.13.*"
(...)
# What users are allowed to do what?
# Quels utilisateurs sont autorisés à faire quoi
userallow = "olivier"
# olivier peut tout faire
userallow_connect = "*"
# n'importe qui peut lancer une connexion
userallow_disconnect = "*" # n'importe
qui peut stopper une connexion
Voilà on a fini avec la config de mserver, maintenant
il faut déclarer le port que le daemon va "écouter" pour
attendre les demandes de connexion/deconnexion. Voilà les lignes
à rajouter ( c'est fait automatiquement à l'install du RPM,
à faire avec le tarball) dans le fichier /etc/services.
masqdialer 224/tcp
masqdialer # added by c-mserver
masqdialer 224/udp
masqdialer # added by c-mserver
/usr/sbin/mserver -v -c /etc/mserver.conf
Le chemin est /usr/local/bin/mserver dans les cas d'une install par tarball.
Ou alors
/etc/rc.d/init.d/mserver start
Voilà la trace au lancement dans /var/log/messages
Jul 15 07:57:58 asterix mserver[2496]: Listening on address: 192.168.13.1
Jul 15 07:57:58 asterix mserver[2496]: Listening on address: 127.0.0.1
Lors d'une connexion on aura les messages suivants
Jul 15 08:13:36 asterix mserver[2497]: Forked new client 2549
Jul 15 08:13:36 asterix mserver[2497]: Signon: client.kervao.fr
Jul 15 08:13:36 asterix mserver[2549]: Set Authorized: 0
Jul 15 08:13:36 asterix mserver[2549]: Set Authorized: 0
Jul 15 08:13:36 asterix mserver[2549]: Set Authorized: 1
Jul 15 08:13:36 asterix mserver[2549]: Get Authorized: 1
Jul 15 08:13:36 asterix mserver[2549]: connection name: mana
Jul 15 08:13:36 asterix mserver[2549]: allowed ips: 192.168.13.*:127.0.0.1
Jul 15 08:13:36 asterix mserver[2549]: Get Authorized: 1
Jul 15 08:13:36 asterix mserver[2549]: connection name: mana
Jul 15 08:13:36 asterix mserver[2549]: allowed users: olivier,*
Jul 15 08:13:36 asterix mserver[2549]: Token = "olivier"
Jul 15 08:13:36 asterix mserver[2549]: Get Authorized: 1
Jul 15 08:13:36 asterix mserver[2549]: Dialing connection: mana
by user olivier Jul 15 08:13:36 asterix mserver[2549]: Executing: /etc/ppp/ppp-on
Jul 15 08:13:36 asterix pppd[2552]: pppd 2.4.1 started by root,
uid 0
Jul 15 08:13:37 asterix mserver[2549]: PPPD pid is 2552
(...)
tar xvfz diald-1.0.tar.gz
Cela va créer un répertoire diald-1.0. Dans ce répertoire, on doit rajouter la ligne
#include <time.h>
Dans les fichiers suivants :
diald.c
firewall.c
timer.c
(en première place avant #include <config.h>)
on va taper ensuite successivement
./configure --sysconfdir=/etc
make
Puis en tant que root
make install
Ce qui va installer un certain nombre de fichiers de conf sous /usr/local/lib/diald
Et les exe suivants
/usr/local/sbin/diald
/usr/local/bin/dctrl
Par ailleurs on trouvera le fichier /etc/pam.d/diald pour
permettre une authentification des clients en utilisant PAM
Pour modifier éventuellement l'emplacement des exécutables et des fichiers de configuration, tapez configure avec certaines options que vous obtiendrez en tapant
./configure -help
ABORT BUSY
ABORT "NO CARRIER"
ABORT VOICE
ABORT "NO DIALTONE"
"" ATDT0298304691
ogin login-chez liberty
word \qmot-de-passe
A noter le \q devant le mot de passe
Ce format de fichier passe également
'REPORT' 'CONNECT'
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT0298304691'
'CONNECT' ''
'ogin:' 'login-chez-liberty'
'ord:' 'mot-de-passe'
'TIMEOUT' '5'
'~--' ''
Pour une connexion avec Free on tapera :
'REPORT' 'CONNECT'
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT0860912006'
'CONNECT' ''
N'oubliez pas le fichier /etc/ppp/chap-secrets
login-free * mot-de-passe-de-connexion
Voici maintenant le fichier de config à créer /etc/diald.conf, on considère que le modem est branché sur le port série 1 (/dev/ttyS0) et que l'adresse IP locale est 192.168.13.1
fifo /var/run/diald.fifo
mode ppp
connect "/usr/sbin/chat -v -f /etc/ppp/ppp-on-dialer"
device /dev/ttyS0
speed 115200
modem
lock
crtscts
local 192.168.13.1
dynamic
defaultroute
pppd-options noauth asyncmap 0
ip-up /etc/ppp/ip-up
ip-goingdown /etc/ppp/goingdown
ip-down /etc/ppp/ip-down
include /usr/local/lib/diald/standard.filter
Le fichier /usr/local/lib/diald/standard.filter fixe les requêtes (suivant le protocole) qui nécessitent une connexion internet et le temps de déconnexion minimum par type de requête. Exemple avec une requête HTTP, le temps d'attente est fixé à 2min (2*60s)
accept tcp 120 tcp.dest=tcp.www
accept tcp 120 tcp.source=tcp.www
Faire man diald pour avoir le détail de la syntaxe. Vous trouverez également davantage d'options pour le fichier diald.conf
On suppose que votre fichier /etc/resolv.conf est correctement renseigné
# définition de votre domaine privé
# qui peut être différent de celui du FAI
search kervao.fr
# en cas de serveur
DNS local
# nameserver 127.0.0.1
# définition des serveurs de noms de votre FAI
nameserver adresse-IP-premier-serveur-DNS-FAI
nameserver adresse-IP-deuxième-serveur-DNS-FAI
Dans le cas où ce n'est pas le cas (attribution automatique des adresses IP des serveurs DNS), on modifiera le fichier désigné par la variable ip-up qui est lancé juste après la connexion, il va nous servir à renseigner automatiquement le fichier /etc/resolv.conf, il doit contenir au moins les lignes suivantes:
#!/bin/bash
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
J'extrais les adresses IP des serveurs DNS à partir du fichier /var/log/messages
Jul 9 19:04:19 asterix diald[4538]: Running pppd (pid = 4615).
Jul 9 19:04:19 asterix pppd[4615]: pppd 2.4.1 started by root,
uid 0
Jul 9 19:04:19 asterix pppd[4615]: Using interface ppp0
Jul 9 19:04:19 asterix pppd[4615]: Connect: ppp0 <--> /dev/tts/0
Jul 9 19:04:22 asterix pppd[4615]: local IP address
202.3.236.230
Jul 9 19:04:22 asterix pppd[4615]: remote IP address 202.3.224.37
Jul 9 19:04:22 asterix pppd[4615]: primary DNS
address 202.3.225.10
Jul 9 19:04:22 asterix pppd[4615]: secondary DNS address 202.3.225.20
A la suite de ces lignes de ip-up, vous pouvez lancer d'autres exe à la connexion comme sendmail pour envoyer le courrier et fetchmail pour en recevoir (attention dans ce cas mettre le chemin en absolu des exécutables).
ip-goingdown désigne le fichier à lancer juste avant de se déconnecter, il pourrait contenir ceci
#!/bin/bash
/usr/sbin/sendmail -q
ip-down désigne le fichier à lancer juste après
s'être déconnecté. Ces trois derniers fichiers sont
des exécutables (droit à 755).
diald
Pour éventuellement bénéficier de davantages de détails niveau débug, lancer diald avec l'option suivante :
diald debug 8
Les infos de débuguage vont apparaître dans le fichier /var/log/messages.
Jul 9 10:50:06 asterix diald[4426]: ignore parsing error. Got
token 'udp.route'. Not a known udp service port.
Jul 9 10:50:06 asterix diald[4426]: parse string: 'udp udp.dest=udp.route'
Jul 9 10:50:06 asterix diald[4426]: ignore parsing error.
Got token 'udp.route'. Not a known udp service port.
Jul 9 10:50:06 asterix diald[4426]: parse string: 'udp udp.source=udp.route'
Jul 9 10:50:06 asterix diald[4426]: ignore parsing error.
Got token 'udp.route'. Not a known udp service port.
Jul 9 10:50:06 asterix diald[4426]: parse string: 'udp tcp.dest=udp.route'
Jul 9 10:50:06 asterix diald[4426]: ignore parsing error.
Got token 'udp.route'. Not a known udp service port.
Jul 9 10:50:06 asterix diald[4426]: parse string: 'udp tcp.source=udp.route'
Jul 9 10:50:06 asterix diald[4427]: Creating FIFO
Jul 9 10:50:06 asterix diald[4427]: Using fifo /var/run/diald.fifo
Jul 9 10:50:07 asterix diald[4427]: Proxy device established
on interface sl0
Jul 9 10:50:07 asterix diald[4427]: start sl0: SIOCSIFMETRIC:
Opération non supportée
Jul 9 10:50:07 asterix diald[4427]: Diald initial setup completed.
L'erreur sur udp.route vient de mon fichier /etc/services, au niveau de
router 520/udp local routing process (on site)
J'ai rajouté la ligne suivante
route 520/udp local routing process (on site);
Pour lancer une connexion de votre serveur, il faut que votre fichier
/etc/resolv.conf
contienne
les adresses IP des serveurs DNS de votre FAI, si vous les connaissez pas,
c'est pas grave vous pouvez mettre n'importe quoi car le script ip-up
comme on l'a vu plus haut va le renseigner correctement une fois
la connexion établie.
Voilà ce que ça donne après une tentative de surf.
Jul 9 10:58:40 asterix diald[4539]: Trigger: udp
192.168.13.1/32820 202.3.225.10/53
Jul 9 10:58:40 asterix diald[4539]: Calling site (null)
Jul 9 10:58:41 asterix chat[4610]: report (CONNECT)
Jul 9 10:58:41 asterix chat[4610]: abort on (BUSY)
Jul 9 10:58:41 asterix chat[4610]: abort on (ERROR)
Jul 9 10:58:41 asterix chat[4610]: abort on (NO CARRIER)
Jul 9 10:58:41 asterix chat[4610]: abort on (NO DIALTONE)
Jul 9 10:58:41 asterix chat[4610]: abort on (Invalid Login)
Jul 9 10:58:41 asterix chat[4610]: abort on (Login incorrect)
Jul 9 10:58:41 asterix chat[4610]: send (ATZ^M)
Jul 9 10:58:41 asterix chat[4610]: expect (OK)
Jul 9 10:58:41 asterix chat[4610]: ATZ^M^M
Jul 9 10:58:41 asterix chat[4610]: OK
Jul 9 10:58:41 asterix chat[4610]: -- got it
Jul 9 10:58:41 asterix chat[4610]: send (ATDT3640^M)
Jul 9 10:58:42 asterix chat[4610]: expect (CONNECT)
Jul 9 10:58:42 asterix chat[4610]: ^M
(...)
Jul 9 10:59:01 asterix diald[4539]: Connected to site (null)
Jul 9 10:59:01 asterix diald[4539]: Running pppd (pid = 4611).
Jul 9 10:59:01 asterix pppd[4611]: pppd 2.4.1 started by root,
uid 0
Jul 9 10:59:01 asterix pppd[4611]: Using interface ppp0
Jul 9 10:59:01 asterix pppd[4611]: Connect: ppp0 <--> /dev/tts/0
Jul 9 10:59:05 asterix pppd[4611]: local IP address
202.3.240.173
Jul 9 10:59:05 asterix pppd[4611]: remote IP address 202.3.224.36
Jul 9 10:59:05 asterix pppd[4611]: primary DNS
address 202.3.225.10
Jul 9 10:59:05 asterix pppd[4611]: secondary DNS address 202.3.225.20
Jul 9 10:59:05 asterix diald[4539]: New addresses: local 202.3.240.173,
remote
202.3.224.36, broadcast 0.0.0.0, netmask 255.255.255.255
Jul 9 10:59:05 asterix diald[4539]: start ppp0: SIOCSIFMETRIC:
Opération non supportée
(...)
Jul 9 10:59:41 asterix diald[4539]: Closing down idle link.
Jul 9 10:59:41 asterix diald[4539]: start sl0: SIOCSIFMETRIC:
Opération non supportée
Jul 9 10:59:42 asterix pppd[4611]: Terminating on signal 2.
Jul 9 10:59:42 asterix pppd[4611]: Connection terminated.
Jul 9 10:59:42 asterix pppd[4611]: Connect time 0.7 minutes.
Jul 9 10:59:42 asterix pppd[4611]: Sent 740 bytes, received
513 bytes.
Jul 9 10:59:42 asterix pppd[4611]: Exit.
Jul 9 10:59:42 asterix diald[4539]: Closing /dev/ttyS0
Jul 9 10:59:43 asterix diald[4539]: Delaying 30 seconds before
clear to dial.
restrict 00:00:00 19:00:00 1 * *
or-restrict 00:00:00 19:00:00 2 * *
or-restrict 00:00:00 19:00:00 3 * *
or-restrict 00:00:00 19:00:00 4 * *
or-restrict 00:00:00 19:00:00 5 * *
or-restrict 00:00:00 20:00:00 6 * *
down
restrict * * * * *
up
Vous devez rajouter ce fichier à diald.conf. Pour plus d'info sur la syntaxe
man diald
#!/bin/bash
# chkconfig: - 60 20
# description: diald permet de lancer une connexion internet \
#
de maniere automatique du serveur et d'un poste client
# processname: diald
# Get config.
. /etc/sysconfig/network
# Get functions
. /etc/rc.d/init.d/functions
# Check that networking is up.
if [ ${NETWORKING} = "no" ] ; then
exit 0
fi
# See how we were called.
case "$1" in
start)
echo -n "Starting diald:
"
daemon diald
echo
touch /var/lock/subsys/diald
;;
stop)
echo -n "Stopping diald:
"
killproc diald
echo
rm -f /var/lock/subsys/diald
;;
status)
status diald
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
Donnez lui des droits en exécution
chmod 755 /etc/rc.d/init/diald
Pour un lancement automatique à l'état de marche 3, 4 et 5 on tapera :
chkconfig --level 345 diald on
Pour un arrêt automatique à l'état de marche 0, 1, 2 et 6 on tapera :
chkconfig --level 0126 diald off
Maintenant pour lancer diald il suffit de taper
/etc/rc.d/init.d/diald start
[root@asterix init.d]# route -nv
Table de routage IP du noyau
Destination Passerelle
Genmask Indic Metric Ref
Use Iface
202.3.224.34 0.0.0.0
255.255.255.255 UH 0 0
0 ppp0
192.168.13.0 0.0.0.0
255.255.255.0 U
0 0
0 eth0
127.0.0.0 0.0.0.0
255.0.0.0 U
0 0
0 lo
0.0.0.0
202.3.224.34 0.0.0.0
UG 0 0
0 ppp0
192.168.13.0 est l'adresse de votre sous domaine IP privé, 202.3.224.34
qu'on retrouve au niveau de la colonne passerelle est l'adresse IP de routage
de votre fai, toutes vos requêtes vont passées par cette adresse,
notez bien cette adresse dans un coin.
On crée un script connect-demand, qu'on place dans /usr/bin,
voici son contenu:
#!/bin/bash
# script contenant les paramètres de connexion
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
# nom du device ppp
DEVICE=ppp0
# port de branchement du modem, ttyS0 port série 1
MODEM=/dev/ttyS0
# options pppd voir page connexion
PPP à la main pour plus de détails
PPPOPTIONS="usepeerdns lock modem crtscts asyncmap 00000000 defaultroute
debug"
exec /usr/sbin/pppd -detach $PPPOPTIONS $MODEM 115200 \
remotename $DEVICE ipparam $DEVICE idle 60 demand
0.0.0.0:202.3.224.34 \
connect "/usr/sbin/chat -v -f $DIALER_SCRIPT"
Pour info 115200 est la vitesse de connexion, idle 60 (chiffre en seconde) permet de stopper la connexion au bout de 60 secondes d'inactivité. Le fichier /etc/ppp/ppp-on-dialer est identique à celui décrit dans la page connexion PPP à la main. Rendez ce fichier exécutable (chmod 755 /usr/bin/connect-demand).
On suppose que votre fichier /etc/resolv.conf est correctement renseigné
# définition de votre domaine privé
# qui peut être différent de celui du FAI
search kervao.fr
# en cas de serveur
DNS local
# nameserver 127.0.0.1
# définition des serveurs de noms de votre FAI
nameserver adresse-IP-premier-serveur-DNS-FAI
nameserver adresse-IP-deuxième-serveur-DNS-FAI
Dans le cas où ce n'est pas le cas (attribution automatique des adresses IP des serveurs DNS), on modifiera les options passées à pppd comme ceci:
PPPOPTIONS="usepeerdns lock modem crtscts asyncmap 00000000 defaultroute debug"
On modifiera le fichier /etc/ppp/ip-up pour qu'il mette à jour automatiquement /etc/resolv.conf comme ceci
#!/bin/bash
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" >> /etc/resolv.conf
echo "nameserver " $DNS1 >> /etc/resolv.conf
echo "nameserver " $DNS2 >> /etc/resolv.conf
Pour info c'est pppd qui passe les adresses IP à ip-up
à
travers les variables DNS1 et DNS2 grâce à l'option
usepeerdns
(man pppd pour plus de détails).
/usr/bin/connect-demand &
ATTENTION N'oubliez surtout pas le & (lancement en mode background) sinon ça bloque le boot !!
Pour lancer une connexion de votre serveur, il faut que votre fichier /etc/resolv.conf contienne les adresses IP des serveurs DNS de votre FAI, si vous les connaissez pas, c'est pas grave vous pouvez mettre n'importe quoi car le script ip-up comme on l'a vu plus haut va le renseigner correctement une fois la connexion établie.
Ca y est c'est fini, dès qu'on voudra aller sur le net (du poste linux ou du poste client) la connexion va se lancer automatiquement.
NOTE En accédant à un site local avec une adresse
locale (du style www.funix.kervao.fr), une connexion automatique
est déclenchée ! Pourtant dans le fichier /etc/nsswitch.conf
j'ai
bien l'ordre de recherche des hosts avec d'abord /etc/hosts puis
les serveurs DNS du fai (hosts:
files dns). C'est ennuyeux ...
NETWORKING=yes
FORWARD_IPV4=false
HOSTNAME=client.kervao.fr
DOMAINNAME=kervao.fr
GATEWAY=serveur
GATEWAYDEV=eth0
La commande route doit donner les lignes
Table de routage IP du noyau
Destination | Passerelle | Genmask | Indic | Metric | Ref | Use | Iface |
192.168.13.0 | * | 255.255.255.0 | U | 0 | 0 | 0 | eth0 |
127.0.0.1 | * | 255.0.0.0 | U | 0 | 0 | 0 | l0 |
default | serveur.kervao.fr | 0.0.0.0 | U | 1 | 0 | 0 | eth0 |
L'IP Masquerade doit évidemment être configuré sur le serveur masqdialer, pppd ou diald. Concernant la configuration DNS, soit vous avez un serveur DNS local et dans ce cas vos clients en sont clients., soit vous n'en avez pas et dans ce cas, vous devez indiquer dans le fichier /etc/resolv.conf, les adresses IP des serveurs DNS de votre FAI. Si vous les connaissez pas, le plus simple est d'installer un serveur DNS local et de voir du côté de la page connexion PPP à la main comment récupérer ces adresses IP.
Pour les clients windows voir au niveau de la configuration réseau.
WinMasqDialer
se récupèrait à l'adresse
suckfree.com/masq,
c'est un zip qui contient un exe unique et quelques fichiers de ressources
(icônes, mais pas de dll ou autres).
Voici à droite un screenshot, il suffit d'indiquer l'adresse IP (dans le champ Name/IP) ou le nom de votre serveur linux, le numéro du port (224 par défaut). Quand on se connecte au serveur linux, on a alors la liste des connexions possibles (dans mon cas fnac et liberty). Pour lancer une connexion, il suffit d'en choisir une, puis de cliquer sur Dial, on a alors le débit de connexion et une idée du trafic. Pour stopper la connexion, le bouton Dial se transforme en bouton Hangup, il suffit de cliquer dessus. A noter que lors d'une connexion, on a des petites icônes dans la barre de tâche windows en bas à droite. |
|
|
|
WinMClient
se trouvait à l'adresse www.buffnet.net/~millard/winmclient.html,
c'est un fichier zip qui contient un exécutable unique.
A gauche un screenshot, le bouton Connect permet de se connecter au serveur linux et d'avoir la liste des connexions possibles. Dial permet de se connecter après avoir choisi son FAI et Hangup permet de raccrocher. |
|
Voilà la configuration de WinMClient quand on clique sur l'onglet Config, on doit indiquer le nom du serveur linux (ou son adresse IP) ainsi que le port, vous pouvez choisir l'authentification et éventuellement d'autres paramètres, la config peut être sauvegardée. |
Le seul client windows disponible sur le site de masqdialer se trouve
à l'URL http://w3.cpwright.com/win95nt-mclient/. Il
se trouve sous la forme d'une archive zip win95nt-mclient-1.2.2-i386.zip.
Violà quelques screenshots.
|
Configuration du client, on précise le nom du serveur, le login sur le serveur. |
Connexion au serveur avec affichage des détails en cliquant sur Connect to Server |
|
|
Lancement de la connexion en cliquant sur Dial. On stoppe la connexion en cliquant sur Hang Up (Racrocher) |
tar xvfz cli-mclient-2.8.tar.gz
Cela donne un répertoire mclient-2.8 dans lequel on tape
make
Libre à vous ensuite de l'installer sous /usr/bin
Pour avoir la liste des connexions PPP disponibles sur le serveur on tapera
mclient -h asterix -U olivier -P mot-de-passe-login-sur-serveur
-v -l
Unix Command Line Masqdialer Client v2.7
Copyright (c) 1998, 1999 Kevin Lindsay and Charles P. Wright
Connecting to server: asterix
Connection Established...
Authentication Successful!
Dialup Connections Available
----------------------------
mana
free
Pour se connecter sur la connexion mana, on tape
mclient -h asterix -c mana -U olivier -P mot-de-passe-login-sur-serveur
-v -d
Unix Command Line Masqdialer Client v2.7
Copyright (c) 1998, 1999 Kevin Lindsay and Charles P. Wright
Connecting to server: asterix
Connection Established...
Authentication Successful!
Dialing ...
Dialing connection: mana by user olivier
Executing: /etc/ppp/ppp-on
PPPD Process Started
Modem connected
Initializing Modem
Dialing Modem
Modem connected
Modem Connected at 42666
Sending Login
Sending Password
Chat script successful
PPP Link Established
Connected to mana at 42666
Pour avoir un état de la connexion
mclient -h asterix -c mana -U olivier -P mot-de-passe-login-sur-serveur -v -s
Pour stopper la connexion
mclient -h asterix -c mana -U olivier -P mot-de-passe-login-sur-serveur
-v -k
A noter que les accès sur les sites locaux peuvent déclencher
une connexion.
[Retour page d'accueil FUNIX] |