Exit-VPN-Setup: Unterschied zwischen den Versionen

Aus Freifunk Köln, Bonn und Umgebung
Zur Navigation springen Zur Suche springen
 
(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. Diese Seite beschreibt das zugehörige Setup.  
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:
 
Hierbei kommen verschiedene VPN-Techniken zum Einsatz - üblich 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 auf omni.freifunk-koeln.de und yagi.freifunk-koeln.de installiert. Die komplette Konfiguration steht online: https://github.com/yanosz/omni_yagi_ansbile
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:

  1. Routing, Firewalling, Masquerding (damit die Adressen wirklich verwendet werden können)
  2. OpenVPN Zertifikate und keys erzeugen (z.B. http://wiki.openvpn.eu/index.php/Erzeugen_einer_PKI_mit_EasyRSA)
  3. PPTP Benutzer eintragen - in /etc/ppp/chap_secrets
  4. 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