OpenVPN-Site-to-Site-Bridged-German
From DD-WRT Wiki
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!).