====== Exit-VPN ====== Normalerweise wird das VPN mit [[OpenVPN]] gemacht, also erstmal das installieren: aptitude install openvpn **Wichtiger Hinweis:** Immer sicherstellen, daß in der Konfiguration die Option ''**route-noexec**'' eingestellt ist. Damit wird insbesondere keine Default-Route über das Exit-VPN gesetzt. Vergißt man die Einstellung und startet die VPN-Verbindung, so schließt man sich vom Server aus. Dann hilft meistens nur noch Booten in den Rettungsmodus. IPv6-Unterstützung: * Mullvad: ja * Earthvpn: nein, aber für Ende 2016 angekündigt * ovpn.to: ja ===== OpenVPN allgemein ===== * Der zu verwendende Exit wird in ''/etc/default/openvpn'' festgelegt * Der dort eingetragene Name kennzeichnet die Konfigurationsdatei unter ''etc/openvpn'', für die zu verwendende Datei wird das Suffix ''.conf'' angehängt * Jedes ExitVPN wird in einem eigenen Unterverzeichnis verwaltet, unter ''/etc/openvpn'' befinden sich nur Links zu den jew. Konfiguraionsdateien * Das Land und der Server für das ExitVPN sind von Bedeutung, können jedoch nicht automatisch ermittelt werden. Die passende Stelle für die Erfassung dieser Daten ist die Konfigurtionsdatei für den jeweiligen OpenVPN-Tunnel. * In der ersten Zeile der Konfigurationsdatei wird das verwendete Land eingetragen. Das ist dann für Scripte auswertbar, z.B. für Alfred. In der zweiten Zeile wird der Name des Servers angegeben. ## ExitCountry = NL ## ExitServer = NL4 [...] * Wenn alle Gateways die aktuell in Verwendung befindlichen Verbindungen kennen, können Sie sig ggf. aus einem Pool eine freie, noch nicht verwendete Verbindung suchen aund auf diese umschalten. ++++ Up- und Down Scripte | #!/bin/bash # Freifunk Community Pinneberg # Automatisierung Exit-VPN ip route replace 0.0.0.0/1 via $4 table freifunk ip route replace 128.0.0.0/1 via $4 table freifunk # Prüfe, ob Parameter angegeben sind. $1 ist der Provider. # Falls nicht, versuche den Provider aus der Konfiguration zu ermitteln if [ $# -eq 0 ]; then VPNCONF=$(grep -e "^AUTOSTART=" /etc/default/openvpn) PROVIDER=$(sed -e 's/^"//' -e 's/"$//' <<< ${VPNCONF#*=}) else PROVIDER=$1 fi # Masquerading Regel überprüfen und ggf. korrigieren FWRULE=$(iptables --line-numbers -t nat -vnL | grep MASQUERADE | head -n 1 | awk '{$1=$1};1') NATIF=$(echo "$FWRULE" | cut -d' ' -f 8) RULENO=$(echo "$FWRULE" | cut -d' ' -f 1) if [ "$NATIF" != "$PROVIDER" ]; then logger -t exitvpn[$$] "change firewall interface from '$NATIF' to '$PROVIDER' (rule #$RULENO)" iptables -t nat -D POSTROUTING $RULENO iptables -t nat -A POSTROUTING -o $PROVIDER -j MASQUERADE fi exit 0 #!/bin/bash # Prüfe, ob Parameter angegeben sind. $1 ist der Provider. # Falls nicht, versuche den Provider aus der Konfiguration zu ermitteln if [ $# -eq 0 ]; then VPNCONF=$(grep -e "^AUTOSTART=" /etc/default/openvpn) PROVIDER=$(sed -e 's/^"//' -e 's/"$//' <<< ${VPNCONF#*=}) else PROVIDER=$1 fi # Masquerading Regel entfernen FWRULE=$(iptables --line-numbers -t nat -vnL | grep MASQUERADE | head -n 1 | awk '{$1=$1};1') NATIF=$(echo "$FWRULE" | cut -d' ' -f 8) RULENO=$(echo "$FWRULE" | cut -d' ' -f 1) if [ "$NATIF" == "$PROVIDER" ]; then logger -t exitvpn[$$] "removing firewall interface '$NATIF' (rule #$RULENO)" iptables -t nat -D POSTROUTING $RULENO fi exit 0 ++++ ===== Mullvad ===== Mullvad kostet 5€ je Monat. Am besten einen Briefumschlag nehmen, die Mullvad-ID auf eine A4-Seite drucken, einen Geldschein hineinlegen. Frankieren mit 90ct und nach Schweden senden. Schön anonym :-) Die Dateien für Mullvad werden in das Verzeichnis ''/etc/openvpn/mullvad'' abgelegt: ''ca.crt'', ''crl.pem'', ''mullvad.crt'', ''mullvad.key'', sowie ''mullvad.conf'' Im Normalfall genutzt von ''gate03'' und ''gate05''. ++++ Beispielkonfiguration Mullvad | ## ExitCountry = NL client dev-type tun dev mullvad proto udp remote nl.mullvad.net resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 remote-cert-tls server ping-restart 60 script-security 2 route-noexec up /etc/openvpn/exitvpn-up down /etc/openvpn/exitvpn-down ping 10 ca /etc/openvpn/mullvad/ca.crt cert /etc/openvpn/mullvad/mullvad.crt key /etc/openvpn/mullvad/mullvad.key ++++ ===== EarthVPN ===== Die Administration des EarthVPN-Zugangs wird von Henry durchgeführt. http://www.earthvpn.com/ Earthvpn Certificate Authority (CA): wget http://www.earthvpn.com/downloads/earthvpn.crt Im Normalfall genutzt von ''gate01''. ++++ Beispielkonfiguration Earthvpn | ## ExitCountry = CH client dev-type tun dev earthvpn proto udp remote zur-ch.earthvpn.com 1194 resolv-retry infinite nobind persist-key persist-tun ca /etc/openvpn/earthvpn/earthvpn.crt auth-user-pass /etc/openvpn/earthvpn/secret.dat # auth-nocache remote-cert-tls server # reneg-sec 0 reneg-sec 7200 verb 3 auth SHA1 cipher AES-128-CBC ping 10 ping-restart 60 auth-retry nointeract route-noexec script-security 2 up /etc/openvpn/exitvpn-up down /etc/openvpn/exitvpn-down mute-replay-warnings ++++ ===== oVPN.to ===== Dieser Zugang wurde 2015 für ein Jahr gesponsert, 2016 ebenfalls. Im Normalfall genutzt von ''gate04''. ++++ Beispielkonfiguration ovpn.to | ## ExitCountry = SE # oVPN.to Server (se1.ovpn.to) Configuration built 2016-09-13 09:09:41 # #### Allowed for Edit - oVPN-Client55314 Settings verb 3 #### Server Settings (dont change anything down here!) dev-type tun dev ovpn.to explicit-exit-notify 1 remote 193.105.134.118 443 proto udp client nobind mute-replay-warnings persist-tun persist-remote-ip resolv-retry infinite comp-lzo no auth SHA512 remote-cert-tls server ns-cert-type server topology subnet cipher AES-256-CBC fragment 1340 mssfix tls-version-min 1.2 #STRONG TLSv1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384 #### Linux Part ca "/etc/openvpn/se1.ovpn.to/se1.ovpn.to.crt" cert "/etc/openvpn/se1.ovpn.to/client55314.crt" key "/etc/openvpn/se1.ovpn.to/client55314.key" tls-auth "/etc/openvpn/se1.ovpn.to/se1.ovpn.to.key" 1 #--INFO-- openvpn with user+group setting is unable to delete your routes on openvpn-stop! #user openvpn #group openvpn #--INFO-- Use update-resolv-conf to FIX DNSLEAK! See https://wiki.archlinux.org/index.php/OpenVPN#DNS for Details! Works with ALL LINUX!! route-noexec script-security 2 up /etc/openvpn/exitvpn-up down /etc/openvpn/exitvpn-down #up /etc/openvpn/update-resolv-conf #down /etc/openvpn/update-resolv-conf #### Linux Special / Experimental Options #fast-io #nice -10 #mtu-disc yes # oVPN-Config se1.ovpn.to END ++++