Page suivante Page précédente Table des matières

3. PPP

LinuxApps propose des listes d'outils.

3.1 Appelant ("client")

Si vous employez chat n'omettez pas d'échapper les caractères spéciaux utilisés dans toute chaîne communiquée au modem. Exemple :

  ''    \rAT\F\r     \
est incorrect. Utiliser :
  ''    \rAT\&F\r     \

Il faut disposer du programme pppd (souvent en /usr/sbin/pppd), généralement livré dans un paquetage appelée ppp

Documents

Outils

La Red Hat 5 offre de très efficaces outils de configuration. Commencer, en tant que root, par utiliser netcfg. Configurer des noms complets, par exemple :


Hostname: mabecane.bidon.fr
Domain: bidon.fr

Puis, en tant qu'utilisateur, utiliser usernet (utiliser de préférence une version 1.0.6-1 ou postérieure).

PPP Multilink Protocol (MP) agrégation de canaux PPP.

Outils permettent de faciliter l'établissement de la connexion

Ils ne facilitent pas toujours la préalable étape de configuration !

Gestion répartie de la connexion (diald)

Performances

Pload est un outil d'examen en continu des performances.

Automatisation

Il est parfois souhaitable d'automatiser des sessions PPP, par exemple afin de télécharger des fichiers aux heures de facturation minimale.

Utiliser pour cela l'option ipparam pppd. Cette option accepte un paramètre quelconque qui sera communiqué aux scripts automatiquement invoqués par pppd. Ces derniers pourront grâce à cela "décider" d'effectuer ou non certaines tâches. Lire à ce propos la page de man de pppd.

L. Lopez nous offre un exemple : Voici un script de connexion modifié pour travailler en mode automatique. Connexion puis déconnexion auto :

/usr/sbin/pppd -d \
    crtscts\
    modem\
    asyncmap 0\
    mtu 296\
    noipdefault\
    ipparam getmail \  <<<< !!! C'est ici que ca se passe !!!!
    defaultroute\
    connect "/usr/sbin/chat -v -f /etc/ppp/$1.chat"\
    38400\
    /dev/ttyS1     

On peut ensuite tester la valeur du paramètre dans ip-up comme ceci :

## permet la deconnexion automatique si le 6eme parametre est utilise
## et contient la chaine "getmail"
if [ "$6" = "getmail" ]
then
  echo "fin de travail : deconnexion" > $out
  sleep 10s
  /etc/ppp/ip-off
else
 ...

Pour automatiquement démarrer périodiqueemnt une session PPP) utiliser PPP_poll.

Fichiers de configuration

Scripts de connexion

Conseils

Déconnexion automatique

T. Parmelan note :
La version Linux de pppd reconnaît [une option de déconnexion automatique (non documentée)] Pour pppd-2.2.x, il s'agit de "idle-disconnect nb_secondes". Pour pppd-2.0.x, il s'agissait (il me semble) de "idle-timeout".

Attention : la déconnexion automatique n'est assurée que si aucun paquet IP ne transite durant le temps "idle". Certains logiciels (par exemple les clients POP) effectuent périodiquement des transations et peuvent donc, mal configurés (période trop courte), interdire la déconnexion automatique.

Amélioration des performances

Appliquer les conseils prodigués au début de ce document afin de s'assurer de la configuration du port série et du modem : inutile d'espérer obtenir un bon résultat si le modem ne débite pas plus de ce qu'autorise le port série ... configuré à 9600 bps !

Utiliser irqtune pour modifier la priorité de service des pilotes liés aux lignes physiques d'interruption. Lire sa documentation, claire et riche (en anglais).

S'assurer que les modems se connectent en employant le débit maximal théoriquement possible (lire le fichier de trace, voir section "En cas de problème").

Avec certaines configurations il est nécessaire de compiler PPP en tant que module pour qu'il puisse utiliser le compactage d'en-têtes.

Augmenter les valeurs attachées aux paramètres mtu et mru (maxi : 1500) afin d'augmenter le ratio de charge (donnéees utilisateur)/(données protocoles). Les augmenter améliore le taux de transfert des données, les diminuer pour réduire les « latences », donc améliorer le « temps de réponse perçu ». Les réduire si le serveur ne le tolère pas ou si transferts deviennent trop heurtés. Placer par exemple dans le fichier des options de pppd (souvent /etc/ppp/options) :

mru 576
mtu 576

L. Sintes a empiriquement déterminé cette approche : Quand la config par défaut ne semble pas être optimum j'essaye :

mru 296 ; mtu 1064
notamment avec des disques IDE et j'évite ainsi d'utiliser hdparm. puis :
mru 552 ; mtu 1064.
disque SCSI. Liaison de bonne qualité.

Merci à ceux qui en savent plus de m'écrire !

Installer un bon mandataire ("proxy") cache, par exemple wwwoffle.

Installer un serveur de noms en mode « cache » afin de réduire le nombre d'interactions réseau avec les serveurs distants. Lire à ce propos le HOWTO « DNS ». Red Hat : utiliser le paquet caching-nameserver.

Ne pas utiliser un noyau compilé avec « always defragment » (sauf si machine passerelle ou bastion) et « optimize as router not host ».

PAP et CHAP

Certains fournisseurs emploient des machines capables de négocier une connexion (« login ») très accélérée (par rapport au traditionnel "login:", "Password:") grâce à PAP.

P. Saratxaga : L'option +ua est obsolète et peut être supprimée à tout moment. La bonne façon de faire est d'editer /etc/ppp/pap-secrets et de mettre :


votrelogin  identifiantduFAI  votremotdepasse

l'identifiantduFAI n'a aucune importance, c'est pour pouvoir distinguer entre plusieurs hôtes distants. Le remplacer par '*' (un astérisque) si la machine ne se connecte qu'à un seul système distant.

Dans la ligne de commande de pppd il faut ajouter les options :


user votrelogin remotename identifiantduFAI

Si c'est CHAP qui est utilisé c'est quasiment pareil sauf que le fichier à éditer est /etc/ppp/chap-secrets. Les paramètres de pppd sont en ce cas :


name votrelogin remotename identifiantduFAI

Il faudra aussi modifier le script d'appel de sorte qu'il s'achève sitôt la connexion physique établie, c'est-à-dire ainsi dans le cas d'un script exploitant chat :


CONNECT   ''

Si vous ne parvenez pas à déterminer quel script d'appel est employé sachez que :

Différences entre pppd 2.2 et 2.3

P. Saratxaga :

En cas de problème

Ne plus lancer pppd qu'en mode debug et surveiller le contenu du fichier historique d'activité (souvent /var/log/messages).

Vérifier les contenus de tous les fichiers : certains outils d'administration automatique mal conçus (ou utilisés) remplacent parfois brutalement les informations qu'ils contiennent.

C. Roth explique que les utilisateurs de modems USR Sportster dont la connexion se bloque (pas d'activité IP) et pour lesquels pppd produit le message CCP: timeout sending config-request doivent adopter la configuration par défaut du modem (chaîne d'initialisation AT&F1, ajouter si nécessaire B0) et surtout n'utiliser que des commandes AT libellées en majuscules ou bien en minuscules (pas de mélange) !

É. Jacoboni : Message d'erreur SIOCADDRT avec les noyaux 2.1 : récupérer la dernière version de PPP (en ce moment : 2.3.5).

En cas de problèmes tenter de se connecter grâce à un script de shell (sans interface graphique, donc), afin de déterminer si pppd est en cause.

Si le flux de paquets IP semble heurté placer les lignes suivantes dans /etc/modules.conf :

alias tty-ldisc-3       ppp
alias ppp-compress-1    off     # predictor-1 not yet supported
alias ppp-compress-2    off     # predictor-2 not yet supported
alias ppp-compress-21   bsd_comp
alias ppp-compress-24   ppp_deflate
alias ppp-compress-26   ppp_deflate

En cas d'incidents (plantages) étranges installe la plus récente version du noyau qui résiste aux attaques IP connues.

Modem

Diminuer la vitesse DTE (port série vers modem).

Établir un débit fixe entre l'ordinateur et le modem s'avère parfois nécessaire (par exemple, sur certains modems USR, via AT&B1). Merci à C. "CHiPs" Petit.

L. Martinez, à propos de l'USR SportsterMessagePlus :

Ce modem supporte une saloperie de mode autonome.
Et comme par hasard (du moins dans la configuration que j'utilise), la
commande ATZ le bascule en mode autonome, d'où il est impossible avec
les scripts classiques de chat, de monter une connexion, car ATDTnuméro
renvoie une erreur.
Si à la place de ATZ vous mettez dans vos scripts AT&F1, tout rentre
dand l'ordre.

P. Grange précise : Pour desactiver le mode autonome: AT+MCS=0

« Pertes de caractères » (débit anormalement lent) : utiliser le paramètre -u1 du logiciel (Linux) hdparm afin d'autoriser le pilote du disque à oeuvrer sans masquer les interruptions, donc en laissant le pilote série prendre en charge le flux de données machine [-] modem.
ATTENTION : ce paramètre peut s'avérer dangereux. Lire la documentation de hdparm, sauvegarder les données PUIS tester avant de l'adopter.

Si la machine dispose d'un port série desservi par un circuit 16550 (UART avec tampon) ne pas négliger de l'affecter au modem plutôt que d'utiliser un circuit 8250 ou bien 16450. Invoquer setserial NomDuPortSérie pour déterminer le type du circuit.

En cas de problèmes étranges recompiler un noyau avec PPP intégré (et non en module).

Raccrochage intempestif : essayer de désactiver le signal d'appel. Lire à ce propos la FAQ] Configuration modem sur protocole PPP.

Message d'erreur CCP: timeout sending config request : utiliser l'option de pppd '-bsdcomp'.

TCP/IP

Commencer par un salutaire :

chmod a+r /etc/resolv.conf /etc/hosts /etc/services

Le fichier /etc/resolv.conf doit impérativement déclarer au moins un nameserver.

L. Picouleau note : j'ai été très ennuyé parce que je n'avais pas mis de nom de domaine considérant que ma machine n'était pas connectée à un réseau. Avoir une liaison PPP c'est ETRE CONNECTE à un réseau TCP/IP. Ce simple détail compris, bcp de choses se sont débloquées.

Pour savoir si la connexion PPP est ou non active invoquer /usr/ifconfig et chercher une section ppp.

Pour détecter les causes des problèmes il faut utiliser le mode debug, voire kdebug de pppd. Surveiller le fichier de trace syslog (souvent /var/log/messages).

Si les outils réseau ne fonctionnent pas et produisent un message d'erreur : nomDuProtocole: nomDuProtocole/typeDeTransport: unknown service, par exemple :

ftp: ftp/tcp: unknown service
telnet: tcp/telnet: unknown service
solution : chmod a+r /etc/services.

Si le fichier de trace indique que la connexion avorte après des échanges « LCP ConfReq » essayer de modifier la valeur associée au paramètre asyncmap (M. Bouget indique que 00A0000 donne satisfaction).

Si le fichier de trace indique que la connexion avorte après des échanges « rcvd LCP ConfAck ... <auth pap> » vérifier que pppd ne tente pas d'employer PAP ou CHAP : renoncer aux arguments +pap, +chap, login, user ...

Kiosque micro

Le "Kiosque" exige le nom du service auquel vous souhaitez vous connecter. Ceci s'obtient en ajoutant le couple "Ser? Votre_FAI" avant "login" et "password" dans votre "chat script" PPP. "er? CLUBINT" par exemple si Club-Internet est votre FAI. Votre service technique est en mesure de vous fournir le nom à employer.

MS-Windows et Linux

Essayer l'option silent de pppd.

Linux vers MS-Windows : il faut employer un pppd avec gestion du protocole "MSCHAP" (autentification CHAP à la sauce Microsoft). Récupérer les sources de pppd et lire les fichiers README.

D. Delamarre : La base de registres de MS-Windows permet de débrayer MSCHAP. Ou bien autoriser dans la configuration réseau RAS le protocole CHAP standard (sans chiffrement).

MS-Windows client de Linux : P. Saratxaga nous guide :
Utiliser mgetty compilé avec -DAUTOPPP -DUSE_MS_DNS=1. Configurer /etc/ppp/pap-secrets et /etc/mgetty+sendfax/login.config. Les clients MS-Windows 95 appellent avec autentification PAP, ils reçoivent du serveur pppd l'adresse IP du DNS à utiliser. Cette option s'énonce dns-addr pour ppp 2.2 et ms-dns pour ppp 2.3).
En résumé :
Installer :

Dans /etc/mgetty+sendfax/login.conf une ligne adéquate. Voici un exemple (pour ppp 2.2) :

/AutoPPP/ -     ppp_in  /usr/sbin/pppd auth -chap +pap login crtscts :192.168.85.133
Voici un exemple (pour ppp 2.3) :
/AutoPPP/ -     ppp_in  /usr/sbin/pppd auth refuse-chap require-pap login crtscts :192.168.85.133

dans /etc/ppp/chap-secrets :

*               *               ""              192.168.85.133

dans /etc/ppp/options :

dns-addr 192.168.85.130 # compiler pppd avec  -DUSE_MS_DNS=1
(à partir de la version 2.3 de ppp : utiliser ms-dns en lieu et place de dns-addr).

Remplacer bien entendu 192.168.85.133 par l'adresse IP à attribuer aux appelants, et 192.168.85.130 par l'adresse du serveur DNS local. S'il n'y a pas de serveur de noms local : installer le programme named. Lire la documentation de mgetty et pppd.

Le rpm de pppd 2.2 n'est pas compilé avec l'option USE_MS_DNS, il faut donc récupérer le paquet .src.rpm, éditer le fichier .spec pour remplacer le make dans %build par make USE_MS_DNS=1.

A. Lesné:
J'ai récupéré pppd 2.3.3, compilé avec l'option CHAPMS et USE_CRYPT, et, comme d'habitude, ça ne marchait toujours pas. L'info, je l'ai trouvé par hasard, en promenant mon oeil dans les sources du Makefile du répertoire pppd: il y a maintenant une option MS_LANMAN qui n'est documentée que dans le source. Eh bien, en compilant avec ce paramètre, miracle ! Les machines MS-Windows 95 acceptent enfin de causer ppp avec Linux.

Ci-dessous, ce qu'on trouve dans chap_ms.c :

/*
 * Modifications by Lauri Pesonen / lpesonen@clinet.fi, april 1997
 *
 *   Implemented LANManager type password response to MS-CHAP challenges.
 *   Now pppd provides both NT style and LANMan style blocks, and the
 *   prefered is set by option "ms-lanman". Default is to use NT.
 *   The hash text (StdText) was taken from Win95 RASAPI32.DLL.

Lire aussi le Modified Linux PPP/NT HOWTO

3.2 Appelé ("serveur")

P. Saratxaga : L'option "login" signifie ceci : si un identifiant a un password vide ( "" ) dans le fichier *-secrets alors on re-essaye avec le mot de passe de /etc/passwd (pour autant que l'identifiant existe aussi dans ce fichier). Donc mettre

* * ""
est un moyen simple et efficace de dire d'utiliser /etc/passwd.

Rappel de l'appelant (callback)

Lire ce document rédigé par H. Lemoine


Page suivante Page précédente Table des matières