Re: [openSwan] ipsec.conf: Welche IP bei left= wenn hinter NAT-Router?
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++
Reply to: