LinuxApps propose des listes d'outils.
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
Imaginet
(O. Tharan)
HOL et Magic Online, pour Red Hat et
Debian, pour fetchmailrc, inn, super, popclient, sendmail
(M. Verdier)
HOL
(D. Braussen)
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
usernet (utiliser de
préférence une version 1.0.6-1 ou postérieure).
PPP Multilink Protocol (MP) agrégation de canaux PPP.
Ils ne facilitent pas toujours la préalable étape de configuration !
Pload est un outil d'examen en continu des performances.
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.
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.
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 ».
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
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 :
/etc/ppp/ppp-on-dialerchat,pppd, dans le script de connexion,
après l'argument connectP. Saratxaga :
refuse-chap à la place de -chap et
require-pap à la place de +pap.
nmbd de la suite Samba est un serveur WINS.
Donc avec les versions 2.3 de ppp on peut même avoir des clients MS-Windows
95 qui se connectent et utilisent les clients MS-Windows etc.
ms-dns et ms-wins
(deux ou trois, je ne me souviens plus) donc des serveurs DNS secondaires,
comme dans /etc/resolv.conf
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.
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'.
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 servicesolution :
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 ...
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.
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
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.
Lire ce document rédigé par H. Lemoine