Liebe Besucher, ein aktueller Hinweis in eigener Sache:
Es ist beabsichtigt, diese Seiten und die Domain im Januar/Februar 2004 auf
einen anderen Server umzuziehen. Es ist leider nicht auszuschließen,
daß es während des Umzugs zu technischen Problemen mit diesen
Seiten kommen wird. Insbesondere im eMail-Bereich wird es vermutlich Probleme
geben. Wenn Sie fragen haben oder mich sonstwie erreichen wollen empfehle
ich an rebel@snafu.de zu posten.
Nachdem der Umzug abgeschlossen ist, wird es allerdings auch inhaltliche Änderungen
während des ersten Halbjahrs 2004 geben. Keine Angst. Es werden keine
Inhalte verlorengehen, aber die Struktur der Seiten wird komplett geändert.
Diese Seite hat eben eine andere Entwicklung genommen seit 2000, als das Projekt
gestartet wurde ;-) Ich werde mich bemühen, daß bei ihnen vorhandene
alte Bookmarks wenigstens zu einem Verweis auf die Neustruktur führen,
und die gesuchten Inhalte für sie trotzdem leicht und schnell auffindbar
sein werden.
Die eigentlich zu dieser Seite gehörenden Domains ag-intra.com, ag-intra.org
und ag-intra.de werden von mir geschlossen bzw. gelöscht und unregistriert.
Anleitung - T-DSL Anbindung
mit SuSE 6.4 für Standalone Rechner und Masquerading Intranets
Copyright 2000 by Frank
Gehde
Die Inhalte dieser Anleitung basieren
wesentlichen auf eigenen Erfahrungen und den unten aufgeführten Links,
insbesondere dem T-DSL HowTo
von Kalle. Ferner wird vorausgesetzt, daß mindestens SuSE 6.4 installiert
ist, mit allen zugehörigen Komponenten (Roaring Penguin PPPoe etc.).
Ist das nicht der Fall, so installieren Sie die Pakete mit Yast nach oder
sehen Sie in den unten genannten Links nach, wie man sich die Pakete sonst
installiert. Noch eine Hürde müßen Sie erstmal allein
nehmen, nämlich den richtigen Kernel zur Verfügung zu haben. Ich
habe keine Ahnung ob das hier mit einem Standardkernel funktioniert oder
nicht. Wenn der Kernel selbstkompiliert ist, sollten alle benötigten
Komponenten für Netzwerkkarte, TCP/IP, Masquerading und PPP einkompiliert
sein.
Übrigens, diese Anleitung richtet T-DSL so ein, daß
Dial On Demand möglich ist. Ich kann mir nämlich nicht vorstellen,
daß jemand T-DSL verwendet ohne eine Flat-Rate zu haben. Und bei Flat
ist Dial On Demand echt zu empfehlen.
Die Anleitung gliedert sich in mehrere Schritte:
Hinweis: Wenn ich irgendwelche Systemdateien ändere, lege ich bei mir
im root-Verzeichnis immer eine Kopie ab, falls SuSEconfig sich an meinen Änderungen
vergreift (und das tut es oft)
1. Konfigurationsdateien anpassen
Zunächst ist die Datei /etc/ppp/options anzupassen. Ich
muß ehrlich gestehen, daß die Anpassung nicht so prima ist. Deshalb
habe ich die bestehende Datei in options.altumbenannt und
mit den folgenden Einstellungen die Datei optionsneu angelegt:
# start of /etc/ppp/options
demand
# angaben fuer dial on demand
connect /bin/true # angaben fuer dial on demand
ipcp-accept-remote # angaben fuer dial on demand
(IP des Providers an.)
ipcp-accept-local # angaben fuer dial on demand
(dyn IP annehmen)
idle 900
# 15 minuten bis zum auflegen (bei inaktivitaet)
noipdefault
# dynamische ip adresse von provider empfangen
defaultroute
user "xxxxxxxxxxxxxxxxxxxxxx#0001@t-online.de"
hide-password
noaccomp
nopcomp
nocrtscts
# keine flowcontrol in hardware (handshake)
lcp-echo-interval 10 # alle 10 sekunden
die verbindung pruefen
lcp-echo-failure 3 # wenn
4x kein reply, dann verbindung tot
lock
# pppd erhaelt exklusiven zugriff auf modem
nodetach
# pppd wird kein background-prozess
# end of /etc/ppp/options
Gute Nachricht: SuSEconfig scheint diese Datei nicht anzutatschen.
Eine Sicherheitskopie schadet trotzdem nicht. Wichtig für diejenigen,
die kein Dial On Demand wünschen, einfach die ersten Zeilen auskommentieren
oder weglassen, hinter denen im Kommentar steht, daß sie für Dial
On Demand zuständig sind. Ansonsten muß selbstverständlich
noch die idle-Time (in Sekunden) angepasst werden, also die Zeit, nach der
aufgelegt wird, wenn keine Aktivität vorhanden ist. Dann muß der
Nutzername user angepasst werden !!! Dabei wird folgendes hintereinander
geschrieben: Anschlusskennung(12stellig), T-Online-Nummer(12stellig) und
Mitbenutzernummer (4-stellig)@t-online.de. Hat die T-Online-Nummer (die
bei älteren Anschlüßen die Telefonnumer mit Vorwahl ist)
weniger als 12 Stellen muß das Doppelkreuz (#) wie auch im Beispiel
hinter ihr angegeben werden. Ansonsten sollte man die Einstellungen wie angegeben
eintragen.
Nun die Datei /etc/ppp/pap-secrets anpassen
(man kann die Angaben auch in der chap-secrets einstellen). Hinter Outbound
Connections kann man die Zeile anpassen, oder übernimmt einfach die
folgenden Inhalte:
# start of /etc/ppp/pap-secrets
"[ANSCHLUSSKENNUNG][ANSCHLUSS-NR]#0001@t-online.de"
* "password"
# end of /etc/ppp/pap-secrets
Die Anführungszeichen müßen angegeben werden.
Die Anschlußkennung muß wie oben beschrieben angegeben werden.
Das Passwort muß im Klartext rein (ja, ich hasse Klartextpasswörter
auch).
Dieser user muß auch in die Datei /etc/ppp/peers/pppoe
eingetragen werden.
Tja, mehr muß man gar nicht ändern. Die Dateien
sind nun erfolgreich angepasst.
2. Netzwerk aufsetzen (hier nur zum Teil beschrieben)
Nun, daß Netzwerk muß natürlich korrekt installiert und
aufgesetzt sein. Das heißt, daß die Netzwerkkarte korrekt installiert
sein muß. Das alles kann man mit Yast einrichten. Dabei sollte man
sich an das SuSE Handbuch halten, oder die SuSE Supportdatenbank
zu Rate ziehen. Bei mir sind die richtigen Netzwerkkartentreiber in den Kernel
kompiliert, und die Karte wird beim Boot korrekt als eth0eingerichtet.
Der in Yast eingerichtete Treiber funktioniert bei mir auch. Beispielhaft
zeige ich kurz die Zeile aus Yast/Administration des Systems/Netzwerk konfigurieren/Netzwerk
Grundkonfiguration für die betreffende Netzwerkkarte eth0:
[0] [X]
Ethernet eth0 192.168.0.99
[ ] |
So in etwa sollte die Zeile aussehen. Über die Taste
F6kommt man an die IP-Konfiguration für
die Karte. Dort sollte folgendes eingestellt sein:
Typ des Netzwerks: |
eth0 |
IP-Adresse ihres Rechners: |
192.168.0.99 |
Dynamische IP-Adresse
(z.B. ippp): |
[ ] |
Netmask (meist 255.255.255.0): |
255.255.255.0 |
Adresse default-Gateway
(falls notwendig): |
. |
IP-Adresse des PointToPoint-Partners: |
. |
Diese Einstellungen sollten ruhig genauso eingetragen werden.
Wer noch mehrere Rechner über ein privates Netz angeschlossen hat, und
dort z.B. die IP-Adressen 192.168.100.xxx verwendet, sollte bei der
lokalen IP-Adresse für die DSL-Netzwerkkarte trotzdem die oben genannte,
oder eine beliebige andere IP-Adresse aus nicht dem privaten Subnetz
verwenden.
Sollten Sie ein privates Netz mit Masquerading ins Internet
bringen wollen. so sollte als zweites Interface eth1 mit einer zweiten
Netzwerkkarte eingerichtet sein. Diese sollte selbstverständlich auch
beim Booten korrekt eingebunden werden. Für Probleme damit, sehen Sie
bitte im SuSE Handbuch nach, oder suchen Sie nach Netzwerkinformationen im
Internet. Als Subnetz sollte wie oben gesagt aber ein anderes eingestellt
sein als bei der für DSL zuständigen Netzwerkkarte.
Sie sollten außerdem den Nameserver eintragen. Dies
geht unterYast/Administration des Systems/Netzwerk konfigurieren/Konfiguration
Nameserver. Welche Nameserver Sie nehmen sollen ? T-Online gibt im Service Bereich
für die Linux Installation den hier an: 194.25.2.129
Wenn Sie noch einen zweiten erreichbaren Nameserver kennen, tragen Sie den
zur Sicherheit auch hier ein. Ich kann Ihnen da leider keine Tipps geben,
da die Administratoren das normalerweise nicht schätzen, wenn Sie T-Online
Zugang auch noch einen anderen Server eines anderen Providers verwenden.
Vielleicht haben Sie ja ersatzweise noch einen anderen festen Provider. Wenn
Sie dort Kunde sind, und der Nameserver auch von anderen als den IP-Adressen
dieses Providers genutzt werden kann, können Sie den ja vielleicht eintragen.
Da Sie dort Kunde sind, sollte es keine Probleme geben.
2a. PPPoE für einen Standalone Rechner aufsetzen
So, nachdem Sie die Konfigurationsdateien angepasst haben, und Ihre Netzwerkkarte
funktioniert, steht dem ersten Online-Gang nichts mehr im Wege. Unter der
Voraussetzung, daß die Netzwerkkarte, die an das T-DSL Modem angeschlossen
ist die Karte eth0 ist, geben Sie am prompt folgendes eingeben:
pppd pty "pppoe -I eth0"
Sinnvoll ist auch noch der folgende Befehl, da es sonst beim
Start zu hängenden Verbindungen kommen kann:
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
So, das wars. Geil, oder? Dauerte doch keine 5 Minuten und
Sie können mit 85 K/s Downstream im Netz rumtoben *g*. Ach, Sie sind
sich noch nicht sicher, ob es auch geht? Naja, dann machen Sie ein Ping
auf eine IP oder einen Servernamen den sie kennen. Oder starten Sie Netscape
und versuchen Sie eine Web-Seite im Netz aufzurufen.
Klappt nicht? Vielleicht hilft ein reboot, und die erneute Eingabe des Befehls.
Wenn nicht überprüfen Sie Ihre Kernel-Konfiguration, die Konfiguration
der Netzwerkkarte und die genannten Konfigurationsdateien. Wenn dort nichts
zu machen ist, bitte ich darum, mich nicht per eMail zu fragen, weil es bei
mir auf Anhieb geklappt hat, und ich leider auch nicht weiß, wie man
die Fehler in anderen Szenarien beheben kann. Vielleicht helfen die unten
aufgeführten Links dann noch weiter.
2b. PPPoE für ein Masquerading Netzwerk aufsetzen
Lustiger ist es natürlich noch das private Hausnetzwerk über die
Linux-.Kiste komplett ins Internet zu routen. Da wir aber nur eine öffentliche
IP-Adresse haben, müssen wir das sogenannte Masquerading (oder NAT)
benutzen. Im Beispiel nutzen wir Masquerading (ich hätte lieber schon
den Kernel 2.4 mit iptables und Netfilters .. naja man kann
nicht alles haben).
Weil für das Masqerading mehr als eine Zeile einzugeben ist, bauen wir
uns ein Shell-Skript, welches das alles für uns erledigt (Wer alles
beim Boot automatisieren will, benötigt dieses Skript dort später).
Das Skript. welches wir verwenden sieht etwa so aus, und wird bei mir unter
/root/script/dslan gespeichert (hier die lange
Version):
#!/bin/bash
#
# ueber dieses Script wird unter einem Kernel 2.2.14 die
dial on demand
# faehige Variante des PPP Daemon mit dem PPP over Ethernet
Zusatz und
# Masquerading fuer ein privates Netz eingeschaltet.
#
#######################################################################
# Hier die benoetigten Zusatzmodule fuer das Masquerading
zuschalten
/sbin/modprobe ip_masq_ftp
# FTP bereitstellen
/sbin/modprobe ip_masq_irc
# IRC-DCC bereitstellen
/sbin/modprobe ip_masq_raudio # Real Audio
bereitstellen
#/sbin/modprobe ip_masq_cuseeme # CuSeeMe Videokonferenzen
# Masquerading einschalten
echo "1" > /proc/sys/net/ipv4/ip_forward # Routing
einschalten
echo "1" > /proc/sys/net/ipv4/ip_dynaddr # dynamische
IPs ermoeglichen
/sbin/ipchains -M -S 7200 10 160
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.100.0/24 -j MASQ
# Masquerading an
# den pppd mit pppoe starten (laeuft im Hintergrund
!)
pppd pty "pppoe -I eth0 -m 1452" > /var/log/pppoe.log
&
# der prozess pppd wird gestartet und in den Hintergrund
geschickt.
# die Ausgaben des pppd bzw pppoe werden in die datei
/var/log/pppoe.log
# geschrieben. Diese kann mit tail -f /var/log/pppoe.log
in einem
# Terminal oder Terminalfenster beobachtet werden (empfohlen)
Achten Sie auch hier auf die Dateirechte. So, sieht zwar schwer
aus, ist es aber nicht. Masquerading wird unter Linux 2.2 immer über
die Firewall-Funktionalität des Kernels realisiert. Einer der Parameter
für die Filterung von Paketen lautet nämlich MASQ. Und damit passiert
folgendes: Anfragen von Rechnern aus dem privaten Netzwerk werden nicht direkt
ans Internet gestellt, sondern an unsere Linux-Maschine. Diese versieht die
TCP/IP-Pakete anstatt mit der privaten Netzwerkadresse mit der IP-Adresse
die durch T-Online zugewiesen wurde und leiitet sie ins Internet weiter.
Der Server im Internet schickt die Antwort an unsere direkt ans Internet
angeschlossene Linux-Kiste zurück, und schaut in die Daten hinein. Da
die Linux-Kiste sich gemerkt hat, welcher Rechner im privaten Netz von genau
diesem Internet-Server etwas wollte, kann er nun die Antwort direkt an den
privaten Rechner weiterleiten.
Das heißt, daß man unendlich viele private Rechner (naja fast)
über nur eine öffentliche, und damit im Internet nutzbare IP-Adresse
an das Internet anschließen kann. Leider ist die Masquerading-Funktion
von Linux 2.2 ziemlich straight und unkomfortabel. Er kann daher Protokolle
nicht routen, die nicht so simpel programmiert sind wie zB. das http-Protokoll.
Dazu gehört z.B. das FTP-Protokoll. Das FTP-Protokoll nutzt zwei Verbindungen,
um zu funktionieren. Dabei wird eine Verbindung von außen zu uns hergestellt.
Das kann die MASQ-Funktionalität nicht handeln. Daher haben findige
Programmierer Module für spezielle Protokolle entworfen, um diese auch
zu Masqueraden.
Daher fängt unser oben gezeigtes Masquerading-Skript erstmal damit an,
die Module zu laden, die ggf. für unser Netz gebraucht werden. Man kann
die Module auch auskommentieren, oder neue hinzufügen. Welche Module
es noch gibt, suchen Sie bitte im Internet selbst heraus (zB. gibt es eines
für Quake Spieler, welches auch bei SuSE dabei ist).
Als nächstes, wird der Patch für dynamische IP-Adressen
wie auch oben beschrieben eingeschaltet. Ähnlich sieht das Einschalten
der Routing-Funktionalität aus.
Der eigentliche Aufruf des pppd mit pppoe sieht dann etwas
anders aus als in der Standalone-Variante. Hier wird zusätzlich noch
die mtuangegeben. Das ist wichtig. ich erinnere mich noch an Artikel
und News in denen stand, daß DSL mit Linux nicht geht. Schuld ist natürlich
T-Online, welche die Paketgröße ein ganz kleines bißchen
zu klein gestaltet haben. Dadurch schlugen Verbindungsversuche immer wieder
fehl. Mit der MTU (Maximal Transfer Unit) von 1452 klappt es aber.
Außerdem sieht man noch eine Umleitung. Normalerweise gibt dieser Befehl
Statusinformationen zur Verbindung aus. Wenn man ihn, bzw. das Skript aber
(wie nachher gezeigt) beim Booten aufruft, dann haben wir ein Problem, da
ja die Informationen auf die Konsole 1 gehen würden, wo aber noch weiter
gebootet wird etc etc. Wir lösen dies, indem wir die Ausgaben in die
Datei /var/log/pppoe.log umleiten. Damit stören die
Informationen nicht, stehen aber zur Verfügung, unabhängig davon
ob wir unter einer Konsole oder unter dem X-Window System arbeiten. Um ein
Fenster für die Ausgabe dieser Informationen (oder eine Textkonsole)
zu reservieren geben wir einfach tail -f /var/log/pppoe.log
am Prompt ein.
Schließlich haben wir in der Zeile noch das "&" Zeichen
eingegeben. Damit schicken wir den Prozess (entgegen den Einstellungen in
der Datei options) doch in den Hintergrund. Dadurch umgehen wir
Probleme beim Boot, bzw. können die Shell weiterverwenden, in der wir
das Skript aufgerufen haben.
Um unter Windows 9x nun auf das Internet zuzugreifen (über
eine Ethernetverbindung zu der Linux-Kiste) muß unter Windows zB. in
den Einstellungen Systemsteuerung/Netzwerk folgendes in den Eigenschaften
bei TCP/IP (oder dem zur Netzwerkkarte zugehörigen TCP/IP) eingestellt
sein:
IP-Adresse: |
Eine IP-Adresse aus dem
privaten Bereich, und im gleichen Subnetz wie die Linux Kiste. Im hiesigen
Beispiel zB. die 192.168.100.20 |
Gateway: |
Die IP-Adresse der Netzwerkkarte für den privaten
Bereich unserer Linux-Kiste. In diesem Beispiel hat unsere Linux-Kiste auf
eth1die IP-Adresse 192.168.100.50 |
DNS-Konfiguration: |
Ein Hostname UND
eine Domäne müssen angegeben werden (funktionierte bei mir jedenfalls
nich ohne. Der Domänenname kann dabei sonstwas sein. Als Nameserver
sollten diejenigen eingetragen werden, die wir auch unter Linux angegeben
haben (müssen aber nicht). |
Bei den Bindungen sollte wohl der Client für Microsoft-Netzwerke
eingetragen sein. Jedenfalls klappte es bei mir nicht ohne (hmm, kann auch
daran liegen, daß mein Netzwerkkabel zu dem Zeitpunkt nicht eingesteckt
war *g*). WINS kann man ruhig abschalten. Bei NetBIOS kann man bei mir eh
nix richten, und die Einstellungen zu ATM in Erweitert sind mir eigentlich
wurscht.
So. Das wars. Eigentlich sollten andere Rechner aus dem privaten
Netzwerk nun ins Internet routen können. Dabei wird jetzt mal vorausgesetzt,
daß Dial On Demand eingeschaltet ist (wie oben bei options
beschrieben). Einfach mal auf einem anderen Rechner Netscape starten und testen,
oder einen Rechner im Internet pingen. Und sollte es nicht funktionieren,
so gilt zur Fehlersuche auch hier, daß bei den Fehlern von Standalone
Rechnern gesagte.
3. PPPoE fest in den
Bootablauf einbauen
Um das ganze jetzt so zu automatisieren, daß es nach dem Booten ohne
weiters Zutun sofort zur Verfügung steht, bauen wir in die Boot-Maschinerie
entsprechendes ein, um die Skripte beim Booten auszuführen (siehe auch
hier: Kurzanleitung Bootscripte).
Die eigentliche Ausführung wird von dem oben gezeigten Skript übernommen.
Ich habe dieses unter /root/script/dslangespeichert. Dieses
Skript muß jetzt von einem der init-Skripte aufgerufen werden. Dieses
legen wir händisch unter /sbin/init.d/an. Es hat bei
mir den Namen dsl, und folgenden Inhalt:
#!/bin/sh
# Startscript fuer TDSL ... nutzt das script unter
# /root/script/dslan
# Rueckgabewert fuer echo (in rc.config festgelegt)
return=$rc_done
case "$1" in
start)
echo -n "Starting DSL-Masquerading: "
startproc /root/script/dslan || return=$rc_failed
echo -e "$return"
;;
stop)
echo -n "Shutting down DSL-Masquerading: "
#killproc -TERM /root/script/dslan || return=$rc_failed
/bin/kill `ps -aux | grep pppd | grep -v grep |
awk '{print $2}'`
echo -e "$return"
;;
status)
echo -n "Checking DSL-Masquerading: "
checkproc /root/script/dslan && echo OK
|| echo No Process
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
;;
esac
test "$return" = "$rc_done" || exit 1
exit 0
Näheres dazu gibt es hier nicht (siehe Kurzanleitung Bootscripte, irgendwo
im Netz oder bei SuSE). Achten Sie auf die
Dateirechte. Dieses Skript sorgt jedenfalls dafür, daß das Masquerading
und TDSL beim Booten gestartet wird (ich weiß nicht ob das stoppen
auch funktioniert. Da es ein Script und kein Programm ist, wird nachher bei
der Ausgabe keine "done" angezeigt. Es funktioniert jedenfalls bei mir).
Dabei ist bei mir auf jeden Fall Dial On Demand in der /etc/ppp/options
eingestellt. Direkt nach dem Booten (ohne daß irgendwer eingeloggt
sein muß) kann jetzt von jedem Rechner auf das Internet zugegriffen
werden.
Dummerweise wird das Script aber nicht von allein aufgerufen. Dazu müßen
noch zwei symbolische Links im Verzeichnis /sbin/init.d/rc2.d
Zzugang mit cd rc2.d) auf das Script mit den Befehlen
ln -s /sbin/init.d/dsl S91dsl
ln -s /sbin/init.d/dsl K09dsl
erzeugt werden. Nähere Hinweise zu den Nummern in der
Kurzanleitung Bootscripte.
Das S steht übrigens für Start und das K für
Kill.
Ob man es glaubt oder nicht. Jetzt kann man Linux hoch- und runterfahren wie
man will. Die TDSL-Routing und Dial On Demand Fähigkeit bleibt voll
erhalten ohne daß man noch einen einzigen Befehl eingeben muß.
Wie gesagt, bei mir funktionierte das alles auf Anhieb. Daher
bitte keine eMails bezüglich irgendwelcher Fragestellungen zu Fehlern,
die bei Ihnen auftauchen. Wer in den Scripten Fehler entdeckt, oder Verbesserungen
hat, der kann mir natürlich gerne mailen.
4.
Weiterführende Links zum Thema
Diese gesamte Anleitung wurde auf der Basis von Informationen aus folgenden
Quellen erstellt:
:
|
-T-DSL HowTo |
Sehr gute Anleitung zur Einrichtung eines T-DSL Zugangs.
Insbesondere die Variante mit RoamingPenguin PPPoE, mit der DialOnDemand
möglich ist gefällt mir sehr gut. |
|
-ADSL4linux |
Diese Seite ist noch ausführlicher dem Thema ADSL
gewidmet. Insbesondere hilfreich der Hinweis auf das Masquerading (Obwohl
es genauso eingerichtet wird, wie mit ISDN). |
|
-Firewall Handbuch |
Guido Stepken wird mein Guru *g*. Das englische ipchains-HowTo
hat er übersetzt und wesentlich erweitert, so daß daraus das Firewall
Handbuch wurde. Für Firewalls und Masquerading-Anbindungen unverzichtbar. |
Vorraussetzungen für die Funktion sind folgende Pakete (zusätzliche
Infos gibt es auch dort):
Linux Kernel
>= 2.2.9
pppd Version
>= 2.3.10
rp-pppoe >=
1.9
zurück
zur Linux Übersicht
|