Exit-VPN-Setup: Unterschied zwischen den Versionen
Yanosz (Diskussion | Beiträge) |
Yanosz (Diskussion | Beiträge) K (→Übersicht) |
||
(19 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
== Einleitung == | == Einleitung == | ||
Nodes verwenden häufig ein VPN um eine Internetverbindung über einem freifunk-freundlichen ISP aufzubauen. | Nodes verwenden häufig ein VPN um eine Internetverbindung über einem freifunk-freundlichen ISP aufzubauen. Hier wird das zugh. Setup beschrieben. Dabei kommen verschiedene VPN-Techniken zum Einsatz - üblich sind und in diesem Setup vorhanden sind: | ||
* [https://openvpn.net/ OpenVPN ] | * [https://openvpn.net/ OpenVPN ] | ||
* [https://de.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol PPTP ] | * [https://de.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol PPTP ] | ||
* [https://projects.universe-factory.net/projects/fastd/wiki fastd ] | * [https://projects.universe-factory.net/projects/fastd/wiki fastd ] | ||
VPN-Services werden in der Regel von kommerziellen Anbietern oder Freifunk-Communities betrieben. Damit Freifunk dezentral funktioniert, ist es wichtig, dass auf dem Freifunk-Node ein beliebiger VPN-Service ausgewählt werden kann und Freifunk nicht auf einen festen Anbieter oder VPN-Administratoren angewiesen ist. Dieser Artikel beschreibt Setup eines Exit-VPN Services der kompatible zu existierenden Anbietern ist. | VPN-Services werden in der Regel von kommerziellen Anbietern oder Freifunk-Communities betrieben. Damit Freifunk dezentral funktioniert, ist es wichtig, dass auf dem Freifunk-Node ein beliebiger VPN-Service ausgewählt werden kann und Freifunk nicht auf einen festen Anbieter oder VPN-Administratoren angewiesen ist. Dieser Artikel beschreibt Setup eines Exit-VPN Services für OpenVPN, PPTP und fastd der kompatible zu vielen weiteren, existierenden Anbietern ist. | ||
== Existierendes Setup == | == Existierendes Setup == | ||
Zu Test-, Experimentier- und Forschungszwecken ist ein VPN-Service | Zu Test-, Experimentier- und Forschungszwecken ist ein VPN-Service zwei Hosts instelliert: | ||
* [[Server:Omni | omni.freifunk-koeln.de]] | |||
* [[Server:Yagi | yagi.freifunk-koeln.de]] | |||
Die komplette Konfiguration steht online: https://github.com/yanosz/omni_yagi_ansible | |||
Eingehende fastd-Verbindungen werden automatisch akzeptiert. Für OpenVPN-Zertfikate und PPTP-Accounts wende Dich an [mailto:vpn@freifunk-koeln.de vpn@freifunk-koeln.de] | |||
== Übersicht == | == Übersicht == | ||
Zeile 22: | Zeile 26: | ||
* [https://github.com/yanosz/fastd-exit/ fastd-exit] - installiert eine fastd-Instanz für ein bereits konfiguriertes TAP-Interface | * [https://github.com/yanosz/fastd-exit/ fastd-exit] - installiert eine fastd-Instanz für ein bereits konfiguriertes TAP-Interface | ||
* [https://github.com/yanosz/freifunk-openvpn-exit openvpn-exit] - installiert mehrere OpenVPN-Instanzen für bereits konfigurierte TAP-Interfaces | * [https://github.com/yanosz/freifunk-openvpn-exit openvpn-exit] - installiert mehrere OpenVPN-Instanzen für bereits konfigurierte TAP-Interfaces | ||
* [https://github.com/yanosz/freifunk-accel-ppp-exit freifunk-accel-ppp-exit ] - konfiguriert accel-ppp für PPTP Verbindungen. | * [https://github.com/yanosz/freifunk-accel-ppp-exit freifunk-accel-ppp-exit ] - konfiguriert accel-ppp für PPTP Verbindungen - accel-ppp wird jedoch nicht installiert. | ||
Ein paar Dinge werden nicht von den Rollen konfiguriert: | |||
# Routing, Firewalling, Masquerding (damit die Adressen wirklich verwendet werden können) | |||
# OpenVPN Zertifikate und keys erzeugen (z.B. http://wiki.openvpn.eu/index.php/Erzeugen_einer_PKI_mit_EasyRSA) | |||
# PPTP Benutzer eintragen - in <tt> /etc/ppp/chap_secrets </tt> | |||
# [https://accel-ppp.org accel-ppp] konfigurieren und installieren | |||
Du kannst jedoch Dinge aus der [https://github.com/yanosz/omni_yagi_ansible Konfiguration von omni und yagi] wiederverwenden. | |||
== Server aufsetzen == | == Server aufsetzen == | ||
Zeile 35: | Zeile 47: | ||
git clone https://github.com/yanosz/tap-router-exit.git roles/tap-router-exit | git clone https://github.com/yanosz/tap-router-exit.git roles/tap-router-exit | ||
git clone https://github.com/yanosz/freifunk-accel-ppp-exit.git roles/accel-ppp-exit.git | git clone https://github.com/yanosz/freifunk-accel-ppp-exit.git roles/accel-ppp-exit.git | ||
</pre> | |||
=== 2. Datei playbook.yml erstellen === | |||
Erstelle eine Datei <tt>ansible_vpn_exit/playbook.yml</tt> mit diesem Inhalt - '''anpassen!''' | |||
<pre> | |||
# playbook.yml | |||
- hosts: der.vpn.server | |||
user: root | |||
roles: | |||
- fastd-exit | |||
- openvpn-exit | |||
- accel-ppp-exit.git | |||
- tap-router-exit | |||
vars: | |||
accel_ppp_exit: # PPTP Konfiguration | |||
ipv4: # IPv4 Konfiguration der PPP Tunnel | |||
gateway_ip: 172.26.128.1 # Gateway-IP | |||
client_pool: 172.26.129.0/24 # Pool für PPP Verbindungen | |||
ipv6: # IPv6 Konfiguration der PPP Tunnel | |||
ppp_links: fd2f:3bfe:9136::/48,64 # Verwende einen kompletten ULA, Range, jeder PPP-Tunnel erhaelt ein /64 Netz | |||
delegate: 2001:67C:20A0:B100::/56,61 # Verteile Prefixes der Groesse /61 aus 2001:67C:20A0:B100::/56 an Nodes | |||
openvpn_exit: # OpenVPN Konfiguration | |||
1194_udp: # Eine Instanz (1194 / udp) | |||
port: 1194 # Port: 1194 / udp | |||
dev: ovpn-exit # Tap-Device: ovpn-exit | |||
proto: udp # Port: 1194 / udp | |||
cert: omni.freifunk-koeln.de.crt # Zertifikat des Servers | |||
ca: ca.crt # Zertifikat der CA | |||
443_tcp: # Weitere Instanz (443 / tcp - proxy friendly) | |||
port: 443 # Port: 443 / tcp | |||
dev: ovpn-tcp-exit # Tap-Device: ovpn-tcp-exit | |||
proto: tcp-server # 443 / tcp | |||
cert: omni.freifunk-koeln.de.crt # Zertifikat des Servers | |||
ca: ca.crt # Zertifikat der CA | |||
tap_vpn_interfaces: # Tap Interface-Konfiguration (fastd / OpenVPN Interfaces) | |||
fastd-exit: # Fuer fastd: | |||
ipv6: fd84:9d34:7e43:1::1 # IPv6-Netzberei fuer tunnel | |||
ipv4: 172.26.32.1 # IPv4-Bereich fuer Tunnel | |||
ipv4_netmask: 255.255.224.0 # | |||
dhcp_start: 172.26.32.10 # DHCP-Bereich | |||
dhcp_end: 172.26.61.254 # | |||
dhcpv6_prefix: 2002:c336:a4ca:8000::/49 # Verteile Prefixes aus 2002:c336:a4ca:8000::/49 | |||
dhcpv6_prefix_slice: 59 # Der Groesse /59 | |||
ovpn-exit: # Tap Interface, OpenVPN Instanz | |||
ipv6: fd84:9d34:7e43:2::1 # (vgl. oben) | |||
ipv4: 172.26.64.1 # | |||
ipv4_netmask: 255.255.224.0 # | |||
dhcp_start: 172.26.64.10 # | |||
dhcp_end: 172.26.95.254 # | |||
dhcpv6_prefix: 2002:c336:a4ca:4000::/51 # | |||
dhcpv6_prefix_slice: 59 # | |||
ovpn-tcp-exit: # Tap Interface, OpenVPN Instanz | |||
ipv6: fd84:9d34:7e43:3::1 # (vgl. oben) | |||
ipv4: 172.26.96.1 # | |||
ipv4_netmask: 255.255.224.0 # | |||
dhcp_start: 172.26.96.10 # | |||
dhcp_end: 172.26.127.254 # | |||
dhcpv6_prefix: 2002:c336:a4ca:6000::/51 # | |||
dhcpv6_prefix_slice: 59 | |||
fastd_bind: # fastd Konfiguration | |||
- any port 10000 interface "eth2" # Nutze Interface eth2 mit Port 10000/udp | |||
fastd_on_verify: # Bei eingehenden Verbindungen | |||
command: 'true' # Akzeptiere jeden Host | |||
mode: sync | |||
</pre> | |||
=== 3. Führe das Playbook aus === | |||
<pre> ansible-playbook playbook.yml | |||
</pre> | </pre> |
Aktuelle Version vom 2. Oktober 2016, 15:54 Uhr
Einleitung
Nodes verwenden häufig ein VPN um eine Internetverbindung über einem freifunk-freundlichen ISP aufzubauen. Hier wird das zugh. Setup beschrieben. Dabei kommen verschiedene VPN-Techniken zum Einsatz - üblich sind und in diesem Setup vorhanden sind:
VPN-Services werden in der Regel von kommerziellen Anbietern oder Freifunk-Communities betrieben. Damit Freifunk dezentral funktioniert, ist es wichtig, dass auf dem Freifunk-Node ein beliebiger VPN-Service ausgewählt werden kann und Freifunk nicht auf einen festen Anbieter oder VPN-Administratoren angewiesen ist. Dieser Artikel beschreibt Setup eines Exit-VPN Services für OpenVPN, PPTP und fastd der kompatible zu vielen weiteren, existierenden Anbietern ist.
Existierendes Setup
Zu Test-, Experimentier- und Forschungszwecken ist ein VPN-Service zwei Hosts instelliert:
Die komplette Konfiguration steht online: https://github.com/yanosz/omni_yagi_ansible
Eingehende fastd-Verbindungen werden automatisch akzeptiert. Für OpenVPN-Zertfikate und PPTP-Accounts wende Dich an vpn@freifunk-koeln.de
Übersicht
Zur Installation wird ansible verwendet, als Betriebssystem Debian 8 (Jessie). Installiert werden OpenVPN, PPTP und fastd. Es gibt die folgenden Rollen:
- tap-router-exit - konfiguriert die TAP-Network-Interfaces für OpenVPN, fastd, inklusive, DNS, radvd und DHCP (IPv4 / IPv6 PD)
- fastd-exit - installiert eine fastd-Instanz für ein bereits konfiguriertes TAP-Interface
- openvpn-exit - installiert mehrere OpenVPN-Instanzen für bereits konfigurierte TAP-Interfaces
- freifunk-accel-ppp-exit - konfiguriert accel-ppp für PPTP Verbindungen - accel-ppp wird jedoch nicht installiert.
Ein paar Dinge werden nicht von den Rollen konfiguriert:
- Routing, Firewalling, Masquerding (damit die Adressen wirklich verwendet werden können)
- OpenVPN Zertifikate und keys erzeugen (z.B. http://wiki.openvpn.eu/index.php/Erzeugen_einer_PKI_mit_EasyRSA)
- PPTP Benutzer eintragen - in /etc/ppp/chap_secrets
- accel-ppp konfigurieren und installieren
Du kannst jedoch Dinge aus der Konfiguration von omni und yagi wiederverwenden.
Server aufsetzen
Du kannst die Rollen wie folgt anwenden
1. Verzeichnisse, Rollen einbinden
mkdir -p ansible_vpn_exit/roles cd ansible_vpn_exit git clone https://github.com/yanosz/fastd-exit.git roles/fastd-exit git clone https://github.com/yanosz/freifunk-openvpn-exit roles/openvpn-exit git clone https://github.com/yanosz/tap-router-exit.git roles/tap-router-exit git clone https://github.com/yanosz/freifunk-accel-ppp-exit.git roles/accel-ppp-exit.git
2. Datei playbook.yml erstellen
Erstelle eine Datei ansible_vpn_exit/playbook.yml mit diesem Inhalt - anpassen!
# playbook.yml - hosts: der.vpn.server user: root roles: - fastd-exit - openvpn-exit - accel-ppp-exit.git - tap-router-exit vars: accel_ppp_exit: # PPTP Konfiguration ipv4: # IPv4 Konfiguration der PPP Tunnel gateway_ip: 172.26.128.1 # Gateway-IP client_pool: 172.26.129.0/24 # Pool für PPP Verbindungen ipv6: # IPv6 Konfiguration der PPP Tunnel ppp_links: fd2f:3bfe:9136::/48,64 # Verwende einen kompletten ULA, Range, jeder PPP-Tunnel erhaelt ein /64 Netz delegate: 2001:67C:20A0:B100::/56,61 # Verteile Prefixes der Groesse /61 aus 2001:67C:20A0:B100::/56 an Nodes openvpn_exit: # OpenVPN Konfiguration 1194_udp: # Eine Instanz (1194 / udp) port: 1194 # Port: 1194 / udp dev: ovpn-exit # Tap-Device: ovpn-exit proto: udp # Port: 1194 / udp cert: omni.freifunk-koeln.de.crt # Zertifikat des Servers ca: ca.crt # Zertifikat der CA 443_tcp: # Weitere Instanz (443 / tcp - proxy friendly) port: 443 # Port: 443 / tcp dev: ovpn-tcp-exit # Tap-Device: ovpn-tcp-exit proto: tcp-server # 443 / tcp cert: omni.freifunk-koeln.de.crt # Zertifikat des Servers ca: ca.crt # Zertifikat der CA tap_vpn_interfaces: # Tap Interface-Konfiguration (fastd / OpenVPN Interfaces) fastd-exit: # Fuer fastd: ipv6: fd84:9d34:7e43:1::1 # IPv6-Netzberei fuer tunnel ipv4: 172.26.32.1 # IPv4-Bereich fuer Tunnel ipv4_netmask: 255.255.224.0 # dhcp_start: 172.26.32.10 # DHCP-Bereich dhcp_end: 172.26.61.254 # dhcpv6_prefix: 2002:c336:a4ca:8000::/49 # Verteile Prefixes aus 2002:c336:a4ca:8000::/49 dhcpv6_prefix_slice: 59 # Der Groesse /59 ovpn-exit: # Tap Interface, OpenVPN Instanz ipv6: fd84:9d34:7e43:2::1 # (vgl. oben) ipv4: 172.26.64.1 # ipv4_netmask: 255.255.224.0 # dhcp_start: 172.26.64.10 # dhcp_end: 172.26.95.254 # dhcpv6_prefix: 2002:c336:a4ca:4000::/51 # dhcpv6_prefix_slice: 59 # ovpn-tcp-exit: # Tap Interface, OpenVPN Instanz ipv6: fd84:9d34:7e43:3::1 # (vgl. oben) ipv4: 172.26.96.1 # ipv4_netmask: 255.255.224.0 # dhcp_start: 172.26.96.10 # dhcp_end: 172.26.127.254 # dhcpv6_prefix: 2002:c336:a4ca:6000::/51 # dhcpv6_prefix_slice: 59 fastd_bind: # fastd Konfiguration - any port 10000 interface "eth2" # Nutze Interface eth2 mit Port 10000/udp fastd_on_verify: # Bei eingehenden Verbindungen command: 'true' # Akzeptiere jeden Host mode: sync
3. Führe das Playbook aus
ansible-playbook playbook.yml