On Tue, 23 May 2006, Daniel Musketa wrote: > Server ist über PPPoE/DSL mit der Welt verbunden und hat seine eigene (aber > täglich wechselnde) IP.
Und bei hinreichender Instabilität des Providers auch mehrmals täglich. Spannend wird es insbesondere dann, wenn beide Seiten dynamische IP-Adressen bei instabilen Providern haben. > Bonusfrage: Hätte es auch eine elegantere Variante gegeben, als jedesmal die > IP in der conf-Datei zu ändern? Ja. Die Verwendung von einem dynamischen Resolving. Ich mache das hier über einen angemieteten Root-Server, der via TSIG beim ip-up die neuen Namenszuordnungen empfängt und über entsprechende forwarder-Einträge im DNS für diese spezielle Zone das Resolving vornimmt. Diese IP-Namenszuordnungen besitzen eine TTL von gerade mal 30 Sekunden, so daß ein PERL-Script auf dem Router diese Zuordnungen zeitnah überprüfen und bei Änderungen den Tunnel neu starten kann. Das PERL-Script dazu gibt's hier: http://212.227.20.60/debian/dyn-ipsec.pl Die Wirkungsweise ist grob skizziert wie folgt: - Einlesen der /etc/ipsec.conf und ermitteln der konfigurierten Connections mit ihren Parametern. - Für jede Connection einen Resolver-Thread starten, der die in left/right angegebenen Hostnamen in den vom DNS vorgegebenen TTL-Intervallen prüft und Änderungen entsprechend abarbeitet. - Einen Master-Thread, der zwischen einfachen Namensänderungen oder ganzen Linedrops unterscheidet und entsprechend entweder die Connection neu lädt oder den pppd durchstartet. Einen Effekt hat die Verwendung von Zertifikaten mit OpenSwan jedoch noch: Wenn eine Connection innerhalb ihrer ikelifetime zweimal ab- und wieder aufgebaut wird, weigert sich die SA bei ipsec auto --delete zu "sterben". Erst nach Ablauf der ikelifetime geht die SA kaputt und kann erneut aufgebaut werden. Sieht nach einem komischen Bug in KLIPS aus. Die Connection-Infos des Routers sind hier: conn %default rightrsasigkey=%cert leftrsasigkey=%cert right=%defaultroute rightcert=fs-antepoth.pem rightsubnet=192.168.186.0/24 rightsourceip=192.168.186.254 ikelifetime=900 rekeymargin=300 keyingtries=0 authby=rsasig auto=start dpddelay=10 dpdtimeout=60 dpdaction=restart Alle anderen Connections sind dann etwas übersichtlicher definiert: conn extta left=www.antepoth.de leftcert=www.antepoth.de.pem leftsubnet=192.168.101.254/24 leftsourceip=192.168.101.254 rightcert=dfw1.so.antepoth.de.pem conn XXXhhta left=XXXXXX-hh.dyndns.org leftcert=lc-hamburg.pem leftsubnet=192.168.13.5/255.255.252.0 leftsourceip=192.168.13.5 usw... Wie Du siehst, haben weder left noch right irgendwelche IP-Adressen. Auf diese Weise kann auch die Gegenstelle bei einem IPSEC-Tunnel dynamisch sein. t++

