freeX: Tips & Tricks
|
Dial-on-Demand klappt nicht mehr
Bei ISDN- und DSL-Zugängen mit dynamischen IP-Adressen gibt es hin und wieder ein Problem nach Trennung der Verbindung, gefolgt von einem erneuten Aufbau der Verbindung (für die es dann dank dynamischer IP-Adressen auch eine neue IP-Nummer gibt). Wenn sich »pppd« und »pppoed« verabschieden und die Verbindung nicht wieder neu aufbauen können, kann es daran liegen, daß die Quelladresse der Datenpakete und Netzwerk-Sockets dynamisch geändert wurde. Wenn die Verbindung getrennt wird, der Kernel jedoch noch Netzwerkverbindungen mit der alten Adresse offen hat, hängen diese und können Probleme verursachen. Sie müssen explizit abgebaut werden.
Seit langem befindet sich daher im Kernel ein spezieller Treiber, der die Quell-Adressen bei dynamischen IP-Nummern passend umschreibt. Dieser kann derart eingestellt werden, daß offene Verbindungen nach einer Änderung der IP-Nummer abgebaut werden. Allerdings sind diese Modi normalerweise deaktiviert und müssen explizit eingeschaltet werden, wenn sie benötigt werden. In diesem Fall wird RST-Provoking benötigt, damit bestehende Verbindungen wieder abgebaut werden.
Wenn RST-Provoking aktiviert ist, ändert der Kernel die Quell-Adresse von einem Netzwerk-Socket selbst dann, wenn die Netzwerkverbindung bereits besteht. Der Kernel ändert daher nach erneutem Aufbau der Verbindung die Quell-Adresse der bestehenden Netzwerkverbindung, was zur Folge hat, daß ein ungültiges Datenpaket rausgeschickt wird. Da es die neue (und ab sofort gültige) Quelladresse enthält, wird es auch korrekt geroutet, ist aus Sicht des Zielrechners jedoch trotzdem ungültig. Dort kommt das Paket jedoch an und bewirkt, daß die Verbindung abgebaut wird.
Genau das ist der gewünschte Effekt, denn nur so wird die Verbindung auf beiden Seiten schnell abgebaut. Das kommt auch dem »pppoed« zugute, denn jetzt bekommt es korrekt mit, daß die Verbindung nicht mehr besteht und kann einen erneuten Verbindungsaufbau einleiten. Um dieses Verhalten zu aktivieren, wird 5 (bzw. 7 für zusätzliche Ausgaben im Syslog) in die Pseudo-Datei »/proc/sys/net/ipv4/ip_dynaddr« geschrieben. Dazu wird in eines der Start-Skripte, die beim Booten des Rechners ausgeführt werden, folgende Zeile geschrieben:
echo 5 > /proc/sys/net/ipv4/ip_dynaddr