Print as PDF - DD-WRT

Transcription

Print as PDF - DD-WRT
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Contents
• 1 Vorwort
• 2 Inhalt
• 3 Erweiterungen der Anleitung
• 4 Wichtige Informationen bei Windows-Clients
• 5 Allgemeines zu den Protokollen
• 6 Wichtige Schritte bei der Einrichtung eines OpenVPN Server unter
Windows
• 7 Zertifikate
♦ 7.1 Erstellung von den notwendigen Zertifikaten unter Windows
♦ 7.2 Beispiel zum Sperren eines Zertifikates
• 8 Konfiguration
♦ 8.1 Server Config (WRT54 - LINUX)
◊ 8.1.1 Firewall Einträge (WRT54 - LINUX)
♦ 8.2 Server Config (Windows)
♦ 8.3 Client Config (WRT54 - LINUX)
♦ 8.4 Config Notebook/PC mit Zugriff auf beide Netzwerke
(Windows)
♦ 8.5 Config Notebook/PC mit Zugriff auf ein Netzwerk
(Windows)
• 9 Einträge DNSMASQ am DD-WRT Router
♦ 9.1 Server (WRT):
♦ 9.2 Client (WRT):
• 10 Skizzen
♦ 10.1 mehrere Netzwerke
♦ 10.2 ein Netzwerk
Vorwort
Wir haben leider keine eierlegende Wollmilchsau als Anleitung für die Konfiguration gefunden.
Hilfestellungen fanden wir im WIKI von dd-wrt und im Forum von dd-wrt, hier bei dem ganz speziellen
Posting von cyberde
(http://www.dd-wrt.com/phpBB2/viewtopic.php?p=63035&sid=2e4815a589b78755d57488ee0547249d#63035).
In vielen Beiträgen wurde erwähnt, dass das IP-Forwarding in Linux ? Rechnern aktiviert werden muss. Das
scheint entweder auf den Routern mit DD-WRT-Firmware (v23SP2 und neuer) bereits eingetragen zu sein,
oder diese Einstellung wird nach einmaligem Absetzen von ?echo 1 > /proc/sys/net/ipv4/ip_forward? statisch
gemerkt.
Inhalt
Diese Konfiguration gilt für 2x Linksys WRT54G(L) mit DD-WRTv23SP2 und mehrere Windows ? Clients.
Hier werden 2 private Netzwerke über VPN verbunden und jeder kann jeden sehen.
Möglicherweise funktioniert unsere Konfiguration auch für mehrere Netzwerke. Falls dies jemand
ausprobiert, bitte um Feedback.
Contents
1
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Verwendete Versionen:
Linux: OpenVPN 2.0.7 (http://www.dd-wrt.com/)
Windows: OpenVPN 2.0.9 (http://www.openvpn.se/ [mit GUI])
Wichtig: Beim Verwenden der Windows ? OpenVPN 2.1 Beta kommt es zu Problemen beim Handshake der
Zertifikate.
Die Details der einzelnen Parameter bitte unter http://openvpn.org/ nachlesen (MAN Pages).
Die dd-wrt Konfigurationen müssen in Administration/Commands (http://dd-wrtrouter/Diagnostics.asp) als
Startupscript gespeichert werden.
Feedback ist immer Willkommen.
Erweiterungen der Anleitung
Diese Anleitung wurde für zwei Netzwerke mit je einem Linksys DD-WRT Router geschrieben. Da wir aber
auch schon eine einfaches Netzwerk in Betrieb hatten, haben wir die Einstellungen dafür auch noch
hinzugefügt.
Wichtige Informationen bei Windows-Clients
Bei Windows ? Clients ab Windows XP SP2 sollte bei der von OpenVPN installierten Netzwerkkarte die
Windows ? Firewall deaktiviert werden. Das gilt natürlich auch für sonstige Firewalls.
Allgemeines zu den Protokollen
OpenVPN kann mit den Protokollen TCP oder UDP betrieben werden. Wir haben uns für das UDP Protokoll
entschieden da dies laut einigen Erfahrungsberichten schneller sein soll. Um das TCP Protokoll verwenden zu
können wären folgende Veränderungen bei unseren Einstellungen erforderlich.
Server:
proto udp auf proto tcp-server ändern
Clients:
proto udp auf proto tcp-client ändern
Wichtige Schritte bei der Einrichtung eines OpenVPN
Server unter Windows
Inhalt
2
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Bei einem Server unter Windows bzw. auch Linux muss man, um sein internes Netzwerk von außen erreichen
zu können, den virtuellen VPN Netzwerkadapter und die interne Netzwerkkarte miteinander verbinden
(Netzwerkbrücke [Bridge] erstellen).
Dieses geht unter Windows ganz einfach indem man unter den Netzwerkverbindungen die beiden
Netzwerkverbindungen markiert, mit der rechten Maustaste auf die Markierung klickt, und den Punkt
?Verbindung überbrücken? auswählt.
Achtung:
Es kann dadurch kurzzeitig das LAN verloren gehen. Hat man einen DHCP - Server mit an MAC - Adressen
gebundener IP-Adressvergabe, muss nach dem Erstellen der Netzwerkbrücke (Bridge), die MAC - Adresse
der Netzwerkbrücke am DHCP - Server neu eintragen. So ein Fall kann z. B. bei einem Heimnetzwerk,
welches hinter einem Router ohne DD-WRT Software aufgebaut ist, vorkommen. Hier kann man, sofern es
der Router zulässt, seine Rechner mit fixen IP - Adressen über DHCP ausrüsten. Macht man diesen Schritt
nicht sind die anderen Netzwerkkomponenten von diesem LAN nicht erreichbar.
Über die Eingabeaufforderung kann man kontrollieren ob dieser Vorgang erfolgreich durchgeführt worden ist.
Start
Ausführen
"cmd"
OK
>netsh bridge show adapter
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
Wichtige Schritte bei der Einrichtung eines OpenVPNServer unter Windows
3
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
set KEY_CITY=Berlin
set KEY_ORG=PrivatPerson
set [email protected]
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
>copy client1.key
>copy ca.crt
>cd ..
..\austausch
..\austausch
..\austausch
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
Erstellung von den notwendigen Zertifikaten unter Windows
4
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Beispiel zum Sperren eines Zertifikates
Man will z.B. das Zertifikat ?MOBILE_03? sperren. Um dieses zu tun, muss folgender Befehl am
Zertifikatsrechner abgesetzt werden:
revoke-full.bat MOBILE_03
Danach muss man die CRL.PEM öffnen und das Zertifikat neu im Server einfügen, da dieser sonst ja nichts
von der Änderung mitbekommt.
Konfiguration
Server Config (WRT54 - LINUX)
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
ip route add 192.168.1.0/24 dev br0
echo "
mode server
proto udp
port 1194 #PORT ANPASSEN!!!
dev tap0
keepalive 15 60
verb 4
client-to-client
tls-server
daemon
ca /tmp/myvpn/ca.crt
dh /tmp/myvpn/dh1024.pem
cert /tmp/myvpn/server.crt
key /tmp/myvpn/server.key
crl-verify /tmp/myvpn/crl.pem #Hier werden gesperrte Zertifikate abgefragt
" > /tmp/myvpn/ipsec.config
echo "
-----BEGIN CERTIFICATE----!!!REPLACE WITH YOUR CONTENT!!!
-----END CERTIFICATE----" > /tmp/myvpn/ca.crt
echo "
-----BEGIN RSA PRIVATE KEY----!!!REPLACE WITH YOUR CONTENT!!!
-----END RSA PRIVATE KEY----" > /tmp/myvpn/server.key
chmod 600 /tmp/myvpn/server.key
echo "
-----BEGIN CERTIFICATE----!!!REPLACE WITH YOUR CONTENT!!!
-----END CERTIFICATE-----
Beispiel zum Sperren eines Zertifikates
5
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
" > /tmp/myvpn/server.crt
echo "
-----BEGIN DH PARAMETERS----!!!REPLACE WITH YOUR CONTENT!!!
-----END DH PARAMETERS----" > /tmp/myvpn/dh1024.pem
echo "
----- BEGIN X509 CRL----- #Hier wird die Revocation List geschrieben
!!!REPLACE WITH YOUR CONTENT!!!
----- END X509 CRL----" > /tmp/myvpn/crl.pem
sleep 5
/tmp/myvpn/myvpn --config /tmp/myvpn/ipsec.config
Firewall Einträge (WRT54 - LINUX)
Desweiteren benötigt man bei der DD-WRT Lösung noch einen Firewalleintrag. Dieser teilt dem Router mit
auf welchem Port er eingehende Anfragen zulassen soll.
/usr/sbin/iptables -I INPUT -p udp --dport 1194 -j ACCEPT
WICHTIG:
Man muß hier noch das Protokoll und das Port anpassen auf welches der Router reagieren soll.
Anpassungen:
-p udp #Protokoll Anpassen !!!
--dport 1194 #Port Anpassen !!!
Server Config (Windows)
port 1119 #Port auf die eigenen Anforderungen ANPASSEN !!!
proto udp
mode server
ifconfig 192.168.0.227 255.255.255.0 #IP-Adresse des Servers ANPASSEN !!!
ifconfig-pool 192.168.0.161 192.168.0.169 #IP-Adressenbereich den der Server an die Clients vergi
ifconfig-noexec
dev tap
client-to-client
tls-server
crl-verify C:\\Programme\\OpenVPN\\server\\crl.pem #Pfad ANPASSEN !!!
dh C:\\Programme\\OpenVPN\\server\\server_dh1024.pem #Pfad und Dateiname ANPASSEN !!!
ca C:\\Programme\\OpenVPN\\server\\ca.crt #Pfad ANPASSEN !!!
cert C:\\Programme\\OpenVPN\\server\\server.crt #Pfad und Dateiname ANPASSEN !!!
key C:\\Programme\\OpenVPN\\server\\server.key #Pfad und Dateiname ANPASSEN !!!
float
keepalive 15 60
push "keepalive 15 60"
verb 4
Server Config (WRT54 - LINUX)
6
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Client Config (WRT54 - LINUX)
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
ip route add 192.168.0.0/24 dev br0
echo "client
dev tap0
proto udp
port 1194 #Port anpassen!!
remote server.dyndns.com #Server (URL oder IP) anpassen!!
tls-client
ns-cert-type server
nobind
daemon
ca /tmp/myvpn/ca.crt
cert /tmp/myvpn/client1.crt
key /tmp/myvpn/client1.key" > /tmp/myvpn/ipsec.config
echo "
-----BEGIN CERTIFICATE----!!!REPLACE WITH YOUR CONTENT!!!
-----END CERTIFICATE----" > /tmp/myvpn/ca.crt
echo "
-----BEGIN RSA PRIVATE KEY----!!!REPLACE WITH YOUR CONTENT!!!
-----END RSA PRIVATE KEY----" > /tmp/myvpn/client1.key
chmod 600 /tmp/myvpn/client1.key
echo "
-----BEGIN CERTIFICATE----!!!REPLACE WITH YOUR CONTENT!!!
-----END CERTIFICATE----" > /tmp/myvpn/client1.crt
sleep 5
/tmp/myvpn/myvpn --config /tmp/myvpn/ipsec.config
Config Notebook/PC mit Zugriff auf beide Netzwerke (Windows)
port 1194 #PORT ANPASSEN
remote server.dyndns.com #SERVER ANPASSEN (URL oder IP)
proto udp
dev tap
tls-client
ns-cert-type server
route 192.168.1.0 255.255.255.0 192.168.0.1 #VPN Client setzt beim Verbindungsaufbau die Route zu
ca C:\\Programme\\OpenVPN\\client\\ca.crt
cert C:\\Programme\\OpenVPN\\client\\cl.crt
key C:\\Programme\\OpenVPN\\client\\cl.key
pull #Client verliert ohne das Pull bei Inaktivität die Verbindung
Client Config (WRT54 - LINUX)
7
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Config Notebook/PC mit Zugriff auf ein Netzwerk (Windows)
port 1194 #PORT ANPASSEN
remote server.dyndns.com #SERVER ANPASSEN (URL oder IP)
proto udp
dev tap
tls-client
ns-cert-type server
ca C:\\Programme\\OpenVPN\\client\\ca.crt
cert C:\\Programme\\OpenVPN\\client\\cl.crt
key C:\\Programme\\OpenVPN\\client\\cl.key
pull #Client verliert ohne das Pull bei Inaktivität die Verbindung
Einträge DNSMASQ am DD-WRT Router
Server (WRT):
server=/homenet/192.168.1.1
Client (WRT):
server=/athome/192.168.0.1
Die DNSMASQ ? Einträge sind dafür da, dass mit Namensauflösung zwischen den Netzen gearbeitet werden
kann.
Skizzen
mehrere Netzwerke
Config Notebook/PC mit Zugriff auf ein Netzwerk (Windows)
8
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
ein Netzwerk
erstellt und getestet von Endebe & renmet 12:08, 22 Feb 2007 (CET)
angepasst von Endebe & renmet 17:00, 25 Feb 2007 (CET)
mehrere Netzwerke
9
OpenVPN-Tunnel_Server_/_Client,_Netzwerke_verbinden
Version 1.6
ein Netzwerk
10