Veröffentlichung mit freundlicher Genehmigung der Linux New Media AG und des Linux Magazins.
T-DSL unter LinuxSurfer-ParadiesMichael Schlenstedt |
Seit die Telekom die Grundpreise für den T-DSL-Anschluss drastisch gesenkt hat, wird der Zugang zum Internetprovider über diese HighSpeed-Leitung mehr und mehr auch für Privatanwender interessant. Dank der Arbeit einiger engagierter Programmierer ist die Nutzung dieser neuen Technik auch unter Linux möglich.
T-DSL ist nichts anderes als "normales" ADSL (Asymmetric Digital Subscriber Line), nur hat die Telekom Ihrem Angebot, ähnlich T-Net und T-ISDN, einen werbewirksamen Namen verpasst. Ein ADSL-Zugang ähnelt technisch gesehen einer Standleitung, daher wäre eigentlich überhaupt keine zusätzliche Software nötig: Eine Netzwerkkarte wird mit dem ADSL-Modem verbunden und die Netzwerkeinstellungen entsprechend angepasst - fertig. Leider ist es jedoch nicht ganz so einfach. Da bei Privatanwendern die Verbindung zum weltweiten Datennetz zeitabhängig abgerechnet wird, Standleitungen jedoch nach übertragenem Volumen berechnet werden, musste man sich für den Privatzugang über T-DSL etwas anderes einfallen lassen. Aus diesem Grund wurde ein neuartiges Übertragungsprotokoll eingeführt: PPP-Over-Ethernet, kurz PPPoE (nachzulesen im RfC 2516 [1]). Dieses Protokoll erlaubt es nun, analog zur gewohnten Wählverbindung, seitens des Providers zeitabhängig über einen PPP-Login abzurechnen (siehe Kasten T-DSL, ADSL oder was?). Und hier beginnen die Schwierigkeiten: Zu Beginn stellte lediglich die Windowssoftware vom Provider T-Online dieses Protokoll zur Verfügung, man war also an ein Betriebssystem und einen Provider gebunden. Da PPPoE jedoch keine Erfindung der Telekom ist und der Standard in obigem RfC festgelegt ist, war es nicht anders zu erwarten, dass die Open-Source-Gemeinde mittlerweile eigene Implementierungen des PPPoE-Protokolls hervorgebracht hat.
Abb. 1: Mit ADSL fliegen auch unter Linux die Daten auf die heimische Festplatte
Abb. 2: Der Frequenzbereich bei der ADSL-Technik
...und Linux?
Im Wesentlichen gibt es zwei Möglichkeiten, dem Linuxsystem das PPPoE-Protokoll beizubringen: Userspace- und Kernel-Lösungen (Userspace bedeutet nichts anderes, als dass zusätzliche Software außerhalb des Kernels, etwa ein im Hintergrund laufender Daemon, die entsprechende Aufgabe übernimmt). Der Kernel-Treiber hat den Vorteil, dass er weniger CPU-Last verursacht und zudem der Scheduler dem Prozess nicht plötzlich die Rechenlast entziehen und einem anderen Prozess zuordnen kann. Aus diesem Grund ist einer der Quelltexte auch schon in die aktuellen Entwicklerkernel (seit 2.3.29) mit eingegangen und wird im Kernel 2.4.X auch enthalten sein [2], aber auch für "ältere" Kernel gibt es PPPoE-Lösungen [3]. Da der Code jedoch noch nicht als stabil eingestuft wurde und zudem für die aktuellen stabilen (Benutzer-)Kernel einschließlich 2.2.17 noch das Patchen des Kernels notwenig ist, wird in diesem Artikel diese Lösung nicht beschrieben, die zum jetzigen Zeitpunkt noch nicht für den alltäglichen Gebrauch zu empfehlen ist (wenn man sich nicht aktiv an der Weiterentwicklung beteiligen möchte).
Abb. 3: Die Nutzdaten wechseln auf dem Weg zum Provider mehrfach ihre "Hülle"
| T-DSL, ADSL, oder was? |
|
Bei dem von der Telekom für Privatpersonen angebotenen T-DSL handelt es sich um das Übertragungsverfahren ADSL (Asymmetric Subscriber Line). Bei dieser DSL-Variante werden jeweils verschiedene Übertragungsraten für Up- und Downstream verwendet (daher auch Asymmetric DSL). Das bedeutet im Fall von T-DSL, dass die Daten mit 768 kBit/s zum Kunden strömen, während Daten mit 128 kBit/s gesendet werden können. Technisch handelt es sich sogar um eine Verbindung mit Datenraten von 896 bzw. 160 kBit/s. Mit diesem "Puffer" möchte die Telekom sicherstellen, dass dem Kunden effektiv ständig eine 768/128 kBit/s Verbindung zur Verfügung steht, da das verwendete Protokoll PPPoE (siehe weiter unten) selbst einige Bandbreite benötigt. ADSL kommt mit den 2 (schon von jeher vorhandenen) Kupferadern aus. Damit über die gleichen Leitungen zeitgleich Telefongespräche und Daten übertragen werden können, werden für ADSL wesentlich höhere Frequenzbereiche als bei der analogen Telefonie oder bei ISDN verwendet (siehe Abbildung 2). Aus diesem Grund ist es auch nötig, durch einen Splitter (Abbildung 4) den Datenstrom von dem herkömmlichen, für Telefonie/ISDN verwendeten, Frequenzbereich zu trennen. Die auf den ersten (und auch auf den zweiten) Blick phantastischen Übertragungsraten über die herkömmliche Telefonleitung wird erreicht, indem bei der von der Telekom verwendeten ADSL-Variante der hohe Frequenzbereich in Kanäle von jeweils 4 kHz Breite eingeteilt wird, die jeweils für Up- und Downstream genutzt werden können. Beim Einschalten handelt das ADSL-Modem dabei mit der Gegenstelle jeweils für jeden Kanal die optimalen Übertragungseigenschaften aus. Des Weiteren kann das Modem von der Telekom so konfiguriert werden, dass es nicht alle verfügbaren Kanäle nutzt. Somit lässt sich die dem Kunden zur Verfügung gestellte Bandbreite individuell anpassen, bei T-DSL eben 768/128 kBit/s [9]. Im Gegensatz zu den für Geschäfts- bzw. Firmenkunden vorgesehenen ADSL-Anschlüssen rechnet die Telekom den Privatzugang über T-DSL weiterhin zeitabhängig und nicht volumenbezogen (wie bei Standleitungstechniken und -zugängen üblich) ab. Um diese "Verrenkung" zu erreichen, verwendet sie das Protokoll PPPoE (PPP-over-Ethernet). Dieses Protokoll setzt einen Treiber vorraus, der die herkömmlichen PPP-Pakete in Ethernet-Frames umwandelt, die wiederum vom ADSL-Modem in ATM-Pakete verpackt werden und an den ATM-Backbone gesendet werden. Dieser reicht die Pakete an einen T-Online-Host weiter, der die Pakete wieder "entwirrt" und entsprechend weiterleitet (siehe Abbildung 3) [8]. Da durch die zahlreichen Umwandlungen in verschiedene Protokolle jeweils einige Bytes durch entsprechende Header und PPP-Informationen "verloren" gehen, dürfen die Pakete deutlich weniger Nutzdaten als sonst üblich enthalten. Daher ist es wichtig, die MTU (Maximum Transfer Unit) auf Client-seite auf maximal 1472 zu setzen. Wird ein Netzwerk über NAT (Network Address Translation), im Linuxlager auch unter Masquerading bekannt, über einen Linux-Router angebunden, so ist die MTU sogar auf 1412 herabzusetzen, da auch durch NAT noch einige Bytes pro Paket benötigt werden. Dieses ist vor allem wichtig, weil die auf Seiten der Telekom verwendeten Cisco-Router hier einen Wert von 1500 erzwingen, daher versuchen sie dann bei der Übermittlung zuviele Daten innerhalb eines Paketes zu übertragen [14]. (uwo) |
RP-PPPoE
Die wohl bekannteste Userspace-Implementierung des PPP-over-Ethernet-Protokolls ist der rp-pppoe von Deavid Skoll, der "Roaring-Penguin-Treiber" [4]. Die Software wurde unter die GPL gestellt und liegt mittlerweile in der Version 2.2 vor. Ferner ist für den reibungslosen Betrieb noch der pppd in der Version 2.3.7 (für DiaOnDemand 2.3.10) oder natürlich neuer erforderlich, da nur dieser virtuelle Terminals verwenden kann. Hierbei kann der pppd, anstelle des direkten Zugriffs auf ein Device (zum Beispiel die serielle Schnittstelle), die Daten einem weiteren Programm übergeben, welches die Daten umwandelt und dann auf ein Device weiterleitet. Zuallererst muss also getestet werden, ob eine genügend neue Version installiert ist:
pppd --version
Ist die Version zu alt, so muss zuerst die alte Version deinstalliert und, falls vorhanden, ein Update des Distributors eingespielt werden oder aber der neueste pppd direkt aus den Sources von [5] übersetzt und installiert werden.
Nun kann die eigentliche PPPoE-Software von [4] heruntergeladen werden. Auch dieses Paket liegt in den Quelltexten vor und muss vor der Benutzung übersetzt werden. Hierzu wird das Tar-Archiv in ein beliebiges Verzeichnis (z. B. /usr/src/packages/ SOURCES) kopiert und mit dem Befehl
tar xvfz rp-pppoe-2.2.tar.gz
extrahiert. Nun kann man in das neu entstandene Verzeichnis wechseln und die Sources wie gewohnt mit
./configure make
konfigurieren und übersetzen. Als root (z. B. durch su -) werden die Binaries nun mit
make install
installiert. Die Aufforderung des Programms, nun adsl-setup aufzurufen, ignorieren wir getrost, da wir das Setup lieber selbst durchführen (wollen).
Zu allererst muss nun die Netzwerkkarte, welche mit dem ADSL-Modem verbunden ist, aktiviert werden. Hierzu kann man das distributionsspezifische Konfigurationstool verwenden (bei SuSE z. B. YaST, bei Mandrake DrakConf usw.) oder aber man kann direkt auf der Kommandozeile (als root) die Karte aktivieren (siehe man ifconfig):
ifconfig eth1 0.0.0.0 up
Hierbei sind die IP-Adressen (hier 0.0.0.0) völlig beliebig gewählt, bei einer bestehenden Verbindung werden sie vom Provider korrekt übermittelt und aktiviert. Des weiteren ist hier die zweite Ethernetkarte mit dem Modem verbunden. Steckt nur eine Karte im Rechner, so muss anstelle eth1 in obiger Befehlszeile eth0 eingetragen werden. Im Folgenden werden alle Beispiele mit eth1 angegeben und müssen eventuell angepasst werden.
Vorsichtshalber wird noch eine eventuell vorhandene Default-Route gelöscht. Danach sollte man überprüfen, ob die Verkabelung des Modems und Splitters korrekt vorgenommen wurde und ob der so genannte Access-Concentrator (siehe Abbildung 2) erreichbar ist:
route del default pppoe -I eth1 -A
Wenn bis hierher alles gut ging, sollte eine Ausgabe ähnlich folgender erscheinen:
----------------
Access-Concentrator: OSNC13-nrp3
Got a cookie: 50 64 87 59 6d bf
73 00 1d 67 98 7d c2 d3 a5 32
AC-Ethernet-Address:
00:01:96:99:50:b7
----------------
Nun wird noch überprüft, ob auch eine Antwort übermittelt wird. Dazu führt man die sogenannte "Discovery" (siehe [1]) durch:
pppoe -T20 -I eth1 -D \ pppoe.log > /dev/null
Die Log-Datei pppoe.log sollte in etwa den folgenden Inhalt haben:
rp-pppoe-2.2 SENT PPPOE Discovery (8863) PADI sess-id 0 length 4 SourceAddr 00:00:1c:db:da:93 DestAddr ff:ff:ff:ff:ff:ff 01 01 00 00 RCVD PPPOE Discovery (8863) PADO sess-id 0 length 39 SourceAddr 00:01:96:99:50:b7 DestAddr 00:00:1c:db:da:93 01 01 00 00 01 02 00 0b-4f 53 4e 43 31 33 2d 6e 72 70 33 01 04 00 10 50-64 87 59 6d bf 73 00 1d 67 98 7d c2 d3 a5 32 SENT PPPOE Discovery (8863) PADR sess-id 0 length 24 SourceAddr 00:00:1c:db:da:93 DestAddr 00:01:96:99:50:b7 01 01 00 00 01 04 00 10-50 64 87 59 6d bf 73 00 1d 67 98 7d c2 d3 a5 32 [...]
Tritt beim letzten Befehl ein Fehler auf, so liegt das Problem mit großer Wahrscheinlichkeit auf Seiten der Telekom.
Abb. 4: Der Weg vom heimischen PC ins Internet via T-DSL
| Tabelle 1 | ||||||
| Komponente | Bezeichnung | Spannungsversorgung | Hersteller | Bezug | Preis | Bemerkungen |
| Netzwerkkarte | NIC, Network Interface Card | durch den PC | beliebig(1) | beliebig | ab 25 DM | 10BaseT-Netzwerkkarte (Rj-45-Anschluss) |
| Kabel | UTP, Kategorie 3, 4 oder 5 | Nein | beliebig | mitgeliefert(2) | - | Achtung! Kabel müssen 1:1 verschaltet sein! |
| ADSL-Modem | NTBBA, Netzwerkterminationspunkt Breitbandangebot | Ja, 220 V | Siemens, Orckit, ECI Telecom | mitgeliefert | - | Die Geräte entwickeln teilweise erhebliche Abwärme, also auf den Aufstellungsort achten! |
| Splitter | BBAE, Breitbandanschlusseinheit | Nein | ? | mitgeliefert | - | - |
| NTBA | NTBA, Network Terminator Basisanschluss | Nein(3) | ? | mitgeliefert | - | - |
| (1) - Natürlich sollte die Karte unter Linux unterstützt werden |
| (2) - mitgeliefert wird ein 5m langes Kabel, längere gibt es im Handel |
| (3) - Lediglich wenn keine weiteren Geräte bzw. Geräte mit eigener Stromversorgung angeschlossen sind |
| Listing 1: /etc/ppp/pap-secrets |
|
# Secrets for authentication using PAP # client server secret IP adresses "111111111111222222222222#0001@t-online.de" * "geHeim" Anschließend werden alle Optionen, die der pppd zum Starten benötigt, in die Datei /etc/ppp/options eingetragen. Listing 2 zeigt den Inhalt der Datei an. |
Der Zugang
War auch dieser Befehl erfolgreich, so kann mit der eigentlichen Konfiguration des Zugangs zum Provider begonnen werden. Ich beschreibe hier den Zugang zum Provider T-Online, analog wird aber auch die Verbindung zu allen anderen Providern konfiguriert.
Zuerst wird die Benutzerkennung und das Passwort in die Datei /etc/ppp/pap-secrets eingetragen. Die Benutzerkennung setzt sich bei T-Online aus der Anschlusskennung, T-Online-Nummer, einer Raute gefolgt von dem Mitbenutzersuffix zusammen (die Raute kann bei einer 12-stelligen T-Online-Nummer entfallen). Bei ADSL nicht zu vergessen das "@t-online.de" ganz am Schluss. Achtung! Hierbei werden die meisten Fehler gemacht! Für folgende Daten sieht die Datei /etc/ppp/pap-secrets dann wie in Listing 1 abgebildet aus:
Anschlussnummer: 11111111111 T-Onlinenummer: 222222222222 Mitbenutzer: 0001 Passwort: geHeim
Mehr zu den einzelnen Optionen verrät ein man pppd. Für den allerersten Start wird die letzte Option ("nodetach") mit aktiviert. Verläuft der erste Test dann zufriedenstellend, muss die Option anschließend mit einer vorangestellten Raute ("#") auskommentiert und somit deaktiviert werden (für einen automatischen Betrieb). "nodetach" verhindert, dass der pppd-Prozess in den Hintergrund "rutscht". Um die Meldungen ständig im Auge zu behalten, startet root in einem Xterm oder auf der Konsole
tail -f /var/log/messages
Somit werden alle hinzukommenden Meldungen in der Datei /var/log/messages sofort angezeigt.
Jetzt kann also das allererste Mal der pppd (als root) gestartet werden. Hierzu dient folgender Befehl:
pppd pty "/usr/sbin/pppoe -I eth1"
Der pppd meldet nun im Syslog:
pppd[1578]: pppd 2.3.11 started by
schlenn, uid 0
pppd[1578]: Serial connection
established.
pppd[1578]: Using interface ppp0
pppd[1578]: Connect: ppp0
/dev/pts/2
pppoe[1579]: PADS: Service-Name: `'
pppoe[1579]: PPP session is 31959
pppd[1578]: local IP address
62.226.75.9
pppd[1578]: remote IP address
62.225.254.169
Nun kann man versuchen, einen Rechner über seine IP-Adresse im Internet zu erreichen:
ping -c10 194.25.2.129
War das erfolgreich, kann versucht werden, einen Rechner über seinen Namen zu erreichen:
ping -c10 schlenn.de
Klappt auch dieser Versuch, wurden auch die korrekten Nameserver-Einstellungen beim Verbindungsaufbau übernommen.
Die Verbindung wird beendet, indem der pppd mit der Tastenkombination "<Strg> + C" oder alternativ mit killall pppd beendet wird, was er mit folgenden Meldungen im Syslog bekannt gibt:
pppd[1578]: Terminating on signal
15.
pppoe[1579]: Received signal 15.
pppoe[1579]: Sent PADT
pppd[1578]: Modem hangup
pppd[1578]: Connection terminated.
pppd[1578]: Connect time 1.1 minutes.
pppd[1578]: Sent 2122 bytes,
received 1888 bytes.
pppd[1578]: Exit.
Waren all diese Befehle erfolgreich, so muss nun die Option "nodetach" aus /etc/ppp/options gelöscht bzw. durch Auskommentieren mit "#" deaktiviert werden (siehe oben).
Da natürlich ein derartiger Verbindungsaufbau über root nicht für einen Arbeitsplatzrechner und schon gar nicht für einen Server/Router befriedigend ist, muss der Verbindungsaufbau nun noch etwas erleichtert bzw. automatisiert werden.
| Listing 2: /etc/ppp/options |
|
# /etc/ppp/options # Dial On Demand #demand # Das Verbinden wird vom pppoe übernommen, ein Connect-Skript ist also # nicht nötig connect /bin/true # Lokale und Remote-IP-Nummer vom Server wird akzeptiert ipcp-accept-remote ipcp-accept-local # Der Server teilt uns den Nameserver mit usepeerdns # Nach 3 Minuten (180 s) Inaktivität wird aufgelegt idle 180 # Wir haben keine gültige Default-IP, also nehmen wir die vom # Provider zugewiesene noipdefault # Die Defaultroute wird auf diese Verbindung gesetzt defaultroute # Unser Login-Name beim Provider - muss exakt uebereinstimmen # mit /etc/ppp/pap-secrets user "111111111111222222222222#0001@t-online.de" hide-password # Kompression abschalten! noaccomp nopcomp novj novjccomp nobsdcomp nodeflate noccp # Wir haben kein Modem, ein Handshake ist nicht nötig nocrtscts local noauth # Wird mittlerweile direkt dem pppoe als Option übergeben, daher hier # deaktiviert # mru 1412 # mtu 1412 # Alle 10 s nachschauen, ob der Server noch da ist. Bei 3 "Fehlpaketen" # Verbindung beenden lcp-echo-interval 10 lcp-echo-failure 3 # Specifies that pppd should use a UUCP-style lock on the serial device # to ensure exclusive access to the device. lock # Nur zu Testzwecken sind die Meldungen im Syslog interessant #debug # Nicht in den Hintergrund "rutschen" - nur zu Testzwecken aktivieren! #nodetach |
| Listing 3: /usr/local/bin/connectadsl |
|
#! /bin/sh
#
# Connectadsl: Skript zur Erstellung einer Verbindung zu T-Online
# via ADSL/T-DSL
#
# Verbindung starten: connectadsl start
# Verbindung stoppen: connectadsl stop
#
# written by: Michael Schlenstedt
# Michael.Schlenstedt@schlenn.de
# http://www.schlenn.de
#
#
#
# Einstellungen:
#
#
#
# Device, welches mit dem ADSL-Modem verbunden wurde: eth0, eth1 etc.
#
DEVICE="eth1"
#
# Pfad zu pppd
#
PPPD="/usr/sbin/pppd"
#
# Pfad zu pppoe
#
PPPOE="/usr/sbin/pppoe"
#
# Pfad zu sudo
#
SUDO="/usr/bin/sudo"
#
#
#
# Ende der Einstellungen
#
#
#
# Wenn UID ungleich "0" (root), dann führe Skript mit sudo aus
#
#
if test -x $SUDO; then
if test $UID -ne 0; then
exec $SUDO $0 $*
fi
fi
#
# Mit welchem Parameter wurde das Skript gestartet: Start oder Stop
#
case "$1" in
#
# Bei Stop wird aufgelegt
#
stop)
echo Verbindung beenden
killall pppd
;;
#
# Beim Parameter (Start) wird die Verbindung aufgebaut
#
start)
echo Verbindung starten
$PPPD pty "$PPPOE -I $DEVICE"
;;
*)
echo Falscher oder garkein Parameter angegeben!
echo Bitte starten sie $0 mit dem Parameter start oder stop
;;
esac
|
Manuelle Einwahl
Eine manuelle Einwahl ist immer dann sinnvoll, wenn man beim Provider keinen Pauschaltarif besitzt und somit seine Kosten immer im Griff haben möchte. Vielen Windowsbenutzern ist die manuelle Einwahl per "Knopfdruck" schon so in "Fleisch und Blut" übergegangen, dass sie auch unter Linux eine derartige Einwahl bevorzugen.
Bei der manuellen Einwahl wird ein Skript angelegt, welches die verschiedenen Benutzer mit entsprechenden Parametern zum Verbindungsauf- bzw. abbau aufrufen müssen. Hierzu dient das Skript aus Listing 3, welches unter dem Dateinamen /usr/local/bin/connectadsl abgespeichert und mit
chmod 755 /usr/local/bin/connectadsl chown root.root \ /usr/local/bin/connectadsl
mit den korrekten Dateirechten versehen wird. Damit auch andere Benutzer ausser root dieses Skript ausführen können, wobei das Skript selbst jedoch mit Root-Rechten ausgeführt werden muss, kann das Programm sudo verwendet werden, welches bestimmten Benutzern erlaubt, bestimmte Befehle mit Root-Rechten auszuführen. Das Paket sollte bei jeder Distribution enthalten sein, ansonsten kann es von [6] heruntergeladen und anschließend installiert werden.
Um sudo nun entsprechend zu konfigurieren, ruft root visudo auf (das Editieren der Datei geschieht analog zur Bedienung des vi-Editors: Mit "I" kann man Text einfügen, "[Esc]" und anschließend ":wq" speichert die Datei ab, lediglich ":q!" verwirft allen Änderungen und beendet das Editieren ohne Abspeichern usw.). Im Beispiel-Listing 4 wurde dem Benutzer "Peter" erlaubt, das Programm /usr/local/bin/connectadsl mit Root-Rechten auszuführen. Analog kann man beliebig viele weitere Zeilen und somit Benutzer und Programme dieser Konfigurationsdatei hinzufügen.
Ist der Benutzer "Peter" nun eingeloggt, so kann er die Verbindung
zum Provider mit
connectadsl start
starten und mit
connectadsl stop
wieder beenden.
| Listing 4: visudo....... |
|
# sudoers file. # # This file MUST be edited with the `visudo' command as root. # # See the man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL Peter ALL=NOPASSWD:/usr/local/bin/connectadsl |
Dial On Demand
Seit Version 2.3.10 des pppd ist nun auch die Nutzung von Dial On Demand mit dem PPPoE-Protokoll möglich. Dial On Demand ist hier eigentlich der falsche Name, da bei der ADSL-Technik im herkömmlichen Sinne nicht gewählt wird. Weil sich der Name jedoch mittlerweile im Linuxlager eingebürgert hat, nutze ich ihn auch hier weiterhin.
Dial-On-Demand-Lösungen bieten sich insbesondere bei den kürzlich eingeführten Flatrates verschiedener Provider an. Aber auch auf einem als Router fungierenden Linuxrechner kann DOD nützlich sein, so müssen sich die Benutzer nicht vorher via telnet oder ssh einloggen, oder über den Browser ein cgi-Script ausführen, um eine Verbindung aufzubauen. Doch Vorsicht wer keinen Pauschaltarif besitzt! Es ist schon häufig zum Gebührengau gekommen, weil ein Windows-Client oder aber Daemons wie sendmail in Minutenabständen über Tage hinweg Nameserver-Anfragen ins Netz gestellt haben und somit den Router immer wieder veranlasst haben, eine Verbindung zum Provider aufzubauen! Daher sollte man gerade in den ersten Tagen die Log-Files des Rechners genau kontrollieren.
Um gleich beim Booten Dial On Demand über T-DSL zu aktivieren, installieren wir ein Init-Skript, welches beim Booten bzw. Wechsel in den entsprechenden Runlevels gestartet wird. Hier haben verschiedene Distributionen verschiedene Vorgehensweisen entwickelt. SuSE zum Beispiel legt in einer systemweiten Konfigurationsdatei /etc/rc.config alle wichtigen Parameter fest, z. B. ob ein Dienst überhaupt gestartet werden soll oder nicht. Meist befindet sich aber bei jeder Distribution eine "Skelett-Datei" (Dateiname skeleton) im Verzeichnis /sbin/init.d bzw. /etc/rc.d, welches ein Grundgerüst für das Erstellen eines eigenen Init-Skriptes darstellt. Unter SuSE kann das Init-Skript in Listing 5 verwendet werden. Es muss nach /sbin/init.d/adsl kopiert werden und mit folgenden Rechten versehen werden:
chmod 755 /sbin/init.d/adsl chown root.root /sbin/init.d/adsl
An das Ende der Datei /etc/rc.config werden nun folgende Zeilen angehängt:
# Start PPPoE-Connection (yes/no)? ADSL_START=yes # Device which is connected to your ADSL-Modem (eth0, eth1 etc.)? ADSL_DEVICE=eth1
Nun fehlen noch die entsprechenden Links, sodass in den entsprechenden Runlevels die Verbindung gestartet wird. Auch hier unterscheiden sich die verschiedenen Distributionen. Bei SuSE ist es sinnvoll, die ADSL-Unterstützung in folgenden Runlevels zu aktivieren:
Runlevel 2, mit Netzwerkunterstützung
Runlevel 3, mit Netzwerkunterstützung
und grafischer Oberfläche
Entsprechend müssen also folgende Links erstellt werden:
ln -s /sbin/init.d/adsl \ /sbin/init.d/rc2.d/S10adsl ln -s /sbin/init.d/adsl \ /sbin/init.d/rc3.d/S10adsl ln -s /sbin/init.d/adsl \ /sbin/init.d/rc2.d/K35adsl ln -s /sbin/init.d/adsl \ /sbin/init.d/rc2.d/K35adsl
Da bei Dial On Demand in Zusammenhang mit dem dynamischen Vergeben der IP-Adresse Fehler auftreten können, muss der Kernel-Patch für die Vergabe von dynamischen IP-Adressen noch aktiviert werden. Dieses geschieht auf der Kommandozeile mit einem
echo 2 > /proc/sys/net/ipv4/ip_dynaddr
Dieser Befehl muss nach jedem Booten erneut ausgeführt werden. SuSE-Nutzer können in der Datei /etc/ rc.config die Variable "IP_DYNIP" einfach auf "yes" setzen, Benutzer anderer Distributionen müssen den Befehl in ein Init-Skript einbauen bzw. die Option, falls möglich, mit dem Konfigurationstool der Distribution aktivieren.
Des weiteren muss die erste Zeile in /etc/ppp/options für den automatischen Verbindungsaufbau aktiviert werden. Die Defaultroute wird automatisch durch den pppd auf das entsprechende Device gelegt. Nach dem nächsten Neustart bzw. ein als Root ausgeführtes
/sbin/init.d/adsl restart
startet der pppd und ein
ping -c10 194.25.2.129
baut in Sekundenschnelle die Verbindung zum Provider auf. Nach 3 Minuten Inaktivität wird die Verbindung automatisch beendet und erst wieder aufgebaut, sobald ein Rechner angesprochen wird, der nicht lokal erreichbar ist.
| Listing 5: /sbin/init.d/adsl |
|
#! /bin/sh
#
# Author: Michael Schlenstedt
#
# /sbin/init.d/adsl
#
. /etc/rc.config
# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory.
test $link = $base && START_ADSL=yes
test "$START_ADSL" = yes || exit 0
# The echo return value for success (defined in /etc/rc.config).
PPPD=/usr/sbin/pppd
PPPOE=/usr/sbin/pppoe
return=$rc_done
case "$1" in
start)
echo -n "Starting ADSL"
startproc $PPPD pty "$PPPOE -I $ADSL_DEVICE -m 1412" || return=$rc_failed
echo -e "$return"
;;
stop)
echo -n "Shutting down ADSL"
killproc -TERM $PPPD || return=$rc_failed
echo -e "$return"
;;
restart)
$0 stop && $0 start || return=$rc_failed
;;
reload)
echo -n "Reload service ADSL"
killproc -HUP $PPPD || return=$rc_failed
echo -e "$return"
;;
status)
echo -n "Checking for service ADSL: "
checkproc $PPPD && echo OK || echo No process
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
test "$return" = "$rc_done" || exit 1
exit 0
|
| Tabelle 2 | |||||
| Anschlussart | Grundgeb�hr ohne T-DSL | Aufpreis T-DSL (bei Auftrag bis 31.12.2000) | Aufpreis T-DSL (bei Auftrag bis 31.12.2000) | Grundgeb�hr insgesamt | Grundgeb�hr insgesamt |
| Analoger Anschluss (T-Net) | 24.82 DM | 29.89 DM | 39.89 DM | 54.71 DM | 64.71 DM |
| Euro-ISDN (T-ISDN Standard) | 44.89 DM | 14.89 DM | 19.90 DM | 59.78 DM | 64.79 DM |
| Euro-ISDN (T-ISDN Komfort) | 49.90 DM | 14.89 DM | 19.90 DM | 64.79 DM | 69.80 DM |
| Euro-ISDN (T-ISDN 300) | 54.88 DM | 9.90 DM | 64.78 DM | ||
| Euro-ISDN (T-ISDN xxl) | 59.90 DM | 9.89 DM | 69.79 DM | ||
| Quelle: http://www.telekom.de | |||||
| INFOS |
|
[1] RfC 2516: Method for Transmitting PPP Over Ethernet (PPPoE), http://www.rfc-editor.org/rfc/rfc2516.txt [2] PPPoE mit aktuellen Entwickler-Kerneln ab 2.3.29: http://www.pullmoll.de/pppoe.htm [3] PPPoE mit aktuellen User-Kerneln 2.0.X und 2.2.X: http://www.davin.ottawa.on.ca/pppoe [4] Userspace-PPPoE-Treiber von David Skoll: http://www.roaringpenguin.com/pppoe/ [5] PPP-Daemon: ftp://cs.anu.edu.au/pub/software/ppp [6] Sudo: http://www.courtesan.com/sudo/ [7] Alles rund um ADSL: http://www.adsl-support.de [8] Volles Rohr, T-DSL in Theorie und Praxis, c't 16/2000, Seite 120 [9] DSL - Die schnelle Leitung, Die Technik hinter T-DSL, c't 16/2000, Seite 126 [10] Linux und T-DSL: http://www.datenhighway.com/adsl/linux-tdsl-v1.html [11] T-ISDN DSL mit Linux: http://www.pullmoll.de/pppoe.htm [12] Erstellen einer Firewall mit IPCHAINS: http://home.foni.net/~bmueller/infos/ipchains.html [13] Mason Firewall-Builder: http://users.dhp.com/~whisper/mason/ [14] T-DSL-Tücken, Telekom-Router blockieren die T-DSL-Leitung, c't 2/2000, Seite 67 |
Fin
Demjenigen, für den ADSL noch ein Buch mit 7 Siegeln ist, sei die Internetseite unter [7] zu empfehlen, auf der alle Grundlagen von der Verkabelung über FAQ's rund um verschiedene Betriebssysteme bis hin zum Netzwerkzugang erläutert werden. Die ADSL-Technik allgemein erläutert zum Beispiel [8] und [9], weitere T-DSL-HowTo's für Linux findet man unter [10] und [11]. Man sollte sich auch bewusst sein, dass ständige Verbindungen zum Internet (z. B. bei Flatrates) auch Sicherheitsrisiken mit sich bringen, die man nicht unterschätzen sollte. Es ist also anzuraten, sich ebenfalls Gedanken über den Schutz des eigenen Rechners/Netzes zu machen. Zum Beispiel über das Erstellen eines "Paket Filtering" unter Linux [12]. Im allgemeinen Sprachgebrauch hat sich dafür mittlerweile "Firewall" eingebürgert. Unter [13] findet sich ein Programm, das anhand der Netzwerkaktivitäten ein "Fire-wall-Skript" erstellt, welches anschliessend als Grundgerüst für den eigenen Firewall dienen kann. Zum Schluss bleibt mir nur noch zu sagen: Happy Surfin'! (uwo)
| DER AUTOR |
|
Michael Schlenstedt studiert Verfahrenstechnik an der Fachhochschule Osnabrück. Mit Linux ist er im Rahmen einer Informatikvorlesung in Berührung gekommen und ist seither "vom Pinguin besessen". |
Copyright (c) 2000 Linux New Media AG
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.