OpenVPN: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
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. Dies setzt voraus, daß jeder Client ein individuelles Zertifikat erhält. ''Wenn die Clients nur ins Internet wollen, wäre ein Cert für alle und ein DHCP-Pool besser.  Todo: Rausfinden, wie das geht.''
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> als VPN-Netz angenommen. ''Todo: Ausnahmeregeln für Windoze verstehen und erklären.''
** 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 fertig, weil kein VPN-Plan vorhanden''
''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 z.B. <code>/etc/openvpn/ccd/vpn-client.freifunk-potsdam.de</code>:
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 ===