Benutzer-Werkzeuge


    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/main.php on line 62
  • Admin

  • Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 50

    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 77
  • Registrieren

Webseiten-Werkzeuge


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 Mullvad und 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!