vTUN installieren und einrichten

vTUN wurde von Maxim Krasnyansky entwickelt und wird nunher von Bishop Clark gewartet. Bei vTUN hanelt es sich um eine Netzwerk-Anwendung, um virtuelle Tunnel (VPN) über TCP/IP Netzwerke aufzubauen. vTun unterstützt dabei das Internet Protocol (IP), Point-to-Point Protocol (PPP) und SLIP-Protokoll. Zudem verfügt vTUN über eine Schnittstelle zum Tunnel-Treiber Tun/Tap, welcher bereits im Kernel ab Version 2.4 zur Grundausstattung gehört.

Quelle: Wikipedia: vTUN

Übersetzen des vTUN Source-Codes

Auf beiden Rechnern installieren wir nun anhand des Source-Codes den VPN-Tunnel Server und Client.

Source-Files des vTUN Daemon:
http://vtun.sourceforge.net/download.html
http://sourceforge.net/project/showfiles.php?group_id=2947&package_id=2900&release_id=574828 (v3.0.2)

Während der Beschreibung war die Versionsnummer 3.0.2 vom 08.02.2008 verfügbar. Es gilt grundsätzlich immer die neueste Software zu verwenden - dadurch können sich jedoch unterschiede zu dieser Dokummentation ergeben.

Nun laden und entpacken wir den Source-Code. Danach übersetzen wir ihn zu Binary-Code:

wget "http://downloads.sourceforge.net/vtun/vtun-3.0.2.tar.gz?modtime=1202460110&big_mirror=0"
tar xzf vtun-3.0.2.tar.gz
cd vtun-3.0.2
./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/local/share/man --disable-shaper --disable-ssl --disable-zlib --disable-lzo
make
make install

Achtung: Diese Übersetzung des Quelltextes schaltet die Datenverschlüsslung, sowie die Datenkompremierung ab. Je nach Szenario könnte eine verschlüsselte Datenübertragung notwendig / sinvoll sein. Es bleibt jedem selbst überlassen, wie er seinen vTUN-Server / Client zu Binary-Code übersetzt. Der Author übernimmt keine Haftung, wenn die Daten unverschlüsselt übertragen und von Dritten abgehorcht werden.

Konfiguration des vTUN-Servers am ROOT-SERVER

Nun machen wir uns an die Konfiguration des Servers. Wir schalten in diesem Beispiel die Verschlüsslung, sowie die Kompremierung der Daten ab, um einen schnelleren Datendurchsatz gewährleisten zu können. Je nach verwendeter Hardware kann die Verschlüsslung, sowie die Kompremierung sehr viel Zeit in Anspruch nehmen. Mit einer 686er Host-Maschine und einem 2.6GHz Intel P4 erreichen wir ca. 100 MBit Datendurchsatz ohne Verschlüsslung und ohne Kompremierung.

Wir bearbeiten die Datei /etc/vtund.conf:

options {
    port      5000;                  # Listen on this port.
    bindaddr {
        iface eth0;                  # Listen only on ETH0 device only
    };

    # Syslog facility
    syslog    daemon;

    # Path to various programs
    firewall  /sbin/iptables;
    ip        /sbin/ip;
}

# Default session options
default {
    compress no;          # Compression is off by default
    speed 0;              # By default maximum speed, NO shaping
    encrypt no;           # Disable SSL-Encryption
    keepalive yes;        # Enable KeepAlive
    proto udp;            # Use UDP as Data-Protocoll
    multi killold;        # Allow new connection and kill old one
}

# First Interface Profile
dsl-bonding-if-001 {
    passwd my_secreat_password;     # Change password to your liking
    type ether;                     # Use Universal TUN / TAP Driver

    up {
        ip "link set up %% multicast off mtu 1460";      # Use your current MTU on your ISP - 40 Bytes for your tunnel's MTU
        program "/sbin/ifenslave bond0 %%";              # Attach TUN / TAP Device to port-channel
    };
}

# Second Interface Profile
dsl-bonding-if-002 {
    passwd my_secreat_password;     # Change password to your liking
    type ether;                     # Use Universal TUN / TAP Driver

    up {
        ip "link set up %% multicast off mtu 1460";      # Use your current MTU on your ISP - 40 Bytes for your tunnel's MTU
        program "/sbin/ifenslave bond0 %%";              # Attach TUN / TAP Device to port-channel
    };
}

### REPEAT THIS PROFILE MANY TIMES AS YOUR NEED
### YOU NEED ONE PROFILE FOR EACH CONNECTION

 

Den Abschnitt dsl-bonding-if-001, dsl-bonding-if-002, .... benötigen wir für jede einzelne Verbindung, welche wir Bündeln möchten. Sprich, wenn wir 6 DSL-Anschlüsse haben, benötigen wir 6 Profile 001, 002, 003 .... 006! In diesem Profil definieren wir das Passwort, sowie was nach dem Verbindungsaufbau geschehen soll.

In vTUN kann noch vieles mehr eingestellt werden. Für unser Beispiel jedoch ist diese Konfiguration vollkommen ausreichend. Weitere Konfigurationsparameter und die Bedeutung der in dieser Konfiguration verwendeten Befehle, finden Sie in der MAN-Page der Konfigurations-Datei, welche der Source-Distribution beiliegt, oder im Internet unter der URL: http://vtun.sourceforge.net/conf.man.html

Konfiguration des vTUN-Clients am HOME-ROUTER

Die Konfiguration des Clients ist wesentlich einfacher, da die meisten Konfigurations-Eigenschaften nach der Verbindung direkt mit dem Server abgeglichen werden. vTUN initialisiert die Verbindung über einen TCP-Port und schaltet nach der erfolgreichen Authentifizierung erst auf das in der Server-Konfiguration angegebenes Übertragungs-Protokoll um. In unserem Fall muss eine Firewall den Port 5000 sowohl auf TCP wie auch UDP freigeben.

options {
    port      5000;                  # Listen on this port.
    timeout   5;                     # Connection-Timeout in seconds

    # Syslog facility
    syslog    daemon;

    # Path to various programs
    firewall  /sbin/iptables;
    ip        /sbin/ip;
}

dsl-bonding-if-001 {
    passwd  my_secreat_password;
    persist yes;

    srcaddr {
        iface eth0;     # Use first up-/ downstream-device
    };

    up {
        ip "link set %% up multicast off mtu 1460";
        program "/sbin/ifenslave bond0 %%";
    };
}

dsl-bonding-if-002 {
    passwd  my_secreat_password;
    persist yes;

    srcaddr {
        iface eth1;     # Use second up-/ downstream-device
    };

    up {
        ip "link set %% up multicast off mtu 1460";
        program "/sbin/ifenslave bond0 %%";
    };
}

### REPEAT THIS PROFILE MANY TIMES AS YOUR NEED
### YOU NEED ONE PROFILE FOR EACH CONNECTION

 

Auch hier kopieren wir das Profil für jede Anbindung, welche wir bündeln möchten. Der Profilname muss 1 zu 1 dem entsprechen, wie er in der Server-Konfiguration angegeben wurde. In vTUN kann noch vieles mehr eingestellt werden. Für unser Beispiel jedoch ist diese Konfiguration vollkommen ausreichend. Weitere Konfigurationsparameter und die Bedeutung der in dieser Konfiguration verwendeten Befehle, finden Sie in der MAN-Page der Konfigurations-Datei, welche der Source-Distribution beiliegt, oder im Internet unter der URL: http://vtun.sourceforge.net/conf.man.html

Starten von vTUN

Nun kommt der Augenblick der Wahrheit. Nun starten wir unseren Server und den Client und bauen somit die verschiedenen VPN-Tunnel auf. Ganz gespannt dürfen wir dann beobachten, ob unsere Konfiguration ein voller Erfolg gewesen ist.

So starten wir den Server auf dem ROOT-SERVER:

/usr/sbin/vtund -s -f /etc/vtund.conf

und so starten wir die Client-Verbindungen auf unserem HOME-ROUTER:

/usr/sbin/vtund -f /etc/vtund.conf dsl-bonding-if-001 [SERVER-IP-ADRESSE]
/usr/sbin/vtund -f /etc/vtund.conf dsl-bonding-if-002 [SERVER-IP-ADRESSE]
...

Wiederholen Sie den Startvorgang der einzelnen Client-Verbindung für jedes einzelne Profil und ersetzen Sie [SERVER-IP-ADRESSE] gegen die IP-Adresse Ihres VTUN-SERVERs.

Danach sollte eine Prozess-Ausgabe auf dem HOME-ROUTER

ps aux | grep 'vtun' | grep -v 'grep'

folgendes anzeigen:

root  1550  0.0  0.0  1572  520 ?  S<s   2008  1:27 vtund[c]: dsl-bonding-if-001 ether tap0
root  1553  0.0  0.0  1572  616 ?  S<s   2008  1:27 vtund[c]: dsl-bonding-if-002 ether tap1
 

 

Wenn bei Ihnen der vtund-Prozess des Clients etwas wie [connecting] anzeigt, dann scheint es ein Problem mit der Verbindung ins Rechenzentrum zu geben. In solch einem Fall sollten Sie noch einmal genau alle Schritte überprüfen und eventuell mit dem Programm tcpdump den Datentransfer auf den Schnittstellen Ihrer Außen-Anbindungen überprüfen.

Wenn Sie in der oben geführten Anzeigen Ihrer laufenden Prozesse die Profile sehen können, dann versuchen wir einmal die beiden Gegenstellen erreichen zu können.

Folgendes führen wir auf dem ROOT-SERVER aus:

ping 192.168.10.2

Folgendes führen wir auf dem HOME-ROUTER aus:

ping 192.168.10.1

Beide Adressen sollten jeweils mit einer bestimmten Antwortzeit auf Ihre ICMP-Request-Anfrage antworten. Bitte stellen Sie bei Ping-Problemen zuerst fest, ob Ihre Firewall ICMP-Anfragen blockiert und erst danach prüfen Sie Ihre Server- und Client-Konfiguration von vTUN.

Seite 1: Bündelung mehrerer Internet-Zugänge zur Steigerung der Geschwindigkeit
Seite 2: Kernel-Module aktivieren, Userspace-Programme einrichten und Grundkonfiguration vornehmen
Seite 3: Routing vorbereiten, Schnittstellen konfigurieren und Routing einrichten
Seite 4: vTUN installieren und einrichten
Seite 5: Dynamisches Routing mit OLSR einrichten
Seite 6: Abschluss