

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % PPP-Verbindung
 % Copyright Jörn Absatz, Alexander Fischer
 % Lizenz: GFDL
 % 
 % $Name: $
 % $Revision: 1.3.2.3 $
 % $Source: /cvsroot/selflinux/tutorial/test/gpghandbook/concepts,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: ppp-verbindung,v 1.3.2.3 2003/04/19 22:05:08 motw_1 Exp $

	\title{PPP-Verbindung}


	
	    \author{Jörn Absatz}
	    %\url{mailto:mail.absatz.de}
    
	    \author{Alexander Fischer}
	    %\url{mailto:selflinux@tbanus.de}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{andere_dienste1.tex}
		Internet
		%\ref{Zugang.tex}
		Zugang
	\ref{PPP-Verbindung}

    \par{Layout}
    Matthias Hagedorn
	    %\url{mailto:herbert-kw@t-online.de}
    
    	\par{Lizenz}
	GFDL
 
	\tableofcontents{}

        
	\section{PPP-Verbindung von Hand herstellen: pppd und chat} \label{d41e89}
        
   
   

   
  \par
  
Um eine PPP-Verbindung herzustellen, ruft man auf: {\bf /usr/sbin/pppd}.
{\bf pppd} ruft seinerseits auf: {\bf /usr/sbin/chat}. {\bf chat} stellt das Modem ein,
wählt den Provider an, identifiziert sich und verlangt vom Provider,
den PPP-Server zu starten. Dann gibt es zurück an {\bf pppd}.
   
   
   
  \par
  
{\bf pppd} verhandelt dann mit dem PPP-Server über den Aufbau einer
PPP-Verbindung und bekommt schließlich zwei temporäre IP-Nummern:
eine für den lokalen Rechner und eine zweite für den Rechner auf
der Provider-Seite. Über diese IP-Nummern wird dann der Verkehr
mit dem Internet abgewickelt. Anfragen ans Internet gehen an
die IP-Nummer des Providers, Antworten aus dem Internet gehen
an die lokale IP-Nummer.
   
  \section{PPP-Verbindung von Hand beenden:} \label{d41e121}
        

   

   
  \par
  
Die Verbindung kann beendet werden mit dem Shell-Skript
{\bf /usr/sbin/poff}.
   
  \section{Parameter / Optionen für pppd und chat} \label{d41e135}
        

   

   
  \par
  
{\bf pppd} benötigt einige Parameter (Optionen). Es sucht diese Parameter
in der Datei {\bf /etc/ppp/options} und in der Kommandozeile.
Die Kommandozeilenparameter haben Vorrang.
   

   
  \par
  
Die Bedeutung jedes Parameters sieht man sich mit {\bf man pppd} an.
Bei mir lautet der Aufruf von {\bf pppd} folgendermaßen:
   

   
	 \begin{tt} \begin{scriptsize} root@linux / \# 
/usr/sbin/pppd $\backslash$
/dev/modem $\backslash$
115200 $\backslash$
asyncmap 0 $\backslash$
noauth $\backslash$
crtscts $\backslash$
debug $\backslash$
lock $\backslash$
modem $\backslash$
defaultroute $\backslash$
proxyarp $\backslash$
noipdefault $\backslash$
lcp-echo-interval 30 $\backslash$
lcp-echo-failure 4 $\backslash$
ipcp-accept-local $\backslash$
ipcp-accept-remote $\backslash$
noipx $\backslash$
connect ''/usr/sbin/chat -v -f /etc/chatscripts/cis'' $\backslash$
user \verb+<+meine user-id\verb+>+ $\backslash$
disconnect ''/usr/sbin/chat -v -f /etc/chatscripts/hangup''
	 \end{scriptsize} \end{tt} \linebreak 
   

   
  \par
  
Das Ganze ist eine einzige Kommandozeile. Die Schrägstriche am Ende
jeder Zeile bedeuten:
{\bf Diese Zeile wird in der nächsten Zeile fortgesetzt}.
   

   
  \par
  
Der komplizierteste ist der Parameter {\bf connect}. Der Inhalt dieses
Parameters ist selbst wiederum eine komplette Kommandozeile mit
Parametern / Optionen. Nämlich der Aufruf des Programms
{\bf chat}.
   
  \section{Der Parameter connect bzw. der chat-Aufruf} \label{d41e185}
        

   

	
  \par
  
Das Programm {\bf chat} wickelt ein Frage-Antwort-Spiel
ab nach dem Muster:
   

   
  \par
  
Warte auf \verb+<+Ausgabe vom Provider\verb+>+, antworte \verb+<+lokale Eingabe\verb+>+, \linebreak 
Warte auf \verb+<+Ausgabe vom Provider\verb+>+, antworte \verb+<+lokale	Eingabe\verb+>+, \linebreak 
Warte auf \verb+<+Ausgabe vom Provider\verb+>+, antworte \verb+<+lokale	Eingabe\verb+>+, usw.
   

	
  \par
  
Die Liste von Fragen und Antworten kann in einer Datei z.B.
{\bf /etc/chatscripts/cis} oder in der Kommandozeile übergeben werden.
	

   \subsection{Chatskript /etc/chatscripts/cis2 für Compuserve (neues Netz):} \label{d41e211}
        

	

	\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /etc/chatscripts/cis2 für Compuserve (neues Netz)\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
"" ATZ
OK ATDT25449324
CONNECT ""
"Login:" cisv1
"Password:" classic
"User ID:" "<meine user-id>/noint/go:pppconnect"
"Password: " "<mein passwort>"
	 \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

	
  \par
  
Diese Zeilen bedeuten: \linebreak 
warte auf nichts - antworte mit Modembefehl: Reset, \linebreak 
warte auf Meldung vom Modem: OK -antworte mit Modembefehl:
Tonwahl Compuserve, \linebreak 
warte auf Meldung vom Modem: CONNECT - antworte mit nichts (d.h. nur
Zeilenvorschub), \linebreak 
Die restlichen 3 Zeilen sind die Verhandlung mit dem Provider.
	
   

   \subsection{Chatskript /etc/chatscripts/cis für Compuserve (altes Netz):} \label{d41e239}
        

	

	\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /etc/chatscripts/cis für Compuserve (altes Netz)\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
'' 'ATZ'
'OK' 'ATDT0406913666'
'CONNECT' ''
'Host Name:' 'CIS'
'User ID:' '<meine user id>/GO:PPPCONNECT'
'Password:' '<mein passwort>'
	 \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
   



   \subsection{Chatskript /etc/chatscripts/ton für T-Online:} \label{d41e256}
        

	

	\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /etc/chatscripts/ton für T-Online\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
"" ATZ
OK ATDT0191011
CONNECT
	 \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

	
  \par
  
Hinter {\bf CONNECT} habe ich noch ein Leerzeichen stehen,
ich bin allerdings nicht sicher, ob das wirklich nötig ist.
	

	
  \par
  
Aus verschiedenen Newsgroup-Beiträgen weiß ich, daß es bei
T-Online sehr darauf ankommt, was man nach der Meldung
{\bf Connect} (vom Modem) noch an T-Online sendet, damit dort
auch tatsächlich der PPP-Server gestartet wird.
	

	
  \par
  
Die obige Version meines Chat-Skripts läuft zur Zeit mit Debian-Linux
2.1 (slink). Vor einem dreiviertel Jahr lief mit Debian-Linux 2.0
(hamm)folgende Version:
	

	\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        Debian-Linux 2.1 /etc/chatscripts/ton für T-Online\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
"" ATZ
OK ATDT0191011
CONNECT \d\c
	 \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
   

   \subsection{Chatskript /etc/chatscripts/hangup für den pppd-Parameter disconnect:} \label{d41e303}
        

	

	\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /etc/chatscripts/hangup für den pppd-Parameter
disconnect
	 \end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
'' '\K\d'
'' '+++\d'
'' 'ATH\d'
'' 'ATZ'
	 \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

	
  \par
  
Diese Zeilen bedeuten: \linebreak 
warte auf nichts - lass das Modem einen BREAK senden, warte 1 Sekunde, \linebreak 
warte auf nichts - Modembefehl Kommandomodus, warte 1 Sekunde, \linebreak 
warte auf nichts - Modembefehl Aufhängen,warte 1 Sekunde, \linebreak 
warte auf nichts - Modembefehl Reset
	
   

   \subsection{Chatskript für andere Provider: minicom} \label{d41e331}
        

	

	
  \par
  
Ein Terminalprogramm wie z.B. minicom kann man benutzen, um das
Chatskript für andere Provider bzw. andere Einwahlprozeduren zu
ermitteln. Für Compuserve muß man die Modemparameter auf 7E1
einstellen (7 Bit Data, Even Parity, 1 Stop Bit), sonst auf 8N1.
	
   
  \section{Der Parameter /dev/modem für pppd:} \label{d41e346}
        

   

   
  \par
  
{\bf /dev/modem} bedeutet das Gerät bzw. die Schnittstelle für die
PPP-Verbindung. Wenn das Gerät {\bf /dev/modem} noch nicht vorhanden
ist, kann man es z.B. erzeugen mit {\bf cp /dev/ttyS0 /dev/modem} ,
dabei steht {\bf ttyS0} für {\bf COM1}, {\bf ttyS1} für {\bf COM2}, usw.
   
  \section{Der Parameter user für pppd:} \label{d41e378}
        

   

   
  \par
  
Während der PPP-Verhandlung (das ist nach Beendigung des
{\bf chat}-Programms) benötigt {\bf pppd} noch einmal die User-ID und das
Passwort. Bei Compuserve gehen also User-ID und Passwort zweimal durch
die Leitung: Einmal mit {\bf chat} und einmal mit
{\bf pppd}.
   

   
  \par
  
Wenn User-ID und Passwort gesendet werden müssen, nimmt {\bf pppd} den
Inhalt des Parameters user und schlägt dann das Passwort in der Datei
{\bf /etc/ppp/pap-secrets} nach. Dort sucht es nach einer Zeile der Form
   

   
	{\bf \verb+<+user-id\verb+>+ * \verb+<+passwort\verb+>+}
   

   
  \par
  
Die User-ID in Compuserve besteht üblicherweise aus einer
sechsstelligen Zahl, gefolgt von einem Komma, gefolgt von einer
dreistelligen Zahl, Beispiel: 123456,789
   

   
  \par
  
Die User-ID in T-Online besteht aus der Anschlusskennung
(z.B. 000011112222), gefolgt von der T-Online-Nummer
(z.B. 320044445555), gefolgt von einer Raute, gefolgt von der
Mitbenutzernummer, (z.B. 0001). Beispiel:
000011112222320044445555\#0001
   

   
  \par
  
Die T-Online-Nummer ist im allgemeinen von der Telefonnummer
abgeleitet. Die Anschlusskennung ist die erste und längere der beiden
Zahlen, die Sie geheimhalten sollten, und die Ihnen im Brief auf
dunklem Untergrund mitgeteilt wurde. (Die zweite Zahl, die Sie
geheimhalten sollten, ist das Passwort).
   

   
  \par
  
Wenn - wie z.B. bei T-Online - die User-ID eine Raute (\#) enthält,
oder wenn sie Leerzeichen enthält, sollte die User-ID in
Anführungszeichen eingeschlossen werden. Die Raute könnte sonst als
Kommentarzeichen ({\bf alles was jetzt kommt, ist nur Kommentar ohne
Bedeutung}) bzw. das Leerzeichen als Parameter-Trennzeichen
interpretiert werden.
   
  \section{PPP-Verbindung automatisch herstellen: diald} \label{d41e434}
        

   

   
  \par
  
Der Ablauf ist hier so: {\bf diald} erzeugt beim Start einen Proxy-Server,
über den alle Netzanfragen gehen. Wenn der Proxy merkt, daß eine
gewünschte IP-Nummer im lokalen Netz nicht vorhanden ist, läßt er
diald eine PPP-Verbindung aufbauen. Wenn die Verbindung eine gewisse
Zeit nicht benutzt wird, baut {\bf diald} die Verbindung wieder ab und
läßt das Modem auflegen.
   

   
  \par
  
Zum Herstellen der Verbindung ruft diald erst {\bf chat} und anschließend
{\bf pppd} auf. Die Kommandozeile zum Aufruf von {\bf chat} und sämtliche
Parameter für {\bf pppd} werden beim Aufruf von diald nur an {\bf diald}
übergeben. {\bf diald} gibt sie dann bei Bedarf weiter an {\bf chat} bzw. an {\bf pppd}.
Der Parameter {\bf connect} fehlt also diesmal bei den Parametern für {\bf pppd},
statt dessen bekommt ihn {\bf diald}.
   
  \section{Parameter-Datei /etc/diald/diald.options} \label{d41e487}
        

   
   
   \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /etc/diald/diald.options\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
mode ppp
device /dev/modem
connect "/usr/sbin/chat -v -f /etc/chatscripts/ton"
speed 115200
modem
lock
crtscts
local 127.0.0.2
remote 127.0.0.3
dynamic
defaultroute
include /etc/diald/standard.filter
pppd-options \
debug \
noauth \
user <meine user-id> \
ipcp-accept-local \
ipcp-accept-remote
debug 0x007D
	\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
  \section{Die Datei /etc/ppp/options muß für diald leer sein:} \label{d41e504}
        

   

   
  \par
  
Falls eine Datei {\bf /etc/ppp/options} vorhanden ist, wird ihr Inhalt {\bf diald}
stören. Irgendwo habe ich gelesen, daß diese Datei aber auch nicht
ganz fehlen darf, sie muß vorhanden, aber leer sein.
   
  \section{Erfolgskontrolle: früher in /var/log/ppp.log - jetzt in /var/log/debug:} \label{d41e521}
        

   

   
  \par
  
Wenn diald richtig läuft, sollte die Logdatei etwa so aussehen:
   
   
   \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /var/log/debug\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
Jul 26 15:04:54 server diald[136]: Running connect (pid = 392).
Jul 26 15:04:54 server chat[392]: abort on (BUSY)
Jul 26 15:04:54 server chat[392]: abort on (NO CARRIER)
Jul 26 15:04:54 server chat[392]: abort on (VOICE)
Jul 26 15:04:54 server chat[392]: abort on (NO DIALTONE)
Jul 26 15:04:54 server chat[392]: abort on (NO ANSWER)
Jul 26 15:04:54 server chat[392]: send (ATZ^M)
Jul 26 15:04:54 server chat[392]: expect (OK)
Jul 26 15:04:54 server chat[392]: ^M
Jul 26 15:04:54 server chat[392]: OK
Jul 26 15:04:54 server chat[392]: -- got it
Jul 26 15:04:54 server chat[392]: send (ATDT0191011^M)
Jul 26 15:04:54 server chat[392]: expect (CONNECT)
Jul 26 15:04:54 server chat[392]: ^M
Jul 26 15:05:21 server chat[392]: ^M
Jul 26 15:05:21 server chat[392]: CONNECT
Jul 26 15:05:21 server chat[392]: -- got it
Jul 26 15:05:21 server chat[392]: send (\d)
Jul 26 15:05:22 server diald[136]: Running pppd (pid = 425).
Jul 26 15:05:22 server diald[425]: Running pppd: /usr/sbin/pppd
-detach modem crtscts mtu 1500 mru 1500 debug noauth user <my user id>
ipcp-accept-local ipcp-accept-remote
Jul 26 15:05:22 server pppd[425]: pppd 2.3.5 started by root, uid 0
Jul 26 15:05:22 server pppd[425]: Using interface ppp0
Jul 26 15:05:22 server pppd[425]: Connect: ppp0 <--> /dev/ttyS1
Jul 26 15:05:22 server pppd[425]: sent [LCP ConfReq id=0x1 <magic
0x9b58> <pcomp> <accomp>]
Jul 26 15:05:23 server pppd[425]: rcvd [LCP ConfReq id=0x1 <mru 1524>
<asyncmap 0xa0000> <auth pap> <pcomp> <accomp> < 13 09 03 00 c0 7b 7d
a5 75>]
Jul 26 15:05:23 server pppd[425]: sent [LCP ConfRej id=0x1 < 13 09 03
00 c0 7b 7d a5 75>]
Jul 26 15:05:23 server pppd[425]: rcvd [LCP ConfAck id=0x1 <magic
0x9b58> <pcomp> <accomp>]
Jul 26 15:05:23 server pppd[425]: rcvd [LCP ConfReq id=0x2 <mru 1524>
<asyncmap 0xa0000> <auth pap> <pcomp> <accomp>]
Jul 26 15:05:23 server pppd[425]: sent [LCP ConfAck id=0x2 <mru 1524>
<asyncmap 0xa0000> <auth pap> <pcomp> <accomp>]
Jul 26 15:05:23 server pppd[425]: sent [PAP AuthReq id=0x1 user="<my
user id>" password="<my password>"]
Jul 26 15:05:23 server pppd[425]: rcvd [PAP AuthAck id=0x1 ""]
Jul 26 15:05:23 server pppd[425]: Remote message:
Jul 26 15:05:23 server pppd[425]: sent [IPCP ConfReq id=0x1 <addr
192.168.13.17> <compress VJ 0f 01>]
Jul 26 15:05:23 server pppd[425]: rcvd [IPCP ConfReq id=0x1 <compress
VJ 0f 01> <addr 193.158.143.45>]
Jul 26 15:05:23 server pppd[425]: sent [IPCP ConfAck id=0x1 <compress
VJ 0f 01> <addr 193.158.143.45>]
Jul 26 15:05:23 server pppd[425]: rcvd [IPCP ConfNak id=0x1 <addr
62.156.32.53>]
Jul 26 15:05:23 server pppd[425]: sent [IPCP ConfReq id=0x2 <addr
62.156.32.53> <compress VJ 0f 01>]
Jul 26 15:05:23 server pppd[425]: rcvd [IPCP ConfAck id=0x2 <addr
62.156.32.53> <compress VJ 0f 01>]
Jul 26 15:05:23 server pppd[425]: local IP address 62.156.32.53
Jul 26 15:05:23 server pppd[425]: remote IP address 193.158.143.45
Jul 26 15:05:23 server diald[136]: New addresses: local 62.156.32.53,
remote 193.158.143.45.
Jul 26 15:08:35 server diald[136]: Closing down idle link.
Jul 26 15:08:35 server pppd[425]: Terminating on signal 2.
Jul 26 15:08:35 server pppd[425]: sent [LCP TermReq id=0x2 "User
request"]
Jul 26 15:08:35 server pppd[425]: rcvd [LCP TermAck id=0x2]
Jul 26 15:08:35 server pppd[425]: Connection terminated.
Jul 26 15:08:36 server pppd[425]: Exit.
Jul 26 15:08:38 server diald[136]: Delaying 30 seconds before clear to
dial.
	\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
  \section{Zum Surfen werden Nameserver-Eintragungen in /etc/resolv.conf gebraucht:} \label{d41e544}
        

   

   \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        /etc/resolv.conf\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
#Nameserver für Compuserve:
search compuserve.com
nameserver 195.232.32.6
nameserver 195.232.32.7

#Nameserver für T-Online:
search btx.dtag.de
nameserver 194.25.2.129
	\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
  \section{Weitere Informationsquellen:} \label{d41e561}
        

   

   \begin{list}{*}{}
	
	\item 
Alberts Homepage - die umfassendste Seite zu T-Online und PPP, die ich
bisher gesehen habe - (http://www/albert-rommel.de/ppp.htm)
	
	
	\item 
T-Online / linux / ppp
(http://www.student.informatik.tu-darmstadt.de/\~{}kflo/lll/t-online/ppp.htm)
	
	
	\item 
Besonderheiten des Netzzugangs bei T-Online
(http://home.t-online.de/home/Diedrich.Ehlerding/besonderheiten.html)
	
	
	\item 
ZDNet-Special zum Thema Linux
(http://www.zdnet.de/produkte/artikel/sw/linuxspecial/linuxspecial01-wf.html)
	
	
	\item 
PPP Help (http://howto.linuxberg.com/)
	
	
	\item 
T-Online PPP (http://www.et.FH-Osnabrueck.de/\~{}std7765)
	
	
	\item 
T-Online PPP unter Linux (http://raum.net/A/ar\_ppp/linux-text.htm)
	
	
	\item 
Suse Linux DB: T-Online Zugang mit PPP
	  (http://www.suse.de/Support/sdb/toppp.html)
    
	
	\item 
The diald Homepage (http://www.loonie.net/\~{}eschenk/diald.html)
	
   \end{list}
  
	\ref{inhalt.tex}


	\end{document}
	
