Ich beschreibe hier meine Erfahrung hinsichtlich des Zugangs zur Hit von einem Linux Rechner über pppd/chat mit Modem. Mit eventuell kleineren Änderungen werden die Skripte auch für ISDN Zugang benutzbar sein.
Als Alternative zu dem beschriebenen Weg kommt dip
in Betracht. Wie man mit dip
mit der
Hit Kontakt aufnimmt, ist in der Internet-Fibel auf
der Webseite des Handshake
beschrieben (geringfügig
veraltet hinsichtlich Telefonnummer und "slip" statt
"ppp" Benutzung).
Als Erweiterung der Basisverbindung über
pppd
kann man an diald
denken (automatischer
Abbau länger unbenutzter Verbindungen und automatischer
Wiederaufbau bei Bedarf). Ich selbst habe keine Erfahrung
mit diald
.
Linux Rechner können PPP-Verbindungen über den PPP-Demon, pppd
,
aufbauen. pppd
initialisiert das Modem (die ISDN-Karte),
baut die Verbindung auf und veranlasst den Kern im Erfolgsfall
eine IP und/oder IPX Verbindung zum PPP-Partner aufzubauen.
Auf Wunsch wird eine Default-Route zu dem PPP-Partner eingerichtet:
alle Pakete an Rechner, für die keine explizite Route bekannt
ist, werden über diese Route weitergeleitet. Das ist
sinnvoll für Internetbenutzung.
Für die Details der Modem-Initialisierung und des Anmeldens
beim Online Dienstleister bedient sich pppd
eines externen Shell-Kommandos. Meistens wird in diesem
Kommando das Programm chat
benutzt.
chat
wird kontrolliert durch ein chat
Skript. Ein solches Skript besteht im wesentlichen aus
einer Folge von "warte auf/sende" Sequenzen, etwa in
der Form warte auf ogin:
sende
USER
.
Nachdem die Verbindung aufgebaut ist, wird sie von pppd
überwacht (genauer: offengehalten). Wenn der pppd
Prozess beendet wird, wird die Verbindung abgebaut, das Modem
legt auf. Geht umgekehrt die Verbindung verloren, etwa
weil der Partner auflegt, beendet sich pppd
normalerweise (sofern er nicht durch eine Option angewiesen wurde,
es nicht zu tun).
Der Normalablauf für den Kontakt mit der Hit hat also die Schritte:
pppd
zum Verbindungsaufbau mit der Hit
pppd
Prozesses, die Verbindung
wird abgebaut.
up
und down
Skripte.
pppd
und chat
sind in der
Linux-Dokumentation (man
) detailliert beschrieben.
up
Skript -- Verbindungsaufbau zur Hit#! /bin/bash #CHATDEBUG="-V -v" #PPPDEBUG="debug" TTY=`tty` CHAT=~/scripts/handshake.chat /usr/sbin/pppd /dev/modem 115200 \ lock modem defaultroute crtscts -ipx-protocol bsdcomp 12 \ connect "/usr/sbin/chat $CHATDEBUG -f $CHAT 2>$TTY"ist ein einfaches Skript zum Verbindungsaufbau mit der Hit. Es setzt voraus, dass
/dev/modem
ein symbolischer
Link auf Eurer Modem/ISDN-Device ist und dass das
chat
Skript in
~/scripts/handshake.chat
liegt.
Beides kann natürlich geändert werden.
Bei Problemen könnt Ihr die Zeilen mit den Debug-Definitionen
durch Löschen des Kommentarzeichens aktivieren.
pppd
protokolliert in diesem Fall über syslog
,
d.h. Ihr findet die Meldungen in /var/log/messages
.
Die chat
Meldungen sollten nach /var/log/messages
und das Terminal gehen.
chat
Skript -- Details der Anmeldung mit der HitABORT BUSY ABORT "NO DIALTONE" ABORT "NO CARRIER" ABORT ERROR REPORT CONNECT TIMEOUT 5 "" ATZ OK ATDT0192378 TIMEOUT 60 CONNECT "" TIMEOUT 15 ogin:--ogin: ppp-user word: passwordist ein
chat
Skript das, abgelegt unter
~/scripts/handshake.chat
, im obigen up
Skript benutzt werden kann.
Die ABORT
Zeilen definieren Fehlersituationen:
sollte das Modem BUSY
bis ERROR
melden, wird
sofort mit Fehler abgebrochen.
Die REPORT
Zeile legt fest, dass wir die connect-Information
sehen möchten. Die TIMEOUT
Zeilen verändern den
Timeout, mit dem auf Antworten gewartet wird. Die
übrigen Zeilen sind die "Warte auf/Sende" Paare.
Die ATZ
wartet auf nichts und sendet ATZ
,
das Modem wird initialisiert. Die nächste Zeile wartet auf
OK
(die Antwort des Modems auf die Initialisierung)
und sendet die Telefonnummer. Dann wird auf CONNECT
gewartet und nur ein Zeilenwechsel gesendet.
Die nächste Regel ist etwas komplexer: es wird auf ogin:
(für login:
) gewartet. Kommt kein ogin:
in der Timeout-Zeit an, wird der String zwischen den beiden -
geschickt (es wird automatisch ein Zeilenvorschub angehängt, also
tatsächlich ein weiterer Zeilenvorschub gesendet) und
wieder auf ogin:
gewartet. Im Erfolgsfall
wird ppp-user
geschickt, Eure
Benutzerkennung für ppp
Benutzung.
Dann wird auf word:
(für Password:
)
gewartet und password geschickt, Eurer Online-Kennwort.
Selbstverständlich müsst Ihr user und password durch Eure Benutzerkennung und Euer Online Kennwort ersetzen.
Achtung: Wenn Ihr in einer unsicheren Umgebung seid, solltet Ihr sicherstellen, dass das Skript nur von Euch gelesen werden kann. Wer es liest, erfährt Eure Handshake Anmeldeinformation und kann auf Eure Kosten surfen!
down
Skript -- Verbindungsabbau#!/bin/sh # /etc/ppp/ppp-down # (c) Klaus Franken, S.u.S.E. GmbH Fuerth, Germany # 12.06.97, kfr@suse.de DEVICE=ppp0 FILE=/var/run/$DEVICE.pid if test -r $FILE ; then echo "Killing PPP: $DEVICE" kill -INT `cat $FILE` if test $? != 0; then echo "WARNING: stale pid file or pppd still running" echo " please check by hand" rm -rf $FILE exit 1 fi else echo "PPP not running on $DEVICE" exit 2 fi exit 0beendet den
pppd
Prozess und baut damit die
Verbindung ab. Ihr seht, das Skript enthält nichts
Handshake Spezifisches und kann für den Abbruch aller
ppp0
Verbindungen genutzt werden.
Es benutzt, dass pppd
in der Datei
/var/run/ppp0.pid
seine Prozessnummer ablegt.
Das obige up
Skript baut zwar eine Verbindung
auf, aber es sagt nicht, wenn es damit fertig ist.
Wenn man zu früh einen Kontakt versucht, erhält
man eine hässliche Fehlermeldung: network is unreachable
.
Wen das stört, der kann fortschrittliche Möglichkeiten
von pppd
benutzen, um über den abgeschlossenen Aufbau
informiert zu werden.
pppd
ruft die Programme/Skripte /etc/ppp/ip-up
und /etc/ppp/ip-down
beim Auf- bzw. Abbbau
einer IP-Verbindung auf, sofern sie existieren.
ACHTUNG: Diese Skripte werden als root
ausgeführt. Sie stellen ein Sicherheitsrisiko dar.
Ihr solltest sicherstellen, dass sie nur als root
verändert/angelegt werden können, sofern Ihr in einer
unsicheren Umgebung seid.
#! /bin/bash FILE=/var/run/$1.ready echo `date` $* > $FILE
legt die Datei /var/run/ppp0.ready
an.
Es kann als ip-up
Skript verwendet werden.
#! /bin/bash FILE=/var/run/$1.ready /bin/rm -f $FILE
löscht die Datei /var/run/ppp0.ready
.
Es kann als ip-down
Skript benutzt
werden.
Sofern die Skripte entsprechend verwendet werden,
ist im Normalfall (das heißt, wenn pppd
nicht
auf ungewöhnliche Weise beendet wurde und das ip-down
Skript nicht ausgeführt werden konnte) die Existenz
von /var/run/ppp0.ready
ein Indiz dafür, dass
eine IP-Verbindung besteht.
#! /bin/bash #CHATDEBUG="-v -V" #PPPDEBUG="debug" BASE=/var/run/ppp0 TTY=`tty` CHAT=~/scripts/handshake.chat /usr/sbin/pppd /dev/modem 115200 \ lock modem defaultroute crtscts -ipx-protocol bsdcomp 12 -detach \ connect "/usr/sbin/chat $CHATDEBUG -f $CHAT 2>$TTY" & PID=$! while true; do if [ -f $BASE.ready ]; then exit 0; fi if kill -0 $PID; then sleep 2; continue; fi exit 1 done
ist ein erweitertes up
Skript.
Es nutzt dieses Indiz, um erst zurückzukehren, wenn
die Verbindung steht, oder pppd
sich wegen
eines Fehlers beendet hat.
Wie oben erwähnt, dürfte diald
wesentlich
mehr Komfort bieten.
Natürlich können die Skripte noch Fehler enthalten. Bitte habt Verständnis, dass ich keinerlei Garantie übernehmen kann und die Benutzung vollständig auf Euer Risiko geht. Ich bin aber an Problemmeldungen interessiert und helfe Euch gerne bei der Analyse Eurer Probleme. Die Ergebnisse werden in eine Verbesserung der Skripte einfließen.