Internetzugang über Uni Oldenburg
Von Michael GranzowInternet-Zugang mit Modem über den PPP-server des Hochschulrechenzentrums der Universität Oldenburg mit GNU/Linux.
Vorbemerkung:
Diese Seite ist nur eine praktische Gebrauchsanweisung. Details und Hintergründe zu Netzwerken unter GNU/Linux werden hier nicht beschrieben. Wen es nach mehr Information gelüstet, der sei auf die exzellenten Online-Dokumente verwiesen, die es zu diesem Thema gibt:
- Network Administrator's Guide (NAG) , version 1.0, by Olaf Kirch.
- PPP HOWTO ausfürliche information zu PPP (point-to-point-protocol) unter linux.
- Serial HOWTO Benutzung der Seriellen Schnittstellen (Modems, Terminals) mit GNU/Linux.
- PPP FAQ Frage-Antwort-Katalog zu PPP-Networking unter GNU/Linux.
- ISP-Hookup-HOWTO Einwahl bei einem Internet Service Provider.
Allgemeines:
Die PPP-Unterstützung besteht bei GNU/Linux aus mehreren Komponenten: zum einen dem PPP-Treiber im Kern, zum anderen dem PPP-Daemon auf User-Ebene sowie einem Programm zum Herstellen der Verbindung (Chat) und schließlich aus einer Handvoll Konfigurationsdateien, mit denen das Setup an das Modem und an den PPP-Server angepaßt wird.
Procedere:
Die folgenden Schritte müssen unternommen werden, bevor man sich einwählen kann:
- Anpassung des Kernels
- Installation von pppd (PPP Daemon) und chat (Programm zum Verbindungsaufbau)
- Editieren einiger System-Konfigurations-Dateien
- Erzeugen einiger PPP-spezifischen Dateien
Anpassung des Kernels
Wer noch keine Erfahrung mit dem Compilieren des Kernels hat: es genügt, sich an die Anleitung in /usr/src/linux/README zu halten. Wenn man allerdings verstehen will, was man macht, sollte man das Kernel HOWTO zu Rate ziehen. Die folgenden Variablen müssen mit make config (oder make xconfig) gesetzt werden (auszüge aus /usr/src/linux/.config; diese Datei wird automatisch mit make config erzeugt):
CONFIG_MODULES=y
CONFIG_KERNELD=y
.
.
.
.
.
.
CONFIG_NET=y
.
.
.
...
CONFIG_INET=y
.
.
.
CONFIG_NETDEVICES=y
CONFIG_PPP=m
.
.
.
CONFIG_SERIAL=m
Natürlich könnt ihr auch auf Kernel-Daemon und
ladbare Kernel-Module verzichten, dann wäre `m' durch `y'
zu ersetzen. Nach dem Übersetzen des Kernels muß der Rechner
mit dem neuen Kernel gebootet werden.
Installation
Der pppd sowie chat sollten bei jeder Distribution im Lieferumfang enthalten sein. Hier sind pppd und chat über FTP zu beziehen.Editieren von Dateien
Im Verzeichnis /etc müssen einige Dateien editiert werden:/etc/host.conf:
order hosts bind
multi on
order gibt die Reihenfolge an, in der die Dienste zum
ÜBersetzen von host names in IP-Nummern verwendet werden.
Dies braucht ihr, wenn ihr nicht alle Nummern auswendig wißt, sondern
manchmal auch dummy.hrz.uni-oldenburg.de o. ä. verwenden wollt. wie
angegeben wird zuerst die Datei /etc/hosts konsultiert und dann - falls dies
nicht zum erfolg geführt hat - der Berkeley Internet Name Domain
Service (bind). letzterer benötigt einen
nameserver, der in der datei
/etc/resolv.conf:
domain uni-oldenburg.de
nameserver 134.106.49.2
nameserver 134.106.40.3
nameserver 134.106.1.7
Beim Namen (eigentlich sollte man sagen bei der Nummer) genannt wird.
nameservers sind Computer, die Rechnernamen in IP-Nummern
übersetzten. Deshalb müssen zumindest ihre IP-Nummern lokal
bekannt sein.
/etc/group: fügt die folgende Gruppe hinzu.
ppp:x:15:ppp_user1,ppp_user2
ppp_user? ist natürlich durch die users
zu ersetzen, die eine PPP-Verbindung in Gang setzen dürfen
(wenn diese einmal besteht, kann jeder user sie benutzen).
Erzugen von Dateien
zieht euch
Diese tar-Datei, aus dem alle Konfigurationsdateien (fast :)
unverändert übernommen werden können. Entpackt es
anschließend als root in eurem Hauptverzeichnis (unter der
Annahme, daß euer tar nicht aus großvaters zeiten stammt):
etc/
etc/ppp/
etc/ppp/options
etc/ppp/chap-secrets
etc/ppp/pap-secrets
etc/ppp/scripts/
etc/ppp/scripts/ppp-on
etc/ppp/scripts/ppp-off
etc/ppp/scripts/ppp-on-dialer
usr/
usr/doc/
usr/doc/howto/
usr/doc/howto/HTML/
usr/doc/howto/HTML/PPP-HOWTO-1.html
[...]
usr/doc/howto/HTML/toc.gif
usr/doc/howto/HTML/procedere.html
Gestartet wird die PPP-Verbindung mit dem Shell-Skript
/etc/ppp/scripts/ppp-on. Dieses setzt zunächst einige Variablen und
ruft dann das Shell-Skript /etc/ppp/scripts/ppp-on-dialer auf. Zu den
Variablen im einzelnen:
- PPPD gibt an, wo sich das Programm pppd auf eurem Rechner befindet. Bei mir steht es im Verzeichnis /usr/sbin, womöglich weicht eure Distribution davon ab.
- CHAT gibt den Ort von chat an und setzt gleichzeitig die Option `-v' (verbose mode, siehe man chat).
- MODEM bezeichnet die Schnittstelle, an die euer modem angeschlossen ist. Bei mir hängt die Maus an der ersten (/dev/ttyS0) und das Modem an der zweiten (/dev/ttyS1). Paßt diese Variable bitte an eure Verkabelung an. (anmerkung)
- SPEED gibt an, wie schnell euer Modem ist. Siehe die Erläuterung im Serial-HOWTO.
- NAME entält den login string, der euch vom HRZ zugewiesen wurde. HRZ-NAME ist entsprechend zu ersetzen.
- INITSTRING ist der AT-Befehl zur Initialisierung eures Modems. "&F" lädt die Standard-Einstellung ab Werk, die meistens alle voraussetzungen für den PPP-Betrieb schafft. siehe hierzu die entsprechende Anmerkung im PPP-howto.
- DIAL ist auf `T' zu setzen, wenn euer telefonanschluß das Frequenzwahlverfahren verwendet und auf `P', wenn das (alte) Pulswahlverfahren verwendet wird.
Starten der Verbindung
nach all diesen Vorarbeiten kann nun die PPP-Verbindung aufgebaut werden:
da debug eine der Optionen ist, die pppd beim Aufruf
übergeben werden, teilt pppd wichtige Informationen dem
Syslog-Daemon mit. Dieser schreibt sie (meistens, siehe man
syslogd) in die Datei /var/log/messages, die nur der Superuser
lesen darf. Wenn die Verbindung wie vorgesehen aufgebaut wird,
enthält /var/log/messages (ungefähr) die folgenden
Zeilen:
...
Jul 31 09:38:15 localhost kernel: CSLIP: code copyright 1989 Regents of the University of California
Jul 31 09:38:15 localhost kernel: PPP: version 2.2.0 (dynamic channel allocation)
Jul 31 09:38:15 localhost kernel: PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
Jul 31 09:38:15 localhost kernel: PPP line discipline registered.
Jul 31 09:38:15 localhost kernel: registered device ppp0
Jul 31 09:38:15 localhost pppd[367]: pppd 2.2.0 started by pppuser, uid 007
Jul 31 09:38:16 localhost chat[373]: timeout set to 3 seconds
Jul 31 09:38:16 localhost chat[373]: abort on (\nBUSY\r)
Jul 31 09:38:16 localhost chat[373]: abort on (\nNO ANSWER\r)
Jul 31 09:38:16 localhost chat[373]: abort on (\nRINGING\r\n\r\nRINGING\r)
Jul 31 09:38:16 localhost chat[373]: send (AT&F^M)
Jul 31 09:38:16 localhost chat[373]: timeout set to 30 seconds
Jul 31 09:38:16 localhost chat[373]: expect (OK)
Jul 31 09:38:16 localhost chat[373]: AT&F^M^M
Jul 31 09:38:16 localhost chat[373]: OK - got it
Jul 31 09:38:16 localhost chat[373]: send (ATDT0441779010^M)
Jul 31 09:38:16 localhost chat[373]: expect (CONNECT)
Jul 31 09:38:16 localhost chat[373]: ^M
Jul 31 09:38:38 localhost chat[373]: ATDT0441779010^M^M
Jul 31 09:38:38 localhost chat[373]: CONNECT - got it
Jul 31 09:38:38 localhost chat[373]: send (^M)
Jul 31 09:38:38 localhost pppd[367]: Serial connection established.
Jul 31 09:38:39 localhost pppd[367]: Using interface ppp0
Jul 31 09:38:39 localhost pppd[367]: Connect: ppp0 <-> /dev/ttyS1
Jul 31 09:38:39 localhost pppd[367]: sent [LCP ConfReq id=0x1 <mru 1500> <asyncmap 0x0> <magic 0x399bfbb7> &
lt;pcomp> <accomp>]
Jul 31 09:38:40 localhost pppd[367]: rcvd [LCP ConfReq id=0x1 <mru 1524> <asyncmap 0xa0000> <auth chap md5>
<pcomp> <accomp> < 13 09 03 00 c0 7b 61 85 13> < 17 04 9c 00>]
Jul 31 09:38:40 localhost pppd[367]: sent [LCP ConfRej id=0x1 < 13 09 03 00 c0 7b 61 85 13> < 17 04 9c 00>]
Jul 31 09:38:40 localhost pppd[367]: rcvd [LCP ConfAck id=0x1 <mru 1500> <asyncmap 0x0> <magic 0x399bfbb7> &
lt;pcomp> <accomp>]
Jul 31 09:38:40 localhost pppd[367]: rcvd [LCP ConfReq id=0x2 <mru 1524> <asyncmap 0xa0000> <auth chap md5>
<pcomp> <accomp>]
Jul 31 09:38:40 localhost pppd[367]: sent [LCP ConfAck id=0x2 <mru 1524> <asyncmap 0xa0000> <auth chap md5>
<pcomp> <accomp>]
Jul 31 09:38:40 localhost pppd[367]: rcvd [CHAP Challenge id=0x1 <2a4ef42fb5co9836c2b097ebb15eed7r>, name = "dialsrv1"]
Jul 31 09:38:40 localhost pppd[367]: sent [CHAP Response id=0x1 <218beb7545deba68c2t2afc5ez3429303>, name = "HRZ-NAME"]
Jul 31 09:38:41 localhost pppd[367]: rcvd [CHAP Success id=0x1 "\000"]
Jul 31 09:38:41 localhost pppd[367]: Remote message:
Jul 31 09:38:41 localhost pppd[367]: sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <compress VJ 0f 01>]
Jul 31 09:38:41 localhost pppd[367]: rcvd [CCP ConfReq id=0x1 < 11 06 00 01 01 03>]
Jul 31 09:38:41 localhost pppd[367]: sent [CCP ConfReq id=0x1]
Jul 31 09:38:41 localhost pppd[367]: sent [CCP ConfRej id=0x1 < 11 06 00 01 01 03>]
Jul 31 09:38:41 localhost pppd[367]: rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 134.106.40.219>]
Jul 31 09:38:41 localhost pppd[367]: sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 134.106.40.219>]
Jul 31 09:38:41 localhost pppd[367]: rcvd [proto=0x8031] 01 01 00 0a 03 03 01 07 03 00
Jul 31 09:38:41 localhost pppd[367]: Unknown protocol (0x8031) received
Jul 31 09:38:41 localhost pppd[367]: sent [LCP ProtRej id=0x2 80 31 01 01 00 0a 03 03 01 07 03 00]
Jul 31 09:38:41 localhost pppd[367]: rcvd [proto=0x802b] 01 01 00 18 01 06 cf cf 12 34 02 08 00 c0 7b 61 85 13 04 04 00 00 06
02
Jul 31 09:38:41 localhost pppd[367]: Unknown protocol (0x802b) received
Jul 31 09:38:41 localhost pppd[367]: sent [LCP ProtRej id=0x3 80 2b 01 01 00 18 01 06 cf cf 12 34 02 08 00 c0 7b 61 85 13 04 0
4 00 00 06 02]
Jul 31 09:38:41 localhost pppd[367]: rcvd [IPCP ConfNak id=0x1 <addr 134.106.40.228>]
Jul 31 09:38:41 localhost pppd[367]: sent [IPCP ConfReq id=0x2 <addr 134.106.40.228> <compress VJ 0f 01>]
Jul 31 09:38:41 localhost pppd[367]: rcvd [CCP ConfRej id=0x1]
Jul 31 09:38:41 localhost pppd[367]: rcvd [IPCP ConfAck id=0x2 <addr 134.106.40.228> <compress VJ 0f 01>]
Jul 31 09:38:41 localhost pppd[367]: local IP address 134.106.40.228
Jul 31 09:38:41 localhost pppd[367]: remote IP address 134.106.40.219
Entscheidend sind die Zeilen serial connection established und
local IP address 134.106.40.228. Da der PPP-Server am HRZ
IP-Adressen dynamisch vergibt, werdet ihr jedesmal eine andere
bekommen. (Anmerkung zu unknown
protocol) das Programm ifconfig gibt Auskunft über
das nun vom pppd konfigurierte network interface:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
ppp0 Link encap:Point-Point Protocol
inet addr:134.106.40.228 P-t-P:134.106.40.219 Mask:255.255.0.0
UP POINTOPOINT RUNNING MTU:1524 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0
TX packets:11 errors:0 dropped:0 overruns:0
Weitere Information liefert der Aufruf von netstat:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
134.106.40.219 * 255.255.255.255 UH 1524 0 0 ppp0
loopback * 255.0.0.0 U 3584 0 0 lo
default 134.106.40.219 0.0.0.0 UG 1524 0 0 ppp0
Nun ist euer Internet-Zugang hergestellt und die PPP-Verbindung wird als
default route verwendet. viel spaß beim
surfen ... aber denkt an die Telefonrechnung!Auf Dauer wird es euch nerven, ständig die lange Zeile /etc/ppp/scripts/ppp-on& zu tippen. Daher hier ein etwas komfortableres Skript für einen ppp_user
Hier noch zwei wichtige Links: Informationen bei SSC und w3: Eine Erweiterung, die aus Emacs einen WWW-Browser macht.
Sicherheit:
An dieser Stelle seien noch ein paar Worte zur Sicherheit eures Internet-Zugangs gesagt:Generell solltet ihr bedenken, daß PPP ein bidirektionales Protokoll ist. Das heißt, daß durch die Herstellung einer PPP-Verbindung einerseits euer Computer Zugriff auf das Netz erhält, andererseits aber auch alle Rechner des Internets auf euren Computer zugreifen können. Wie Weit dieser Zugriff geht, könnt ihr aber durch sogenanntes Wrapping von Internet-Services mit Hilfe des Programmes tcpd sehr genau kontrollieren. Detaillierte Beschreibungen hierfür finden sich auf der manual (8) page von tcpd und der man (5) page von hosts_access. Wer auf Nummer sicher gehen will, ersetzt zunächst in der Datei /etc/inetd.conf in den Zeilen der zu schützenden Dienste in der sechsten spalte den direkten Aufruf des jeweiligen Programmes durch /usr/sbin/tcpd (bzw. den absoluten Pfadnamen des tcpd-Programmes in eurem Filesystem) und legt die Datei /etc/hosts.deny mit folgendem inhalt an
ALL: ALL
Um sich selbst nicht auch auszubooten, sollte man /etc/hosts.allow
wie folgt editieren:
ALL: 127.0.0.1
(Denkt an die abschßießenden newline characters; um
inetd zu veranlassen, das aktualisierte /etc/inetd.conf file
einzulesenüßmüßt ihr ihm das signal HUP schicken:
kill -H<P
Bei Fragen, Unklarheiten oder Anmerkungen wendet euch bitte direkt an den Autor dieser Seite.

