27.9ADSL-Interna

Bei einem ADSL-Zugang gibt es zwei prinzipielle Varianten, wie Ihr Rechner mit dem Internet verbunden wird: Heute sind zum Glück ADSL-Router üblich; in der Vergangenheit mussten Sie sich hingegen oft mit der Konfiguration eines ADSL-Modems plagen.

Manuelle ADSL-Modem-Konfiguration für PPPoE

Die Verbindung zwischen dem ADSL-Modem und Ihrem Computer erfolgt über ein Ethernet-Kabel. Dabei wird allerdings nicht wie sonst üblich das Protokoll TCP/IP verwendet. Daher werden weder die IP-Adresse noch die Netzmaske der Netzwerkschnittstelle berücksichtigt. Eine Konfiguration ist daher nicht erforderlich. Insbesondere darf die Netzwerkschnittstelle nicht als Gateway konfiguriert werden!

PPPoE wird unter Linux von einem Kernelmodul verarbeitet. Damit pppd die Netzwerkschnittstelle für PPPoE nutzen kann, setzen Sie das pppd-Plugin rp-pppoe.so ein. Diese Datei wird bei den meisten gängigen Linux-Distributionen zusammen mit pppd installiert.

Zur pppd-Konfiguration benötigen Sie eine Konfigurationsdatei in /etc/ppp/peers/. Die folgenden Zeilen setzen voraus, dass /etc/options leer ist. Das Passwort zur name-Einstellung muss sich in chap- oder pap-secrets befinden.

# /etc/ppp/peers/adsl # PPPoE-spezifische Optionen plugin rp-pppoe.so mru 1492 mtu 1492 # an diese Schnittstelle ist das ADSL-Modem angeschlossen enp4s0 # Standard-PPP-Optionen lock noauth noipdefault defaultroute usepeerdns # Login-Name für /etc/ppp/pap-secrets bzw. chap-secrets name "hofer" # bei Verbindungsabbruch nach 4 Sekunden Wartezeit # eine neue Verbindung herstellen persist holdoff 4 maxfail 25 # für Red Hat/Fedora ipparam "adsl"

Durch persist wird die Verbindung nach einem Abbruch automatisch wiederhergestellt. holdoff stellt die Wartezeit zwischen einem Verbindungsabbruch und dem Neustart ein. maxfail gibt an, nach wie vielen erfolglosen Verbindungsversuchen pppd aufgibt.

Die ipparam-Option ist notwendig, damit die automatische DNS-Konfiguration bei Red Hat bzw. Fedora funktioniert. Dort ist zusätzlich die folgende Datei erforderlich:

# /etc/sysconfig/network-scripts/ifcfg-adsl PEERDNS=yes

pppd bemerkt unter Umständen nicht selbstständig, wenn bei Ihrem Internet-Provider Probleme auftreten und dieser nicht mehr reagiert. Die folgenden Erweiterungen in der Konfigurationsdatei bewirken, dass pppd alle 60 Sekunden eine Aufforderung an den Provider sendet, sich zu melden. Wenn zweimal hintereinander keine Antwort kommt, beendet pppd die Verbindung. Falls die Konfigurationsdatei persist enthält, wird anschließend die Verbindung sofort wieder neu aufgebaut, in der Hoffnung, dass es dann wieder funktioniert.

# Ergänzung in /etc/ppp/peers/adsl lcp-echo-interval 60 lcp-echo-failure 2

Im Internet werden Daten nicht Byte für Byte, sondern in Paketen übertragen. Die Ethernet-Defaultgröße für solche Pakete beträgt 1500 Byte. Falls sich auf dem Weg zwischen zwei Internetpartnern Hard- oder Software befindet, für die die Datenpakete zu groß sind, werden sie automatisch in kleinere Pakete zerlegt und später wieder zusammengesetzt. Das ist allerdings nicht besonders effizient, weswegen manche Betriebssysteme (unter ihnen Linux) versuchen, die maximale Paketgröße durch das Versenden spezieller ICMP-Pakete herauszufinden. Diese Pakete werden allerdings von manchen Firewalls verschluckt, weswegen die Feststellung der richtigen Paketgröße versagt und mit etwas Pech die Datenübertragung ganz scheitert.

Dieses Problem tritt normalerweise nicht auf, weil der kleinste gemeinsame Nenner, nämlich eine Paketgröße von 1500 Byte, selten überschritten wird. Genau das passiert aber bei PPPoE-Verbindungen, weil ein paar der 1500 Byte für zusätzliche Protokollinformationen verloren gehen. Deswegen müssen MTU (Maximum Transmit Unit) und MRU (Maximum Receive Unit) auf 1492 reduziert werden.

Leider gelten die MTU- und MRU-Optionen für pppd nur für den lokalen Rechner. Wenn dieser Rechner gleichzeitig ein Internet-Gateway für andere Rechner ist (siehe das folgende Kapitel), dann müsste auch auf jedem Client-Rechner die MTU-Einstellung verändert werden.

Um den dadurch verursachten Konfigurationsaufwand zu vermeiden, gibt es eine bessere Lösung, das sogenannte MSS-Clamping. Dabei wird am Gateway die MSS-Option von TCP-Datenpaketen an den lokalen MTU-Wert angepasst. (MSS steht für Maximum Segment Size. Um wirklich zu verstehen, was hier vor sich geht, müssen Sie TCP-Experte sein.)

Um das MSS-Clamping kümmert sich das iptables-System des Kernels, wenn Sie die folgende Paketfilterregel aktivieren. Dabei ersetzen Sie enp4s0 durch die Schnittstelle, an die Ihr ADSL-Modem angeschlossen ist:

root# iptables -o enp4s0 --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN \ -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

Üblicherweise wird dieses Kommando Teil des Firewall-Scripts des Gateway-Rechners sein. Sie können die Regel aber auch in das oben beschriebene Init-Script einbauen. Allerdings müssen Sie dann sicherstellen, dass die Regel bei einem mehrfachen Start des ADSL-Systems nur einmal ausgeführt wird.