"Linux, damit kenne ich mich nicht aus, wird von uns auch nicht unterstützt." Wer kennt sie nicht, die Antworten der Hotline? Dabei sollte man meinen, dass mit der stetig wachsenden Verbreitung von Linux auch dieses Betriebssystem zum Supportumfang des Zugangsproviders gehören sollte.
Doch statt sich darauf zu verlassen, ist ein Blick in einige Howtos (http://www.linux.org/docs/index.html) oft hilfreicher, will man dem Pinguin einen breitbandigen Anschluss ans weltweite Netz verschaffen. Die Problematik liegt in einem speziellen Protokoll namens "Point to Point over Ethernet" (PPPoE) begründet, nachzulesen unter http://rfc.net/rfc2516.html. Da die meisten DSL-Provider in Deutschland diese Technik wählen, kommt die Masse der DSL-Kunden nicht darum herum, ihre Rechner entsprechend auszustatten. Dazu bestehen zwei Möglichkeiten.
Pseudo-Terminal oder Kernel-Patches?
Der einfachste Weg ist der ab Seite 18 beschriebene über ein Pseudo-Terminal.
Die von mir bevorzugte Lösung ist eine Implementierung des Protokolls im Kernel. Standardmäßig bietet der 2.2er Kernel aber keine PPPoE-Unterstützung. Die meisten Distributionen bringen jedoch nicht die von Linus Torvalds veröffentlichte Version mit, sondern haben die Kernel-Quellen bereits mit einigen Patches versehen. Somit ist es wahrscheinlich, dass auf dieses Protokoll dennoch zurückgegriffen werden kann. Damit beschäftigt sich ein eigener Artikel ab Seite 28.
Kernel-Version 2.4 enthält PPPoE-Unterstützung bereits in den ungepatchten Quellen. Einige neuere Distributionen (z. B. SuSE 7.1) bieten auch schon eine mehr oder weniger komfortable, menügesteuerte Konfiguration des DSL-Zugangs an, allerdings meist nur für den 2.2er Kernel. Eine Ausnahme ist die neue SuSE 7.2, welche eine komfortable Konfiguration über das grafische Setup-Tool YaST2 anbietet. Über das Tool lassen sich nicht nur die ADSL-Zugänge der Deutschen Telekom (T-DSL, Abbildung 1) konfigurieren, sondern auch andere ADSL-Verbindungen (Abbildung 2). Dieses aktuelle YaST2 erspart auch den weiter unten beschriebenen Konfigurationsmarathon.
Soll der 2.4er Kernel mit seinen zahlreichen Verbesserungen zur Anwendung kommen, sind einige Änderungen nötig. Damit PPPoE überhaupt möglich wird, muss er mit PPP support kompiliert werden (Abbildung 3). Folgende Zeile sollte Gewissheit verschaffen, ob die eingesetzte Distribution PPPoE unterstützt:
find /lib/modules/`cat /proc/sys/kernel/osrelease`/ -name "*pppo*"
Erscheinen zwei Zeilen von der Form
/lib/modules/Kernel-Version /kernel/driver/net/pppoe.o /lib/modules/Kernel-Version /kernel/driver/net/pppox.o
als Antwort, so bietet der eingesetzte Kernel PPPoE-Support.
Außerdem gilt es, den "Point to Point Protocol Daemon" (pppd) zu ersetzen. Die Vorgehensweise ist im Kasten "Selbstkompiliert: pppd mit PPPoE-Support" beschrieben.
Selbstkompiliert:
pppdmit PPPoE-Support
Um ein auf Kernel 2.4.x basierendes System PPPoE-fähig zu machen, benötigt man die Quellen des pppd (ppp-2.4.1-pppoe2.tgz von http://www.shoshin.uwaterloo.ca/~mostrows/). Es handelt sich hierbei um den für PPPoE gepatchten PPP-Daemon in der Version 2.4.1. Der (ungepatchte) Quellcode pppd-2.4.1.tar.gz kann nicht verwendet werden bzw. muss zunächst mit dem ebenfalls unter dieser URL erhältlichen Patch ppp-2.4.1-pppoe.patch2 angepasst werden.
Installation
Die Quellen werden mit tar xvfz ppp-2.4.1-pppoe2.tgz entpackt. Nach dem Wechsel ins neu entstandene Verzeichnis mit cd ppp-2.4.1-pppoe2 bereitet man die Quellen mit ./configure --prefix=/usr für die Kompilation mit einem C-Compiler (mindestens gcc in der Version 2.95.2) vor.
Diese Compiler-Suite ist Bestandteil einer jeden Standardinstallation. Gegebenenfalls muss sie mit Hilfe des Paketmanagement-Tools der jeweiligen Distribution nachträglich installiert werden. Dieses wird auf ggf. nicht erfüllte Paketabhängigkeiten aufmerksam machen und bietet oft sogar die Option an, fehlende Pakete automatisch einzuspielen.
Zusätzlich zum Compiler müssen autoconf und make installiert sein. Sind alle für das Kompilieren notwendigen Programme an Board, kann mit make die Übersetzung der Programme in den Binärcode beginnen. Tritt dabei ein Fehler auf, erfährt man davon, indem in den letzten Zeilen der Ausgabe mehrfach ein ** ERROR * auftaucht.
Bevor der Superuser root die erstellten Dateien nach einem fehlerfreien Kompilationsvorgang mit make install in die jeweiligen Verzeichnisse kopiert, sollten die Original-pppd-Dateien gesichert werden:
cp /usr/sbin/ppp* backupverzeichnis_fuer_pppd
Konfiguration
Wenn selbstkompilierte Versionen von pppd und pppoed zum Einsatz kommen, ist im Gegensatz zu den vorkompilierten Versionen von SuSE Folgendes zu beachten: Die Konfiguration nimmt man in einer Datei /etc/ppp/options vor, nicht in zwei Dateien, wie in den Listings 2 und 3. Den Inhalt dieser Datei entnehmen Sie bitte Listing 1.
Start
Aufgebaut wird die Verbindung mit
pppd eth1 file /etc/ppp/options
eth1 steht für die Ethernetkarte, welche mit dem DSL-Modem verbunden ist; in diesem Fall die zweite Netzwerkkarte.
Listing 1
für den selbstkompilierten
pppd-2.4.1mit PPPoE-Support
# /etc/ppp/options # # # Die Optionen koennen mit man pppd # nachgelesen werden. # Obwohl sich diese Manpage auf die # Datei pppd.conf und deren Optionen # bezieht, sind die Erklaerungen # auch fuer diese Datei gueltig. # # # pppd-2.4.1-Optionen # fuer Kernel 2.4 # # Unterstuetzung fuer PPPoE plugin /usr/lib/pppd/2.4.1/pppoe.so # # Plugin ermoeglicht die Weitergabe # des Passworts an den pppd plugin /usr/lib/pppd/2.4.1/passprompt.so # # Keine besondere Authentifizierung noauth # # Empfangen der DNS-Adressen vom # Provider usepeerdns # defaultroute # # Die lokale und die Point-to- # Point-Adresse werden vom # Provider vorgegeben ipcp-accept-local ipcp-accept-remote # # dial on demand - automatischer # Verbindungsaufbau # Weglassen des Stichworts == kein # automatischer Verbinungsaufbau demand # # Benutzername und Passwort # (muessen auch in # /etc/ppp/pap-secrets eingetragen sein) user "[Anschlusskennung][T-onlineNr] 0001@t-online.de" password "geheim" # # Passwort wird nicht protokolliert hide-password nodetach # Kompressionsverfahren muessen # ausgeschaltet werden nopcomp novjccomp noccp # # Auflegen nach 180 s Inaktivitaet idle 180 # max. Uebertragungseinheit # (Empfang und Versand) mru 1492 mtu 1492 # Die Adressen fuer ppp0, wenn # keine Verbindung aufgebaut wurde 192.168.2.1:192.168.2.254
SuSE bietet hierzu speziell für den 2.4er Kernel gepatchte Versionen an. Obwohl sich diese noch im Beta-Stadium befinden, laufen sie auf meinem Rechner seit ca. drei Monaten anstandslos. Die vorkompilierten Pakete, zu finden unter ftp://ftp.suse.com/pub/people/bk/pppoe/ppp-2.4.0-5.i386.rpm und ftp://ftp.suse.com/pub/people/bk/pppoe/pppoed-0.48b1-6.i386.rpm, werden mit
rpm -Uhv ppp-2.4.0-5.i386.rpm rpm -Uhv pppoed-0.48b1-6.i386.rpm
installiert. Verweigert der Paketmanager die ppp-Installation, kann man ihn mit rpm -Uhv --force --nodeps ppp-2.4.0-5.i386.rpm zur Mitarbeit überreden. Allerdings sollten Sie diesen Befehl nur verwenden, wenn Sie wissen, was Sie tun!
Jetzt müssen noch zwei Konfigurationsdateien geändert werden.
Konfigurationsmarathon
In der Datei /etc/ppp/peers/pppoe24 (Listing 2) legt man Optionen für das Programm pppoe24 fest, welches den pppd initiiert. Lassen Sie sich nicht von der Zahl 24 im Namen verwirren! Damit unterscheidet SuSE Linux zwischen dem pppoe24 für Kernel 2.4.x und pppoe für Kernel 2.2.x. Wenn Sie den pppoed selbst kompiliert haben, trägt das Binary keine Zahl zur Unterscheidung im Namen.
Listing 3 gibt die modifizierte Konfigurationsdatei /etc/pppoed.conf für den pppoed24 wieder. Diese Datei wird auch vom Konfigurationstool YaST2 modifiziert.
Listing 2
Modifizierte
/etc/ppp/peers/pppoe24für das vorkompilierte SuSE-Paket
pppoed-0.48b1-6.i386.rpm# /etc/ppp/peers/pppoe24 # # # Die Optionen koennen mit man pppd # nachgelesen werden. # Obwohl sich diese Manpage auf die # Datei pppd.conf und deren Optionen # bezieht, sind die Erklaerungen # auch fuer diese Datei gueltig. # # # PPPoE-Optionen # fuer Kernel 2.4 # # Unterstuetzung fuer PPPoE plugin /usr/lib/pppd/plugins/pppoe.so # # Plugin ermoeglicht die Weitergabe # des Passworts an den pppd plugin /usr/lib/pppd/passwordfd.so # # Keine besondere Authentifizierung noauth # # Empfangen der DNS-Adressen vom # Provider usepeerdns # noipdefault # Die lokale und die Point-to- # Point-Adresse werden vom # Provider vorgegeben ipcp-accept-local ipcp-accept-remote # Passwort wird nicht protokolliert hide-password nodetach # Kompressionsverfahren muessen # ausgeschaltet werden nopcomp novjccomp noccp # max. Uebertragungseinheit # (Empfang und Versand) mru 1492 mtu 1492 # Die Adressen fuer ppp0, wenn # keine Verbindung aufgebaut wurde 192.168.2.1:192.168.2.254
Listing 3
Neue
/etc/pppoed.conffür SuSE
# /etc/pppoed.conf # Vgl. man pppoed fuer die # Erklaerung der Optionen # # Welche Netzwerkkarte ist mit dem # DSL-Modem verbunden? interface = eth1 # # Benutzername (user) und Passwort # (password) # (Allgemeines Beispiel fuer # T-Online) user = "[Anschlusskennung][T-onlineNr] 0001@t-online.de" password = "geheim " # # (Leerlauf-)Zeit, nach der die # Verbindung getrennt werden soll # (in Sekunden) idle = 180 # # Dial on demand (automatischer # Verbindungsaufbau) demand = yes
In der pppoed.conf verstecken sich persönlichen Zugangsdaten für den DSL-Zugang sowie Besonderheiten der eigenen Hardware. interface gibt an, an welcher Netzwerkkarte das DSL-Modem angeschlossen ist. idle bezeichnet die Zeit (in Sekunden), nach der die Verbindung getrennt wird, wenn über diesen Zeitraum keine Daten mehr geflossen sind. Mit demand=yes oder demand=no kann ein automatischer Verbindungsaufbau an- bzw. abgeschaltet werden.
Die hinter user= und password= gemachten Angaben müssen sich zusätzlich in folgender Form in der Datei /etc/ppp/pap-secrets wiederfinden:
# # /etc/ppp/pap-secrets # "[Anschlusskennung][T-onlineNr] 0001@t-online.de" * "geheim "



