AG-Intra.net Arbeitsgemeinschaft
Intranet

Home
Was ist ein Intranet
Grundlagen
Netzwerke
Linux
Windows
Java
Sicherheit
Datenbanken
Projekte
Links
Impressum
Mitmachen ?
Diskussionsforum
Letztes Update:
28.10.2000
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


Copyright 2000 by Frank Gehde