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 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 >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