Exit-VPN-Setup: Unterschied zwischen den Versionen
Yanosz (Diskussion | Beiträge) |
Yanosz (Diskussion | Beiträge) |
||
| Zeile 13: | Zeile 13: | ||
== Existierendes Setup == | == Existierendes Setup == | ||
Zu Test-, Experimentier- und Forschungszwecken ist ein VPN-Service zwei Hosts instelliert | Zu Test-, Experimentier- und Forschungszwecken ist ein VPN-Service zwei Hosts instelliert: | ||
* [[Server:Omni | omni.freifunk-koeln.de]] | * [[Server:Omni | omni.freifunk-koeln.de]] | ||
* [[Server:Yagi | yagi.freifunk-koeln.de]] | * [[Server:Yagi | yagi.freifunk-koeln.de]] | ||
Version vom 2. Oktober 2016, 16: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 zwei Hosts instelliert:
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.
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