Tunnels are cheap

Veröffentlicht am 18 Feb 2006 um 4:10 pm. 4 Kommentare.
Gespeichert unter Tutorials, Tips & Tricks.

Was will uns diese Überschrift sagen?

Immer wieder wird im IPCop-Forum die Frage gestellt, wie denn das Routing über ein VPN funktioniert. Alle Versuche, mit “route add…” Pakete auf den Tunnel zu schicken, scheitern kläglich. Warum ist das so, und was kann man stattdessen tun? Diese Frage will ich hier kurz beleuchten.

Wenn ein IPSec-Tunnel gestartet wird, werden in der “Datei” /proc/net/ipsec_eroute alle neuen Routen, die durch die Tunneldefinitionen dazugekommen sind, eingetragen. Wenn kein VPN läuft, existiert die “Datei” übrigens nicht. Mit /usr/lib/ipsec/eroute auf der Konsole kann ein Blick auf diese VPN-Routen (eroute) geworfen werden. Mit route lässt sich dagegen auf der Konsole die normale Routingtabelle anschauen.

Wenn nun ein Paket auf dem IPCop eintrifft, wird es zuerst mit der eroute-Routingtabelle aus /proc/net/ipsec_eroute abgeglichen. Nur wenn hier keine passende Route gefunden wird, wird das Paket an die normale Routingtabelle (route) weitergeleitet und dann normalerweise über das Defaultgateway weitergeschickt. Die normale Route wird natürlich nur dann zum gewünschten Ziel führen, wenn kein VPN benötigt wird, um die Ziel-IP zu erreichen.

Mit diesen Informationen sollte es nun kein Problem mehr sein, auch Subnetze zu erreichen, die z. B. “hinter” dem Subnetz-GREEN liegen.

Angenommen wir haben dieses Setup:

SubnetzA/IPCopA — Internet — IPCopB/SubnetzB — Router/SubnetzC

Ein Client in SubnetzA muss Server in SubnetzB und SubnetzC ereichen. Hier genügt es nicht, nur zwischen SubnetzA und SubnetzB ein VPN zu bauen und dann von SubnetzB zum SubnetzC zu routen. Alle Pakete für das SubnetzC würden vom IPCopA auf das Defaultgateway (Internet) geschickt und nicht durch den Tunnel zum IPCopB, da keine eroute für SubnetzC vorhanden ist. Um dieses Verhalten zu ändern, muss ein zweiter Tunnel definiert werden mit SubnetzA als “Lokales Subnetz” und SubnetzC als “Remote Subnetz”, die “Remote Host/IP” wäre dann RED-IPCopB. Dadurch wird automatisch eine neue eroute eingerichtet und das Paket für SubnetzC korrekt über den Tunnel zu IPCopB geschickt, der dann wiederum ganz normal ins SubnetzC weiterrouten kann.
Tunnels are cheap

Subnetting
Eine andere Möglichkeit, das vorangegangene Szenario zu lösen, wäre über die Definition von Subnetzen. Dies geht aber nur, wenn sich SubnetzeB und SubnetzC in der gleichen Klasse bewegen (192.168.x.x, 172.16.x.x, oder 10.x.x.x). Hier besteht dann z. B. die Möglichkeit mehrere Subnetze zusammenzufassen und dadurch über einen einzigen Tunnel zu adressieren. Ein Beispiel:

SubnetzA = 192.168.1.0/24
SubnetzB = 192.168.2.0/24
SubnetzC = 192.168.3.0/24

SubnetzA/IPCopA — Internet — IPCopB/SubnetzB — Router/SubnetzC

Um SubnertB und SubnetzC zusammenzufassen, müsste man als “Remote Subnetz” 192.168.2.0/23 oder 192.168.2.0/255.255.254.0 verwenden. Dadurch wären alle Adressen zwischen 192.168.2.1 und 192.168.3.254 abgedeckt und würden damit über den Tunnel geschickt.

Supernetting

Da mehrere Tunnel aber keinen negativen Einfluss auf die Performance haben und transparenter implementiert werden können, empfehle ich persönlich die Verwendung von mehreren Tunneldefinitionen. Dazu kommt, dass diese Lösung universell einsetzbar ist und auf keinen Fall eine Umadressierung notwendig macht.

Wer nicht so fit im Subnetting ist, kann Subnet Kalkulatoren wie z. B. diesen hier verwenden:
http://jodies.de/ipcalc

Nähere Informationen zum Subnetting:
http://www.netplanet.org/adressierung/subnetting.shtml

Der Originalartikel “Tunnels are cheap” findet sich hier und adressiert noch wesentlich mehr Szenarien:
http://www.freeswan.org/freeswan_trees/freeswan-1.99/doc/adv_config.html

Gruss
Ecki

4 Kommentare zu ‘Tunnels are cheap’:

  1. AndiK am 23 Mar 2006 um 10:20 am: 1

    Beim Versuch über das GUI einen 2. VPN-Tunnel in ein dahinterliegendes Subnetz einzurichten, bekomme ich folgenden Fehler:
    A connection with this common name already exists.

    Liegt es daran, dass ich dasselbe Zertifikat benutze wie für den 1. Tunnel (hostcert des Ziels)?

  2. AndiK am 23 Mar 2006 um 4:04 pm: 2

    Mit PSK klappt die 2. Verbindung. Die 1. Verbindung benutzt Zertifikate.

  3. Ecki am 23 Mar 2006 um 10:34 pm: 3

    Hallo AndiK

    schau doch mal in diesen Thread: http://www.ipcop-forum.de/forum/viewtopic.php?p=77772#77772

    Gruss
    Ecki

  4. VPN mit 3 Standorten - MCSEboard.de MCSE Forum am 7 Apr 2008 um 6:05 pm: 4

    […] noch nen 2 Tunnel Hi du musst noch einen 2 ten VPN Tunnel für deine Subnetze ( Aussenstellen ) einrichten. Eine gutes Howto findest du hier. Ecki’s Place : Tunnels are cheap […]

Kommentar/Ergänzungen schreiben

(wird nicht veröffentlicht)

:mrgreen: :| :twisted: :arrow: 8O :) :? 8) :evil: :D :idea: :oops: :P :roll: ;) :cry: :o :lol: :x :( :!: :?: