Login
Newsletter
Do, 27. März 2003, 00:06

IPSec VPN-Tunnel mit Zugriff auf die Gateways

Das Thema IPSec (FreeS/WAN) ist im Zusammenhang mit iproute2 leider nur sehr dürftig dokumentiert, daher dieser Tipp.

Wenn man VPN-Tunnel mit IPSec (FreeS/WAN) aufbaut, dann werden normalerweise zwei lokale Netze (A und B) miteinander über das Internet verbunden. Diese Verbindung wird über VPN-Gateways realisiert (GwA und GwB), die sowohl ein Netzwerkinterface für das lokale Netz als auch ein öffentliches Interface besitzen. Wenn der Tunnel steht, dann kann man von Hosts aus Netz A auf Hosts in Netz.B.zugreifen und umgekehrt.

Normalerweise ist es nicht möglich, aus dem lokalen Netz eine Verbindung auf das jeweils gegenüberliegenden VPN-Gateway selbst (dessen lokale Adresse) aufzubauen (z.B. kann ein Host aus Netz A keinen IP-Connect zu GwB aufbauen und ein Host aus Netz.B.nicht zu GwA). Um dies zu realisieren, wären normalerweise zusätzliche Tunnels, mit den VPN-Gateways als Endpunkte, notwendig.

Der Grund hierfür ist, dass die VPN-Gateways nur die Datenpakete durch den Tunnel senden, die als Zieladresse das jeweils andere lokale Netz adressieren. Wenn jetzt ein VPN-Gateway selbst eine Verbindung initiiert, dann wird als Absendeadresse im IP-Header die öffentliche Adresse des VPN-Gateways verwendet (da diese Verbindung auch über das öffentliche Interface stattfindet). Das gegenüberliegende VPN-Gateway kann aber nur Pakete über den Tunnel zurücksenden, die als Empfängeradresse die lokale Netzadresse besitzen (die für den Tunnel definierte).

Für den Fall, dass man nur zwei Systeme per Internet via IPSec koppeln möchte (die im Extremfall über gar kein dahinter liegendes lokales Netz verfügen), wäre die Konfiguration von mehreren, zusätzlichen VPN-Tunnels ein zu hoher Aufwand. Mittels "advanced routing" (iproute2) kann man dieses Problem jedoch umgehen. Hierbei wird den VPN-Gateways mittels des Kommandos "ip" jeweils eine spezielle Route eingetragen. Diese Route sorgt dafür, dass bei einem Verbindungsaufbau von dem VPN-Gateway in das entfernte Netz als Absendeadresse die lokale Adresse des VPN-Gateways verwendet wird.

Szenario:

Host GwA hat die eine öffentliche IP-Adresse PubA und eine lokale Adresse 192.168.20.1/24 (die lokale Adresse kann eine virtuelle, über ip-Aliasing erzeugte, Adresse oder auch eine "richtige" mit eigenem lokalen Interface sein). Host GwB hat eine öffentliche IP-Adresse PubB und eine lokale Adresse 192.168.21.1/24 (auch hier kann dies ein Alias oder einer reale Adresse an einem separaten Interface sein). Die Interfaces ipsec0 sind jeweils auf die öffentlichen Interface gemappt.

Nachdem der VPN-Tunnel aufgebaut ist, gibt man auf GwA das Kommando

ip route replace 192.168.21.0/24 dev ipsec0 src 192.168.20.1

und auf dem GwB das Kommando

ip route replace 192.168.20.0/24 dev ipsec0 src 192.168.21.1

ein. Die Routingregel auf GwA gibt an, dass bei Verbindungen zu Hosts im Netz 192.168.21.0/24 die (eigene lokale) IP-Adresse 192.168.20.1 als Absendeadresse verwendet werden soll (obwohl das IP-Paket über das öffentliche Interface versendet wird). Für GwB gilt das Umgekehrte.

Jetzt können beide VPN-Gateways sichere IP-Verbindungen zueinander aufbauen. Um die Konfiguration zu testen, muss auf GwA ein ping 192.168.21.1 und auf GwB ein ping 192.168.20.1 funktionieren.

Kommentare (Insgesamt: 17 || Alle anzeigen )
Re[2]: VPN (auron2k, Di, 11. April 2006)
Re: VPN (niko, Fr, 19. Dezember 2003)
Re: VPN (Coffi, Di, 10. Juni 2003)
VPN (torsten, Do, 3. April 2003)
Re: Roadwarrior mit Win2000 oder Win-XP (Frank Meilinger, Di, 1. April 2003)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten