Exit-VPN-Setup: Unterschied zwischen den Versionen
Yanosz (Diskussion | Beiträge) |
Yanosz (Diskussion | Beiträge) |
||
Zeile 104: | Zeile 104: | ||
</pre> | </pre> | ||
=== 3. Führe das Playbook aus === | === 3. Führe das Playbook aus === | ||
<pre> | <pre> ansible-playbook playbook.yml | ||
ansible-playbook playbook.yml | |||
</pre> | </pre> | ||
Version vom 2. Oktober 2016, 14:16 Uhr
Einleitung
Nodes verwenden häufig ein VPN um eine Internetverbindung über einem freifunk-freundlichen ISP aufzubauen. Diese Seite beschreibt das zugehörige Setup.
Hierbei kommen verschiedene VPN-Techniken zum Einsatz - üblich 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 der kompatible zu existierenden Anbietern ist.
Existierendes Setup
Zu Test-, Experimentier- und Forschungszwecken ist ein VPN-Service auf
- omni.freifunk-koeln.de und
- yagi.freifunk-koeln.de installiert. Die komplette Konfiguration steht online: https://github.com/yanosz/omni_yagi_ansbile
Ü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.
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
4. Weitere Schritte
Damit die VPN-Dienste wirklich benutzbar sind, musst Du andere Dinge konfigurieren
- 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
Da viele Dinge von Deiner Systemkonfiguration abhängen (z.B. verwendete Firewall, genutzte CA Software) gibt's hier keine einfach nutzbaren Rollen. Du kannst jedoch gerne Dinge aus der Konfiguration von omni und yagi wiederverwenden.