Eine Verbindung ins Ausland ist die einfache Methode das Problem mit der Mitstöhrerhaftung zu umgehen. Dafür sollte ein geeigneter VPN-Service-Provider ausgewählt werden. Hier eine Liste von Kandidaten: https://torrentfreak.com/vpn-services-that-take-your-anonymity-seriously-2013-edition-130302/ ====== Installation von OpenVPN ====== apt-get install openvpn **Konfiguration von OpenVPN** Zuerst sorgen wir dafür das OpenVPN beim Booten nicht automatisch startet: update-rc.d -f openvpn remove Die Konfiguration ist abhängig vom VPN-Anbieter, Im folgenden werden [[http://mullvad.net|Mullvad]] und [[http://ipredator.se|IPredator]] behandelt, **Mullvad** Die Konfiguration für OpenVPN kommt vom VPN-Anbieter in Form einer komprimierten Datei die nach /etc/openvpn entpackt wird: unzip 1234.zip cp -f 1234/* /etc/openvpn/ rm -rf 1234 In der Konfigurationsdatei /etc/openvpn/1234.conf müssen die beiden Zeilen die mit "up" und "down" beginnen auskommentiert werden und der dev-name in vpn_exit geändert werden: dev vpn_exit Zusätzlich werden Einstellungen hinzugefügt: echo "route-noexec" >> /etc/openvpn/1234.conf echo "route-up /etc/openvpn/update-route" >> /etc/openvpn/1234.conf Damit wird OpenVPN so eingestellt das die routing-Tabelle main (ip route show table main) nicht verändert wird und stattdessen ein Script (update-route) aufgerufen wird das die Einträge vom DHCP Server in einen eigene Tabelle "vpn" einträgt. Das Script /etc/openvpn/update-route: #!/bin/bash #Script called by OpenVPN with network/gateway information. vpn_interface="$dev" vpn_gateway="$route_gateway_1" mesh_interface="br-mesh" exec >/var/log/update-route.log 2>&1 date echo "(I) vpn_interface: '$vpn_interface'" echo "(I) vpn_gateway: '$vpn_gateway'" echo "(I) mesh_interface: '$mesh_interface'" #setup table if it does not exist yet ip route show table vpn &> /dev/null || echo 100 vpn >> /etc/iproute2/rt_tables #cleanup previous table ip rule del table vpn &> /dev/null while ip route del default table vpn &> /dev/null; do true; done #set new gateway for the vpn network ip route add default via "$vpn_gateway" dev "$vpn_interface" table vpn ip rule add dev "$mesh_interface" table vpn prio 32565 ip route add 127.0.0.0/8 dev lo table vpn ip route flush cache #enable packet forwarding to function s a router echo 1 > /proc/sys/net/ipv4/ip_forward iptables --append FORWARD --in-interface "$mesh_interface" -j ACCEPT #Enable MASQUERADE to function as a NAT router iptables --table nat --append POSTROUTING --out-interface "$vpn_interface" -j MASQUERADE **IPredator** Für IPredator wird folgendes update-route Script (/etc/openvpn/update-route) benötigt: #!/bin/sh IP=$4 mesh_interface=br-mesh BASE="$(echo $IP | cut -d. -f1-3)" LSV="$(echo $IP | cut -d. -f4)" if test $LSV -gt 128; then LSV=128 else LSV=0 fi echo $LSV GW=$BASE.$((LSV+1)) SERVER=$BASE.$((LSV+2)) ip route add $SERVER/32 via 134.255.239.1 ip route del 0.0.0.0/1 table 100 ip route del 128.0.0.0/1 table 100 ip route add 0.0.0.0/1 via $GW table 100 metric 100 ip route add 128.0.0.0/1 via $GW table 100 metric 100 ip rule add dev "$mesh_interface" table vpn prio 32765 echo 1 > /proc/sys/net/ipv4/ip_forward iptables --append FORWARD --in-interface "$mesh_interface" -j ACCEPT #Enable MASQUERADE to function as a NAT router iptables --table nat --append POSTROUTING --out-interface "$vpn_interface" -j MASQUERADE exit 0 Die Datei muss noch ausführbar gemacht werden: chmod a+x /etc/openvpn/update-route Zugriff auf dem Server per ssh aus dem Freifunknetz (über bat0) ist weiterhin möglich. Um den Zugriff zu verhindern bitte "iptables -A INPUT -p tcp -i bat0 --dport 22 -j DROP" einfügen. ====== DNS-Forwading ====== Jedes Gateway muss auch DNS-Anfragen auflösen können. Dazu gehören die im Internet bekannten sowie Freifunk-Internet TLDs (Top Level Domains). Dafür bietet sich dnsmasq an: apt-get install dnsmasq /etc/dnsmasq.conf: listen-address=10.29.132.192 #FF-Interne Adresse des Gateways server=/dn42/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/22.172.in-addr.arpa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/23.172.in-addr.arpa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffhl/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/hack/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffc/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffki/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffhh/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffhb/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/196.10.in-addr.arpa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/c.2.f.0.9.1.1.5.f.2.d.f.ip6.arpa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/ffbi/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/29.10.in-addr.arpa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 server=/0.0.0.1.b.f.f.0.a.7.1.f.e.d.f.ip6.arpa/fdef:17a0:ffb1:0:50e2:8fff:fe0a:c198 **TODO:** Diese Konfiguration leak DNS-request direkt ins Internet anstatt über das VPN!