OpenVPN: Unterschied zwischen den Versionen
keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 9: | Zeile 9: | ||
Ein VPN besteht aus: | Ein VPN besteht aus: | ||
* Einem '''Server''', der den Zugang zum virtuellen Netz kontrolliert und das Routing zwischen den Clients und Nicht-VPN-Netzen regelt, | * Einem '''Server''', der den Zugang zum virtuellen Netz kontrolliert und das Routing zwischen den Clients und Nicht-VPN-Netzen regelt, | ||
* Mehreren '''Clients''', die durch einen VPN-Tunnel mit dem Server kommunizieren. Mit Umweg über den Server ist so auch eine Client-zu-Client-Kommunikation möglich, sofern die Routing-Regeln des Servers dies zulassen. | * Mehreren '''Clients''', die durch einen VPN-Tunnel mit dem Server kommunizieren. Mit Umweg über den Server ist so auch eine Client-zu-Client-Kommunikation möglich, sofern die Routing-Regeln des Servers dies zulassen. Im Freifunk will man das aber eher nicht. | ||
Im üblichen Aufbau von OpenVPN-Netzen melden sich die Clients über ein SSL-Zertifikat am Server an, wobei der CN (''Canonical Name'') des Zertifikates als Rechnername verwendet wird, um die korrekte Netzwerk-Konfiguration des Client zu bestimmen. | Im üblichen Aufbau von OpenVPN-Netzen melden sich die Clients über ein SSL-Zertifikat am Server an, wobei der CN (''Canonical Name'') des Zertifikates als Rechnername verwendet wird, um die korrekte Netzwerk-Konfiguration des Client zu bestimmen. Mehrere Clients können dasselbe Zertifikat benutzen, sofern der Server passend konfiguriert ist. | ||
== Einrichtung == | == Einrichtung == | ||
Zeile 17: | Zeile 17: | ||
* SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen. | * SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen. | ||
* Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (''Melle, bitte ergänzen''): | * Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (''Melle, bitte ergänzen''): | ||
** Welche LAN-Adressen (nach RFC 1918) sollen für das VPN verwendet werden? Im Folgenden sei <tt>10.0.0.x</tt> | ** Welche LAN-Adressen (nach RFC 1918) sollen für das VPN verwendet werden? Im Folgenden sei <tt>10.0.0.1</tt> für den Server und <tt>10.1.x.y</tt> für die Clients angenommen. | ||
** Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt? Bis auf weiteres sei davon ausgegangen, daß Clients Verbindungen ins Internet nutzen dürfen, aber nicht untereinander kommunizieren sollen. | ** Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt? Bis auf weiteres sei davon ausgegangen, daß Clients Verbindungen ins Internet nutzen dürfen, aber nicht untereinander kommunizieren sollen. | ||
** Welche Namen haben die VPN-Teilnehmer? Nachfolgend sei <code>vpn-client.freifunk-potsdam.de</code> bzw. <code>vpn-server.freifunk-potsdam.de</code> angenommen. | ** Welche Namen haben die VPN-Teilnehmer? Nachfolgend sei <code>vpn-client.freifunk-potsdam.de</code> bzw. <code>vpn-server.freifunk-potsdam.de</code> angenommen. | ||
** Wo soll der Server laufen? Auf einem AP nahe einem schnellen Uplink oder ganz weit draußen im Internet? | |||
=== SSL-Certs === | === SSL-Certs === | ||
Benötigt werden mindestens ein Server-Cert, und mindestens ein Client-Cert. | Benötigt werden mindestens ein Server-Cert, und mindestens ein Client-Cert. | ||
Um ein Cert zu erstellen, wird ein Key benötigt. Mit OpenSSL geht das so: | Um ein Cert zu erstellen, wird ein Key benötigt. Mit OpenSSL geht das so: | ||
Zeile 41: | Zeile 41: | ||
=== Server-Config === | === Server-Config === | ||
''Noch nicht | ''Noch nicht final, weil kein VPN-Plan vorhanden'' | ||
Die Server-Config besteht aus: | Die Server-Config besteht aus: | ||
Zeile 79: | Zeile 79: | ||
status openvpn-status.log | status openvpn-status.log | ||
In <code>/etc/openvpn/ccd</code> befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also | In <code>/etc/openvpn/ccd</code> befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also <code>/etc/openvpn/ccd/vpn-client.freifunk-potsdam.de</code>: | ||
ifconfig-push 10.0.1.2 10.0.1.1 | ifconfig-push 10.0.1.2 10.0.1.1 | ||
push "route 10.0.0.0 255.255.0.0" | push "route 10.0.0.0 255.255.0.0" | ||
push "redirect-gateway" | |||
=== Client-Config === | === Client-Config === |