Der Raspberry Pi als VPN-Gateway mit Access Point

Löcher stopfen

Ob das VPN auch wirklich funktioniert, prüfen Sie über http://icanhazip.com: Diese Webseite spuckt als Ausgabe lediglich ihre öffentliche IP aus. Über das Kommando curl -s icanhazip.com funktioniert das auch von der Eingabeaufforderung aus. Ergänzen Sie den Befehl um einen Geo-IP-Lookup, erhalten Sie Ihren aktuellen Standort – zumindest aus der Sicht des Internets. Je nachdem, ob das VPN aktiv ist, meldet der Aufruf geoiplookup nun Deutschland oder die Niederlande als Standort (Listing 10).

Listing 10

 

$ sudo apt install geoip-bin
$ sudo service openvpn stop
$ geoiplookup $(curl -s icanhazip.com)
GeoIP Country Edition: DE, Germany
$ sudo service openvpn start
$ geoiplookup $(curl -s icanhazip.com)
GeoIP Country Edition: NL, Netherlands

Die über Bittorrent ermittelbare IP lässt sich ebenfalls kontrollieren: Dazu übernehmen Sie den von Check My Torrent IP [5] angezeigten Magnetlink in das Webfrontend von Transmission und warten, bis sich die Webseite im Browser aktualisiert. Sie zeigt nach einem kurzen Moment in der Liste unterhalb der Internet-IP Ihres Browsers die VPN-IP des Raspberry Pi an (Abbildung 3). Die Fehlermeldung innerhalb von Transmission selbst dürfen Sie dabei getrost ignorieren. Sie rührt daher, dass bei diesem Test kein "richtiger" Download vonstatten geht.

Abbildung 3: Mit Seiten wie Check My Torrent IP prüfen Sie, ob Dienste wie Bittorrent Ihre Daten über das VPN schicken.

Nun sorgen die Up- und Down-Skripte dafür, dass kritische Dienste wie beispielsweise Transmission nur dann laufen, wenn der OpenVPN-Dienst die zuvor konfigurierte Verbindung aufbauen konnte (Listing 11). Sollte mit dieser jedoch einmal etwas schieflaufen – beispielsweise das Programm abstürzen – dann überträgt der Dienst weiterhin Daten, allerdings direkt über die eigene Leitung. Von daher gilt es, das System so abzusichern, dass es nur Daten über den VPN-Tunnel ins Internet schicken kann.

Listing 11

 

$ sudo service openvpn stop
$ sudo service transmission-daemon status | grep Active
   Active: inactive (dead) since Do 2016-12-01 17:37:50 CET; 7s ago
$ sudo service openvpn start
$ sudo service transmission-daemon status | grep Active
   Active: active (running) since Do 2016-12-01 17:37:22 CET; 21s ago

Dazu haben Sie schon am Anfang die Uncomplicated Firewall installiert. Das von Canonical entwickelte Programm lässt sich sehr einfach einrichten (Listing 12). Im ersten Schritt blockieren Sie sämtlichen Datenverkehr, um dann den VPN-Tunnel tun0 gezielt freizuschalten. Im internen Netz soll das System erreichbar bleiben, daher geben Sie den Adressbereich (hier 192.168.0.0 bis 192.168.255.255) frei. Eventuell gilt es, diese Zeilen an den Adressbereich Ihres Netzwerks anzupassen. Anschließend machen Sie für OpenVPN eine weitere Ausnahme: Der VPN-Client muss sich über Port 1198 (je nach Anbieter auch einen anderen Port) zum Gegenstück im Internet verbinden können.

Listing 12

 

### Erst einmal jeglichen Traffic ablehnen
$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
### Das VPN-Gateway in der Firewall freigeben
$ sudo ufw allow in on tun0
$ sudo ufw allow out on tun0
### Ausnahme für internes Netzwerk (IP-Bereich bitte anpassen)
$ sudo ufw allow in on eth0 from 192.168.0.0/16
$ sudo ufw allow out on eth0 to 192.168.0.0/16
### Ausnahme für OpenVPN an eth0 (Port entsprechend anpassen)
$ sudo ufw allow in on eth0 from any port 1198
$ sudo ufw allow out on eth0 to any port 1198
### Firewall aktivieren
$ sudo ufw enable

Der Schutz durch die Firewall lässt sich leicht testen: In Listing 13 starten Sie OpenVPN und kontrollieren mit einem Geo-IP-Lookup den Status des VPN-Zugangs. Schießen Sie nun den OpenVPN-Dienst ohne Rücksicht ab, fließt kein weiteres Bit mehr ins Internet, selbst ein Ping landet im Nichts. Der Neustart der VPN-Verbindung scheitert nach diesem Angriff an der Firewall – am sichersten ist es, nun das System neu zu starten.

Listing 13

 

$ sudo service openvpn start
$ geoiplookup $(curl -s icanhazip.com)
GeoIP Country Edition: NL, Netherlands
$ sudo pkill -9 -f openvpn
Getötet
$ ping -c 1 raspberrypi.org
ping: unknown host raspberrypi.org

RasPi als VPN-Access-Point

Über Ethernet an das lokale Netzwerk angeschlossen, bleibt das WLAN-Modul des Raspberry Pi 3 ungenutzt. Von daher muss die VPN-Verbindung nicht dem RasPi exklusiv vorbehalten bleiben: Richtet man auf dem Raspbian-System einen Access Point ein, lässt sich über ihn ein Laptop oder ein Smartphone via VPN mit dem Internet verbinden. Allerdings tauschen besonders mobile Geräte mit Android oder iOS konzeptbedingt permanent mit Google und Apple Daten aus und verraten damit die Identität des Nutzers, was den Sinn eines VPNs hintertreibt.

Für den Access Point müssen Sie weitere Pakete installieren: Das WLAN selbst spannt Hostapd auf, der einfache DNS- und DHCP-Server Dnsmasq weist den Rechnern darin eine IP-Adresse zu. Zudem müssen Sie dafür sorgen, dass Raspbian dem WLAN-Gerät wlan0 nicht automatisch eine IP-Adresse zuweist. Mit der Zeile denyinterfaces wlan0 in der Konfigurationsdatei /etc/dhcpcd.conf verhindern Sie das (Listing 14). Anschließend ersetzen Sie in der /etc/network/interfaces die Konfiguration der WLAN-Schnittstelle durch den Inhalt von Listing 15 und laden dann sämtliche betroffenen Dienste und Geräte neu (Listing 16).

Listing 14

 

$ sudo apt-get install dnsmasq hostapd resolvconf
$ echo denyinterfaces wlan0 | sudo tee -a /etc/dhcpcd.conf

Listing 15

 

# allow-hotplug wlan0
# iface wlan0 inet manual
#     wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan0
iface wlan0 inet static
    address 172.24.1.1
    netmask 255.255.255.0
    network 172.24.1.0
    broadcast 172.24.1.255
#   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Listing 16

 

$ sudo systemctl daemon-reload
$ sudo service dhcpcd restart
$ sudo ifdown wlan0; sudo ifup wlan0

Den Hostapd-Dienst richten Sie über die zu erstellende Datei /etc/hostapd/hostapd.conf ein. Listing 17 enthält alle nötigen Einstellungen für einen Raspberry Pi 3 mit seinem integrierten WLAN-Modul. In den Zeilen 15 und 16 sollten Sie für die SSID und das Passwort des WLANs eigene Werte setzen. Damit Hostapd diese Konfiguration auch nutzt, müssen Sie in /etc/default/hostapd noch den Pfad zur Datei eintragen (Listing 18).

Listing 17

 

interface=wlan0
driver=nl80211
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
# Bitte Netzwerk-Name und Passwort ändern
ssid=VPN-Gateway
wpa_passphrase=raspberry

Listing 18

 

[...]
#DAEMON_CONF=""
DAEMON_CONF="/etc/hostapd/hostapd.conf"
[...]

Nun fehlt noch die Konfiguration des DHCP-Servers. Sie erfolgt über die bereits bei der Installation des Diensts auf die Festplatte geschriebene Datei /etc/dnsmasq.conf. Die in der Vorlage enthaltene Beispielkonfiguration löschen Sie komplett und ersetzen sie durch die Vorgaben aus Listing 19.

Listing 19

 

interface=wlan0
listen-address=172.24.1.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=172.24.1.50,172.24.1.150,12h

Weiter müssen Sie dem System erlauben, Datenpakete weiterzuleiten. Das erledigen Sie über den Eintrag net.ipv4.ip_forward=1 in der Datei /etc/sysctl.conf. Sie müssen ihn lediglich einkommentieren; Listing 20 übernimmt das für Sie, zugleich aktiviert es die neue Konfiguration ohne einen Neustart.

Listing 20

 

$ sudo sed -i 's/#net.ipv4.ip_forward/net.ipv4.ip_forward/g' /etc/sysctl.conf
$ sudo sysctl -p /etc/sysctl.conf

Zum Abschluss passen Sie noch die Firewall an. Sie blockiert bis auf ein paar Ausnahmen jeglichen Datenverkehr abseits des VPN-Tunnels. Zudem fehlen noch die entsprechenden Regeln, um die über die WLAN-Schnittstelle empfangenen Datenpakete zum VPN weiterzuleiten – im Jargon spricht man hier von Masquerading.

Die Masquerading-Regeln müssen Sie in Raspbian noch per Iptables erstellen, da Ufw diese Funktion erst ab Version 0.35 beherrscht. Fügen Sie daher die Zeilen aus Listing 21 in die Datei /etc/rc.local vor dem abschließenden exit 0 ein. Danach rufen Sie das Skript einmal von Hand auf, schalten die Geräte-ID wlan0 des WLAN-Moduls in der Firewall frei und starten die zwei beteiligten Dienste neu (Listing 22).

Listing 21

 

# Masquerading-Regeln setzen
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

Listing 22

 

$ sudo /etc/rc.local
$ sudo ufw allow in on wlan0
$ sudo ufw allow out on wlan0
$ sudo service hostapd restart
$ sudo service dnsmasq restart

Danach finden Sie das vom Raspberry Pi aufgespannte WLAN in den Netzwerkeinstellungen eines Laptops oder Smartphones wieder. Nach der Eingabe der Zugangsdaten und dem Verbindungsaufbau bestätigt dann ein Aufruf von http://icanhazip.com – oder mit etwas mehr Komfort https://whatismyip.com – im Browser des mobilen Geräts den Erfolg der Aktion (Abbildung 4).

Abbildung 4: Als VPN-Gateway tunnelt der Raspberry Pi sämtliche Anfragen durch mobile Geräte durch das VPN.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • PiVPN installiert OpenVPN auf dem Raspberry Pi

    Ein Virtual Private Network schützt Ihre Daten vor neugierigen Blocken Dritter. PiVPN übernimmt dabei das Einrichten und Managen von OpenVPN.

  • Raspberry autark betreiben

    Häufig verrichtet ein RasPi seinen Dienst ohne die Notwendigkeit von Monitor oder Tastatur – unabdingbar bleibt hingegen der Kontakt ins Netzwerk. Dafür gibt es verschiedene Alternativen.

  • Anonymes File-Sharing mit der PirateBox

    Piraten verstecken ihren Schatz an möglichst geheimen Orten. Die PirateBox für digitale Schätze dagegen möchte gefunden werden und versucht erst gar nicht herauszufinden, wer in die Schatzkiste greift.

  • Der Raspberry Pi 3 Model B im Detail

    Viele Raspberry-Fans wünschten sich für die nächste Generation des Mini-Computers USB 3.0, SATA-Schnittstelle und Gigabit-Ethernet. Dies alles bietet der Raspberry Pi 3 nicht, dafür aber WLAN, Bluetooth und eine schnelle 64-Bit-CPU.

  • Der Raspberry Pi als 3G-Hotspot

    WLAN gibt es vielerorts und oft auch kostenlos – Internet über das UMTS-Netz erscheint unnötig. Doch in der Realität trüben oft schlechter Empfang und insbesondere mangelnde Verschlüsselung das Vergnügen. Ein Raspberry Pi mit UMTS-Stick als eigener Hotspot macht Sie unabhängig von öffentlichen WLANs.

Aktuelle Ausgabe

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.