FUNIX

Mettez un manchot dans votre PC



[ PrésentationMasqdialer [ Présentation, Installation de Masqdialer , Configuration de Masqdialer , Lancement de Masqdialer ) | diald ( Présentation , installation , configuration , Premiers essais , configuration avancée , lancement automatique ) |  pppd  ( Présentation , ConfigurationLancement automatique de pppd  ) |  Configuration des postes clients sous Windows ( Configuration généraleAvec Masdialer  ,  Avec pppd et diald  ) ]

Dernière modification 15.7.02

Lancer la connexion d'un poste client

Configuration internet

Présentation

Cette page a pour objet de présenter les outils qui présente de lancer une connexion d'un poste client (sous windows, linux ou encore autres choses) du réseau privé sans avoir à intervenir sur le serveur linux sur lequel est branché le modem.
Vous avez la possibilité de déclencher la connexion manuellement avec masqdialer, ou alors automatiquement avec pppd ou diald, c'est à dire que du poste client (ou du poste linux) dès que vous essayez d'aller sur le net (un ping suffit), la connexion va se déclencher. Avec la méthode manuelle avec masqdialer, il est nécessaire d'installer un programme sous windows qui présente l'intérêt de donner le débit de connexion et une indication sur le trafic entrant et sortant, avec la méthode automatique nul besoin d'installer un logiciel supplémentaire sous windows, il suffit de vouloir aller sur le net. La déconnexion dans le premier cas est déclenchée du poste client au travers du programme de connexion, dans le deuxième cas, c'est au bout d'un certain temps d'inactivité que la connexion est automatiquement coupée.

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.

Masqdialer

Présentation

Masqdialer est un daemon à installer sur votre poste linux connecté à internet (par PPP, ADSL, RNIS, ...) de manière ponctuelle. Il permet à des utilisateurs choisis de lancer une connexion à partir d'un poste distant de votre réseau privé qui se trouve sous Windows ou éventuellement sous un autre OS (MacOS, ...), il autorise aussi à ces mêmes utilisateurs de stopper la connexion.
L'intérêt de masqdialer est qu'il faut une intervention manuelle du poste Windows pour pouvoir lancer la connexion, a contrario diald ou pppd qui permettent la même chose sont des daemons qui scrutent l'activité de votre réseau, ils déclencheront une connexion automatiquement dès qu'on veut aller voir à l'extérieur, ce qui peut être génant.
Voici un petit diagramme pour comprendre le concepte, le modem ou adaptateur (ADSL, RNIS, RTC, ...) se trouve sur le PC sous Linux, on déclenche et stoppe la connexion à partir du PC sous Windows de votre réseau privé.

--------------------------------- réseau privé
                |                                            |
        PC sous                                PC sous
        Windows                                Linux
                                                            |
                                                        internet
 

Installation de Masqdialer

On peut récupérer masqdialer à l'adresse w3.cpwright.com/mserver, on y trouve un package RPM de binaires prêt à l'emploi c-mserver-0_5_5-4_i386.rpm, ou le package des sources à compiler c-mserver-0_5_5-4_src.rpm.

Installation avec RPM

Pour le package binaire il suffit pour l'installer de taper en tant que root:

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

Installation avec tarball

Pour les inconditionnels du tar.gz, on peut récupérer les sources  c-mserver-0.5.5.tar.gz qu'on décompresse en tapant :

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

Configuration de Masqdialer

Le fichier /etc/mserver.conf


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

Le fichier /etc/services


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

Lancement de Masqdialer

Pour lancer tout ça, vous pouvez taper la commande:

/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
(...)
 

Diald

Présentation

Diald permet de lancer une connexion à internet de manière automatique à partir de votre poste connecté à internet mais aussi des postes clients de votre réseau. Est présentée ici une connexion de type ppp pour un accès internet en utilisant LibertySurf et Free.

Installation

On récupérera l'archive diald-1.0.tar.gz  à l'URL diald.sourceforge.net, on la décompresse en tapant :

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
 

Configuration

On crée maintenant le fichier /etc/ppp/ppp-on-dialer si ce n'est déjà fait (connexion PPP à la main) contenant les informations de connexion, je prends pour exemple une connexion chez LibertySurf

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

Premiers essais

Pour lancer diald il suffit de taper :

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.
 

Configuration avancée

A noter que vous pouvez rajouter des restrictions sur les heures d'utilisation de diald, par exemple ici tous les jours de la semaine (lundi=1, ..., vendredi=5) la connexion ne peut se faire de minuit à 19h, elle peut se faire le reste du temps.

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

Lancement automatique de diald

Pour un lancement automatoque de diald, il existe un fichier diald-1.0/setup/etc/init.d/diald théoriquement à placer sous /etc/rc.d/init.d comme il marche pas trop chez moi, je vous propose celui-ci /etc/rc.d/init.d/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
 
 

pppd

Présentation

pppd est le programme qui permet de lancer une connexion PPP, il possède une option qui permet d'en lancer une automatiquement si nécessaire et de couper la connexion au bout d'un certain temps. J'ai pris comme exemple une connexion à fnac.net, pour une connexion avec authentification CHAP (Free, Waika9), voir la page de connexion PPP "à la main" et adapter.

Configuration

La première chose à faire est de lancer une connexion puis de tapez route:

[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).
 

Lancement automatique de pppd

Pour lancer votre script automatiquement au boot, vous rajouterez à la fin de /etc/rc.d/rc.local

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

Configuration des postes clients

Configuration générale

Vos clients doivent être configurés de telle sorte que votre serveur masqdialer, pppd ou diald soit la passerelle, pour les clients linux, le fichier /etc/sysconfig/network doit ressembler à ca

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.

Dans le cas de masqdialer

Clients Windows

Sur le site de masqdialer, on indique des adresses de programmes clients tournant sous Windows ou sous d'autres d'OS, permettant de lancer une connexion PPP à distance. Certains sites proposaient des clients mais ils ne sont malheureusement plus accessibles, à défaut je vous propose les dernières versions que j'ai téléchargées.
 
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)

 

Clients Linux

Sur le même site que Masqdialer, précisément ici http://w3.cpwright.com/cli-mclient/ on trouve un client linux en ligne de commande. On décompresse l'archive en tapant

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
 

Dans le cas de pppd ou diald

Après les légères modifications indiquées plus haut,  il suffit d'inscrire une URL quelconque dans un navigateur, de taper enter et c'est parti la connexion se lance, au bout d'un certain temps (défini dans le script de connexion) d'inactivité la connexion est automatiquement coupée.

A noter que les accès sur les sites locaux peuvent déclencher une connexion.
 

[Retour page d'accueil FUNIX]