AG-Intra.net Arbeitsgemeinschaft
Intranet

Home
Was ist ein Intranet
Grundlagen
Netzwerke
Linux
Windows
Java
Sicherheit
Datenbanken
Projekte
Links
Impressum
Mitmachen ?
Diskussionsforum
Letztes Update:
04.07.2002
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 Zugang und Router mit SuSE 8.0 
Copyright 2002 by Frank Gehde
Eine Anleitung für TDSL mit SuSE 6.4 sowie Hinweise zu weiteren Versionen finden Sie hier.
Diese Anleitung beschreibt im wesentlichen wie man mit Bordmitteln von SuSE 8.0, also auch YaST2, den Zugang zu T-DSL konfiguriert und den Rechner dann als Router für ein Netzwerk konfiguriert. Wer lieber wissen möchte, wie man den T-DSL Zugang händisch konfiguriert findet zum Beispiel beiadsl4linux eine Anleitung.

Die Anleitung gliedert sich in mehrere Schritte:
 

1. Installation
Diese Anleitung bezieht sich auf ein SuSE 8.0 Professional aus der Box. Weil ich genug Platz auf der Platte habe, und ich ja nie weiß was ich noch auf diesem Rechner laufen lassen möchte, habe ich praktisch alle Pakete installiert. Für den gewünschten Einsatzzweck wären jedenfalls die Pakete 'ppp', 'iptables' und 'YaST2' erforderlich. Als Kernel wurde der SuSE 2.4.18-4GB Standardkernel installiert. Sollten Sie einen eigenen Kernel kompilieren, so denken Sie bitte daran Unterstützung für die von Ihnen verwendeten Netzwerkkarten einzukompilieren, sowie die entsprechende Unterstützung für ip, ppp und iptables.

2. Netzwerkkarten
Wer es nicht bei der Installation bereits erledigt hat (ähnlich wie hier beschrieben), der sollte jetzt die Netzwerkkarten konfigurieren. Ich habe zwei Netzwerkkarten und habe mich entschieden, daß eth0für das interne Netzwerk zuständig ist und die DSL Anbindung über eth1 stattfinden soll. Zu Konfiguration wird das YaST2 ControlCenter aufgerufen und dort unter 'Netzwerk/Basis' das Modul 'Konfiguration der Netzwerkkarte' gestartet. Im oberen Fenster erscheinen dort erkannte aber nicht konfigurierte Karten.  Davon klickt man eine an und klickt dann auf den Button konfigurieren. Beiden Netzwerkkarten weist man statische IP-Adressen aus dem privaten Bereich zu. 

Abbildung YaST2

Ich habe hier zum Beispiel die 192.168.111.200 für eth0(also internes Netzwerk) vergeben und 192.168.0.99 für eth1(also die DSL-Karte). Wer sich mit IP-Adressen auskennt wird feststellen, daß beide Adressen aus verschiedenen Subnetzen stammen. Das ist auch richtig so und bleibt so. 

Abbildung YaST2

Die IP-Adresse für eth1 wird sowieso nur provisorisch eingetragen, damit die Netzwerkkarte beim Boot korrekt initialisiert werden kann. Bei der Verbindungsaufnahme über DSL wird ihr dann sowieso die IP-Adresse von T-Online dynamisch zugewiesen. Es reicht bei einer der Netzwerkkarten einen Rechnernamen und die Nameserver einzutragen. Wenn alles geklappt hat können die Netzwerkkarten nun genutzt werden. Ein pingauf einen anderen lokalen Rechner sollte zeigen, ob eth0 korrekt funktioniert, zB:

>ping 192.168.111.10

Antwortet der angepingte Rechner, und gab es keine Paketverluste (0% loss) dann funktioniert eth0 für das interne Netzwerk.

3. DSL-Konfiguration mit YaST2
Die DSL Konfiguration mit YaST2 funktioniert fast gut. Sie findet sich ebenfalls im Bereich 'Netzwerk/Basis' vom YaST2 Control Center. Dort sind zunächst vor allem die Zugangsdaten anzugeben. Anschlusskennung und T-Online-ID sind in der Regel 12-stellig. Die Anschlusskennung beginnt immer mit drei Nullen. Hat die T-Online Nummer weniger als 12 Stellen so muss dies eigentlich durch ein abschließendes Doppelkreuz ('#') signalisiert werden. Zum Glück ist YaST2 hier so intelligent, daß es das selbst erledigt. Der Benutzerzusatz (benutzername im Dialog) für den Hauptnutzer ist eigentlich immer 0001. Das Passwort müssen Sie schon selbst wissen. Diese Daten werden im übrigen im Klartext in der Datei'/etc/sysconfig/network/providers/dsl-provider0' abgelegt. Der Nutzername hat dort dann die erforderliche Form von

 [ANSCHLUSSKENNUNG][ANSCHLUSS-NR]#0001@t-online.de

Das Verzeichnis kann nur von root  betreten werden. 
Als Netzwerkkarte, die direkt an das T-DSL Modem angeschlossen ist habe ich bei mir natürlich eth1 angegeben. Die idle-Time habe ich auf 900 Sekunden hochgesetzt, was etwa 15 Minuten entspricht. Dial-On-Demand habe ich aktiviert, weil ich eine Flatrate habe und jederzeit von jedem Client ohne weiteres Gefummel ins Internet will. Das fühlt sich im praktischen Betrieb an, als wäre das Internet immer da, auch wenn im Hintergrund die Verbindung bei Inaktivität mal ruhen mag. 
Achtung: Wenn Sie keine Flatrate haben, seien Sie vorsichtig mit Dial-On-Demand.  Befinden sich Windows Rechner in Ihrem internen Netzwerk, dann produzieren diese unaufgefordert oft Nameserver Anfragen etc. welche die Verbindung aufrecht erhalten können. Und bei fehlender Flatrate kann das am Ende des Monats teuer werden. 
Die Firewall habe ich nicht aktiviert, weil ich das gerne selbst machen möchte. Dieses Häkchen würde laut SuSE Hilfstext bewirken, daß von außen keine Verbindungen zu dem Router bzw. dem internen Netz möglich wären. Dies erledigen wir aber wie weiter unten gezeigt selbst mit iptables.

Abbildung YaST2

(Das mit den Nameservern kann problematisch sein. Grundsätzlich verwendet T-Online ein Einwahlverfahren, bei dem dem Client (bzw. Router) bei der Einwahl/Anmeldung ein Nameserver automatisch zugewiesen wird. Das ist für Klick-Klack Clients auch ganz toll, weil sie sich dann nicht um die Einstellungen kümmern müssen. Aber es ist eben auch weniger transparent. Wer, wie ich, einen Nameserver fest eintragen will, brauch die entsprechende IP-Adresse. Und die ist bei T-Online gar nicht so leicht in Erfahrung zu bringen. Ab und an stehen einige bei den Installationstipps von T-Online im Servicebereich des Webangebotes. Zeitweise aber auch nicht. Ggf. kann man es ja mal mit der Hotline versuchen. Oder ein bekannter mit funktionierendem DSL-Zugang in der Nähe kann über Netstat mal die IP eines gültigen Nameservers abfragen).
Die vorgeschlagenen Nameserver 217.5.115.7 und 194.25.2.129 funktionieren zur Zeit bei mir, aber ich habe auch schon von Nutzern gehört bei denen sie nicht funktionieren.
Nun kann man die Konfiguration beenden. Theoretisch müsste DSL nun funktionieren. Funktionierte bei mir aber nach dem folgenden Reboot nicht. Und zwar sollte DSL von den init Scripten beim Booten vor den Ethernet-Karten initialisiert werden was doof war.  Ich habe den Ort dieser Aufrufe momentan leider nicht gefunden um diese manuell umzustellen. SuSE hat das Problem aber erkannt und bietet in der Support-Datenbank ein rpm Paket an, welches die Reihenfolge entsprechend umstellt. Dies können Sie hier herunterladen. Kopieren Sie das rpm auf den entsprechenden Rechner (ja, vermutlich brauchen Sie eine Floppy, da Sie ja noch keinen funktionierenden Netzwerkzugang haben) und geben Sie als root folgenden Befehl ein:

>rpm -Fhv sysconfig.rpm

Nun rebooten Sie den Rechner und DSL sollte danach funktionieren (bei mir taucht tatsächlich beim Booten immer noch die Fehlermeldung 'modprobe: Can't locate module dsl0' auf. Dies scheint sich jedoch im laufenden Betrieb nicht auszuwirken. Die eigentliche Schnittstelle heisst nachher auch ppp0 und nicht dsl0. Wer dazu Hinweise hat, kann mir diese mailen). Versuchen Sie nun Verbindungen ins Internet aufzubauen. Dies sollte klappen.

4. Online-Update
Da nun der Zugriff auf das Internet möglich ist, bietet es sich an über YaST2 ein Online-Update durchzuführen. Dabei werden unter anderem wichtige bekannte Sicherheitslöcher geschlossen, die in einer SuSE 8.0 Standard Installation noch vorhanden sind. Das Online-Update können Sie auch über das YaST2 Control Center durchführen. Sie finden es unter 'Software->Online-Update'.

5. Sicherheit Schritt 1
Normalerweise würde ich nun an dieser Stelle zwei Dateien bearbeiten, um die nach einer Standardinstallation aktiven Serverdienste zu deaktivieren, da diese immer auch ein Sicherheitsrisiko sind. Dies wären die Dateien /etc/inetd.conf und /etc/rc.config. Da ab SuSE 8.0 dierc.config so nicht mehr als zentrale Konfigurationsdatei existiert, muß ich auf diese zunächst verzichten, da ich noch nicht alle neuen Orte für die entsprechenden Einstellungen gefunden habe. Das löse ich aber nachher anders.
Also geht es erstmal frisch an die Datei /etc/inetd.conf, die Sie zum Beispiel mit dem Editor Joe ändern können:

>joe /etc/inetd.config

Hier sollten Sie alle Zeilen mit Diensten auskommentieren, die Sie nicht brauchen (einfach ein '#' am Anfang der Zeile einfügen). Das werden zunächst im Zweifel alle sein. Später kann man sie ja wieder anschalten wenn man Sie braucht. Mit dem Befehl

>ps -aux | grep inetd

können Sie die Prozess-ID des inetd in Erfahrung bringen. Mit dem Befehl

>kill -HUP [Prozess-ID]

veranlassen Sie das der inetd die Konfigurationsdatei neu einliest (sollte der Prozess inetd gar nicht laufen, können Sie diesen über Yast2 Control Center 'System->Runlevel-Editor' starten und für die Runlevel 3 und 5 aktivieren). Jetzt sind nur noch wenige sicherheitskritische Dienste aktiviert und die entsprechenden Ports offen. Dies können Sie mit dem Kommando 

>nmap localhost

ausprobieren.

6. Masquerading - Router Funktionalität herstellen
Zunächst gilt es zwei Kernelparameter einzustellen. Den ersten kann man auch für den reinen Zugang schon gebrauchen. Es handelt sich um den DYN_IP_PATCH. Um diesen bei jedem Boot zu aktivieren verwendet man wieder das YaST2 Control Center. Unter System startet man dort das Modul Sysconfig-Editor. Unter 'Network->Base->IP' kann man dann den DYN_IP_PATCH auf Yes setzen. Damit umgeht man Probleme bei der ersten Einwahl mit der Namensauflösung, die durch die dynamische IP-Vergabe von T-Online zustande kommen. In dem gleichen Dialog kann man auch gleich das IP_FORWARDING einschalten; eine Grundvoraussetzung für den Betrieb als Router. Diese Einstellungen werden übrigens unter '/etc/sysconfig/sysctl' abgelegt. Dort sollte auch ECN diasabled sein, weil es auch hier Probleme mit T-DSL geben kann.

Bisher haben wir Konfigurationsdateien verändert etc. Alle bisherigen Einstellungen sind fest und werden bei jedem Systemneustart automatisch ausgeführt. DSL für unseren Rechner sollte jetzt schon prima funktionieren. Jetzt schlägt die Stunde für das Einschalten der Masquerading Funktionalität, die Modifikation der MTU und einer ersten einfachen Sicherheitsschranke. Dies wird alles mit iptables, der Firewalling Funktionalität des Kernels erledigt.
Zunächst muss das Masquerading eingeschaltet werden. Dies geschieht mit den beiden folgenden Kommandos:

>modprobe iptable_nat
>iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Nun funktioniert tatsächlich das Routing bereits und unser Rechner kann unser Netzwerk komplett ins Internet bringen. Leider funktionieren noch nicht alle Dinge. Ich habe zB. Probleme mit dem IRC, mit meinen Webseiten zum Onlinebanking und dem Download von JDK's bei sun.com. Hier gibt es Probleme mit der MTU. SuSE rät dazu entsprechend die Dateien unter '/etc/sysconfig/network/ifcfg-*' zu modifizieren. Da aber keine derartige Konfigurationsdatei für die Schnittstelle ppp0vorhanden ist, über die ja unsere Verbindung läuft, bringt das keinen Erfolg. Aber wiederum bietet uns iptables hier die Möglichkeit das gewünschte Ziel zu erreichen. Um die MTU (die standardmässig auf 1500 oder 1492) eingestellt ist, auf den für das Routing erforderlichen Wert von 1452 zu bringen (durch Routing Informationen und PPPoE Protokollinformationen entsteht ein entsprechender Overhead an Daten, der so kompensiert werden muß), wird folgendes Kommando verwendet:

>iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Nun funktioniert der Rechner zu hundert Prozent als Router. Die gezeigten Zeilen packen wir im nächsten Abschnitt in ein kleines Script.

7. Sicherheit Schritt 2
Wie unter 5. bereits gesagt, sind noch einige Ports auf dem Rechner offen. Wir lassen diese zunächst auch offen. Um sie jedoch von außen nicht angreifbar zu machen, werden wir zwei kleine Firewallregeln aufstellen, die Verbindungen, die aus dem Internet kommen abblocken. Dies tun wir mit den folgenden Zeilen:

>iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
>iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP

Damit ist ein einfacher Linuxrouter nun erfolgreich eingerichtet. Da diese Anweisungen nach jedem Reboot neu eingegeben werden müssen machen wir uns ein kleines DSL-Script zB. bei mir im Verzeichnis '/root/skripte' namens dslan:

#!/bin/sh
# Das Modul für Network Adresstranslation (NAT) bzw. Masquerading laden und die
# Masquerading Funktionalität einschalten.
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Die MTU entsprechend auf 1452 einstellen (pmtu)
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Einfache Firewallregeln zur Blockade eingehender Verbindungen
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP

Mit diesem Script kann DSL nach jedem Reboot gleich "Router-Fähig" gemacht werden. Mit 

>chmod u+x dslan 

können Sie das Script startfähig machen, wenn Sie es alsroot verfasst haben, und gerade in dem Verzeichnis stehen.

8. Bootfähig machen
Es wäre jetzt natürlich schön, wenn dieses Script nach jedem Reboot automatisch aufgerufen werden würde. Da DSL vom pppd (PPP-Daemon) über den smpppd (SuSE Meta PPP Daemon) gestartet wird, habe ich mir gedacht, daß ich das Script einfach in dem init-Script für den SMPPPD mitaufrufe. So muss ich nicht selbst ein derartiges init-Script schreiben. Das init-Script findet sich unter '/etc/init.d/smpppd'. Mit einem Editor wiejoe kann man es ändern. Man findet dort deutlich sichtbar einenstart) Abschnitt. Dort trägt man den Aufruf ein, so daß der Startabschnitt schließlich so ähnlich aussieht:

 start)
        echo -n "Starting SMPPPD"
        ## Start daemon with startproc(8). If this fails
        ## the echo return value is set appropriate.

        # NOTE: startproc return 0, even if service is
        # already running to match LSB spec.
        startproc $SMPPPD_BIN

        # Remember status and be verbose
        rc_status -v

        # MTU ändern, Masquerading einschalten und einfache Firewallregel aufsetzen:
        /root/skripte/dslan
        ;;

So, die Probe auf Exempel zeigt, daß die komplette Funktionalität nun nach jedem Reboot zur Verfügung steht. Dabei spielt es auch keine Rolle ob man in den Runlevel 3 oder 5 bootet :)

9. Links
 

- ADSL4linux Hier wird beschrieben, wie man DSL unter SuSE 8.0 manuell (zB unter Verwendung von ifconfig etc.) aufsetzt. Ausserdem finden sich Installationshinweise und Anleitungen zu allen SuSE Versionen sowie anderen Distributionen.

- SuSE SDB Hier findet sich der Patch, um einen Fehler in der Netzwerkdevice Initialisierung zu korrigieren.

- SuSE SDB 2 
  und SDB 3
Hier finden sich Hinweise und Erklärungen zur MTU und zu ECN Fehlern mit TDSL

- IP Tables Hier finden Sie die Grundlagen zu Masquerading mit IP Tables auf deutsch.

- IP Tables 2 Hier finden Sie Hinweise wie Sie die Firewall weiter ausbauen können (deutsch).

- IP Tables 3 Homepage von IP Tables. Für alle weiteren Fragen zu Firewalls starten Sie hier.

10. Hinweise
Sollte etwas bei Ihnen nicht funktionieren, so finden Sie hier noch einige Informationen zu Randbedingungen die Ihnen vielleicht helfen evtl. auftretende Probleme zu lösen.
- Verwendete Hardware:
Ich habe einen neuen Router. Es handelt sich um ein Shuttle Spacewalker SV 24 Barebonesystem (das ist einfach ein sehr kleiner PC). Für diesen habe ich eine VIA C3 533 Mhz CPU beschafft, die ich demnächst noch passiv kühlen möchte. Im einzigen PCI Slot hängt eine Realtek 8029 Netzwerkkarte. Ansonsten verwende ich nur die Onboardkomponenten und eine 20 GB HD sowie 128 MB SD RAM. Es funktionierte auf Anhieb perfekt, so wie hier beschrieben.
- Fehlersuche:
Sollte irgendetwas nicht gewünscht funktionieren, lohnt sich immer ein Blick in /var/log/messages. Vielleicht können Sie anhand der dort auftauchenden Fehlermeldungen schon feststellen ob vielleicht nur ein Paket fehlt welches installiert werden sollte etc. Im übrigen schadet es auch nicht, während des ganzen Konfigurationsvorganges eine Konsole aufzuhaben in der sie mit tail -f /var/log/messagesdiese Datei die ganze Zeit über im Auge behalten.
- Vorbehalte:
Ich stehe nicht wirklich auf YaST2 und diese nicht-transparenten Konfigurationswerkzeuge. Aber YaST 1 steht unter SuSE 8.0 nun nicht mehr zur Verfügung, die Konfigurationsdateien haben sich ziemlich verändert und daher war die Verwendung von YaST2 zunächst kaum zu umgehen. Es gibt natürlich den o.g. Weg alles komplett händisch aufzusetzen. Das ist aber zunächst einmal mehr Arbeit, und ausserdem vertraue ich den SuSE Systemen auch nicht ganz, ob selbst gezogene und kompilierte _Systemprogramme_ sofort unproblematisch laufen, oder ob es unerwünschte Seiteneffekte gibt. Die hier gezeigte Lösung funktionierte jedenfalls relativ unproblematisch (bis auf das Problem der vertauschten Schnittstelleninitialisierungen eth0/1und dsl0) und vor allem schnell.


zurück zur Linux Übersicht

Copyright 2002 by Frank Gehde