Kleines Howto IPsec mit racoon

Aus Linupedia
Wechseln zu: Navigation, Suche

Autor: stka

Auf Grund dessen, dass ich selbst über einige Zeit nach einer Lösung gesucht habe, möchte ich heute mal ein kleines Howto schreiben zum Thema IPsec Verbindung von einem Host hinter einem Router mit dynamischer IP. Vielleicht hilft es ja dem einen oder anderen. Zwar habe ich das ganze unter debian realisiert ist aber auch unter Suse machbar.

Also die Aufgabe war folgende: Mein privates Netz über IPsec mit einem anderen Netz zu verbinden. Wobei die IP des IPsec Gateway'S auf der anderen Seite eine feste IP hat. Hier mal die Verbindungen:

"Mein Netz 192.168.0.0/24" ==> "Mein Router mit dynamischer IP" ==> "Router mit fester IP IPsec Gateway" ==> "Netzwerk hinter Gateway 192.168.1.0/24"

Die Netze, die verbunden werden sollen, MÜSSEN unterschiedliche IP Bereiche haben. Mein Router unterstützt IPsec passthrough, dadurch werden die IPsec Anfragen durchgeleitet. Die Verschlüsselung läuft über preshared key. Zum Verbindungsaufbau habe ich "racoon" und "setkey" verwendet. Beide Programme basieren auf dem im Kernel 2.6 integrierten IPsec Stack. Für beide Programme gibt es eine conf-Datei. Hier nun die conf-Dateien:

# Pfad zum Konfigurations Verzeichnis
path include "/etc/racoon";

# So kann man am Anfag gut die Fehler finden
log debug;
# In der Datei werden die Schlüssel eingetragen
path pre_shared_key "/etc/racoon/psk.txt"; 

# Voreinstellung die so aus dem Standard übernommen wurden.
padding
{
maximum_length 20; # maximum padding length.
randomize off; # enable randomize length.
strict_check off; # enable strict check.
exclusive_tail off; # extract last one octet.
}

# Hier die Konfiguration der Phase 1
# durch remote anonymous wird diese System zu einem roadwarrior
# ein System mit dynamischer IP
remote anonymous {
exchange_mode aggressive;
generate_policy on;
support_proxy on;
proposal_check obey;
# der identifier MUSS von der Gegenstelle eingerichtet sein und bekannt sein.
# Es gibt hier verschieden Möglichkeiten siehe "man racoon.conf"
my_identifier user_fqdn "meine@email-adresse.de";
lifetime time 3600 sec;

# Hier werden alle Verschlüsselungen für die Phase 1 angegeben
# Auch das wird vom anderen GW vorgegeben.
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
dh_group 2;
lifetime time 28800 sec;

}
}

# Hier beginnt die Phase 2
sainfo anonymous {
pfs_group 2;
encryption_algorithm blowfish;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
lifetime time 3600 sec;
} 

# Mein Netz ==> Netz hinter GW
sainfo address 192.168.1.0/24 any address 192.168.0.0/24 any
{
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm blowfish;
authentication_algorithm hmac_md5,hmac_sha1;
compression_algorithm deflate;
}


Das war die Datei racoon.conf

hier nun die Datei setkey.conf


#!/usr/sbin/setkey -f
# Löschen und zurücksetzten aller Verbindungen
flush;
spdflush;

# Hinweg hier werden die IP's der GW am ende des Tunnels angegeben
# Die IP 162.54.11.14 ist die IP des anderen GW vor dem Zielnetz.
spdadd 192.168.0.0/24 192.168.1.0/24 any -P out ipsec
esp/tunnel/192.168.0.2-162.54.11.14/require;

# Rückweg
# Das ganze noch mal nur anders herum
spdadd 192.168.1.0/24 192.168.0.0/24 any -P in ipsec
esp/tunnel/162.54.11.14-192.168.0.2/require;


Jetzt fehlt nur noch die Datei psk.txt


162.54.11.14 einschoenlanger123undschwer23zuratender!!22schluessel

Jetzt noch den "racoon" neu starten und ein "ssh <host IP im anderen Netz>" sollte funktionieren.

Ich hoffe dem einen oder anderen wird es etwas helfen.

eingefügt: --Yehudi 00:59, 26. Aug 2006 (CEST)