[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: