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=mNatü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 onorder 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.7Beim 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.htmlGestartet 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.219Entscheidend 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:0Weitere 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 ppp0Nun 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: ALLUm 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.