Exit-VPN-Setup: Unterschied zwischen den Versionen
Yanosz (Diskussion | Beiträge) |
Yanosz (Diskussion | Beiträge) |
||
Zeile 37: | Zeile 37: | ||
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> |
Version vom 2. Oktober 2016, 14:09 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