OpenVPN-Site-to-Site-Bridged-German

From DD-WRT Wiki

Revision as of 18:39, 9 January 2008 by DalkenDorsch (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

Contents

Vorwort

In diesem Tutorial will ich erklären, wie man mehrere Router und mobile Clients zu einem VPN zusammen schließt, in welchem alle eine IP-Adresse aus dem selben Adressraum haben, und sich gegenseitig im Netzwerk sehen können und auch Dateien hin-und-her kopiert werden können. Diese Anleitung basiert zum Großteil auf der englischen Anleitung für ein Site-to-Site Bridged VPN zwischen zwei Linksys WRT54GL Routern. (OpenVPN_-_Site-to-Site_Bridged_VPN_Between_Two_Routers) Allerdings waren in dieser Anleitung ein paar Fehler (zumindest funktionierte die Skripte bei mir nicht) weshalb ich sie ein wenig modifiziert habe (basierend auf ein paar anderen Tutorials, unter anderem das deutsche Tutorial OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden). Diese Anleitung funktioniert auch mit mehr als 2 Routern, zur Zeit laufen bei mir 3. Zusätzlich können sich auch noch mobile Clients ins Netzwerk verbinden.

Überblick

Die folgenden Skripte laufen bei mir auf 3 Linksys WRT54GL Routern, welche auf DD-WRT v23 SP3 geflasht sind. Auf den Windows-PC Clients läuft OpenVPN v2.0.9 mit dem GUI (zu bekommen unter http://openvpn.se/download.html). Die dd-wrt Konfigurationen müssen in Administration/Commands (http://dd-wrtrouter/Diagnostics.asp) als Startupscript gespeichert werden.

Zertifikate

Diesen Teil übernehme ich komplett aus der Anleitung für ein Routed-VPN. Die Zertifikate sollen wenn möglich auf einem Windows-XP Computer erstellt werden. Unter Vista spielt die UAC (User Account Control) irgendwie nicht so mit. Mir war es zumindest nicht möglich mit eingeschalteter UAC die notwendigen Schreibrechte etc. zu vergeben um die Zertifakte erstellen zu können. Unter XP ist das definitiv leichter.

Zertifikate

Erstellung von den notwendigen Zertifikaten unter Windows

  • Dos-Fenster öffnen:
Start
Ausführen
"cmd"
OK
  • Vorlagen erzeugen

vars.bat und openssl.cnf aus den Beispielen erzeugen

>c: 
>cd \programme\openvpn\easy-rsa 
>init-config 
  • Variablen anpassen
>notepad vars.bat 

set KEY_COUNTRY=DE
set KEY_PROVINCE=Berlin
set KEY_CITY=Berlin
set KEY_ORG=PrivatPerson
set KEY_EMAIL=mymail@gmx.net

Danach die Datei speichern und den Editor beenden.

  • Erstellen der Keys
>vars
>clean-all
>build-ca

hier alle Angaben bestätigen außer:
Eingabe "ca" (ohne Anführungsstriche) bei Organisational Unit Name
Eingabe "ca" (ohne Anführungsstriche) bei Common Name

>build-dh 
>build-key-server server1 

hier alle Angaben bestätigen außer:
Eingabe "server1" (ohne Anführungsstriche) bei Organisational Unit Name
Eingabe "server1" (ohne Anführungsstriche) bei Common Name
Eingabe "y" (ohne Anführungsstriche) bei Sign the Certificate?
Eingabe "y" (ohne Anführungsstriche) bei 1 of 1 certificate requests certi

>build-key client1 

hier alle Angaben bestätigen außer:
Eingabe "client1" (ohne Anführungsstriche) bei Organisational Unit Name
Eingabe "client1" (ohne Anführungsstriche) bei Common Name
Eingabe "y" (ohne Anführungsstriche) bei Sign the Certificate?
Eingabe "y" (ohne Anführungsstriche) bei 1 of 1 certificate requests certified, commit?

  • Client-Keys in eigenes Verzeichnis kopieren
>md austausch 
>cd keys 
>copy client1.crt  ..\austausch 
>copy client1.key  ..\austausch 
>copy ca.crt       ..\austausch 
>cd .. 

Der Inhalt des Ordners austausch kann / muss jetzt an die Clients versendet werden.
Die besten Übermittlungswege sind Diskette, USB-Stick oder ein verschlüsselter Datentransfer mit IM oder E-Mail (PGP, S-MIME).

Diesen Teil der Anleitung haben wir selbst von folgender Seite übernommen:
http://www.openvpn-forum.de/ext/VPN-Server.html

Danke an dem Ersteller dieser Anleitung

Konfiguration

IP-Adresse vergeben

Nachdem wir ein Bridged-VPN erstellen wollen, müssen alle Router eine IP-Adresse aus dem selben Pool bekommen, und auch an die Clients welche aus diesem Pool verteilen. Es darf aber natürlich keine IP-Adresse doppelt vorkommen, weil das zu Konflikten führen würden. Ich zeige hier die Einstellungen für den Adressraum 192.168.0.0-192.168.0.255 (Es kann natürlich jeder beliebiger Pool gewählt werden, nur muss er eben konsequent eingehalten werden.)

Router der als Server fungiert:

  • IP-Adresse des Routers: 192.168.0.1
  • DHCP-Startadresse: 192.168.0.50
  • Max. DHCP-User: 50

Router der als Client1 fungiert:

  • IP-Adresse des Routers: 192.168.0.2
  • DHCP-Startadresse: 192.168.0.101
  • Max. DHCP-User: 49

Router der als Client2 fungiert:

  • IP-Adresse des Routers: 192.168.0.3
  • DHCP-Startadresse: 192.168.0.151
  • Max. DHCP-User: 49

Wenn man Mehr als 3 Router ins Netzwerk aufnehmen will, muss man den einzelen Netzwerken einfach kleinere IP-Ranges zuteilen, einfach immer aufpassen, dass es zu keinen Überschneidungen kommt.


DDNS Eintrag erstellen

Solltet ihr von eurem ISP einen dynamische IP-Adresse zugewiesen bekommen, müsst ihr dem Router einen DDNS Eintrag verpassen. (Setup/DDNS) Damit können die Clients den Server auch erreichen, wenn ihr eine neue IP-Adresse bekommt.

Server Konfiguration (WRT54 - Linux)

#OpenVPN CFG (Server) 09.01.2008

cd /tmp
mkdir /tmp/myvpn
ln -s /usr/sbin/openvpn /tmp/myvpn/myvpn
/tmp/myvpn/myvpn --mktun --dev tap0
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up

echo "
# Tunnel options
mode server       # Set OpenVPN major mode
proto udp         # Setup the protocol (server)
port 1194         # TCP/UDP port number
dev tap0          # TUN/TAP virtual network device
keepalive 15 60   # Simplify the expression of --ping 
daemon            # Become a daemon after all initialization
verb 3            # Set output verbosity to n 
comp-lzo          # Use fast LZO compression 

# OpenVPN server mode options
client-to-client  # tells OpenVPN to internally route client-to-client traffic 
duplicate-cn      # Allow multiple clients with the same common name
ifconfig-pool 192.168.1.201 192.168.1.210 255.255.255.0 # Define IP-Pool for OpenVPN clients

# TLS Mode Options
tls-server        # Enable TLS and assume server role during TLS handshake 
ca /tmp/myvpn/ca.crt
dh /tmp/myvpn/dh1024.pem
cert /tmp/myvpn/server.crt
key /tmp/myvpn/server.key
" > /tmp/myvpn/ipsec.config

 echo "
-----BEGIN CERTIFICATE-----
Insert the content of your ca.crt
-----END CERTIFICATE-----

" > /tmp/myvpn/ca.crt
echo "
-----BEGIN RSA PRIVATE KEY-----
Insert the content of your server.key
-----END RSA PRIVATE KEY-----

" > /tmp/myvpn/server.key
chmod 600 /tmp/myvpn/server.key
echo "
-----BEGIN CERTIFICATE-----
Insert the content of your server.crt
-----END CERTIFICATE-----

" > /tmp/myvpn/server.crt
echo "
-----BEGIN DH PARAMETERS-----
Insert the content of your dh1024.crt
-----END DH PARAMETERS-----
 " > /tmp/myvpn/dh1024.pem

route add -net 192.168.0.0/24 dev br0

sleep 5
/tmp/myvpn/myvpn --config /tmp/myvpn/ipsec.config


Der Eintrag

duplicate-cn      # Allow multiple clients with the same common name

ist nur notwendig, wenn ihr für Alle Router/Clients ein einziges Zertifikat verwndet (nicht zu empfehlen, weil wenn jemand diese Zertifikat weiter gibt oder ihr jemanden ausschließen wollt werden alle anderen auch ausgeschlossen!).