Raspberry Pi als WLAN Accesspoint und VPN Router

In diesem Beitrag wird gezeigt wie man den Raspberry Pi 2 als WLAN Accesspoint und VPN-Router einsetzen kann. Als VPN-Dienst nutze ich HMA.

Als Betriebsystem ist Kali Linux installiert. Eine entsprechende Anleitung findet man hier. Wer die gesamte Kapazität der Speicherkarte nutzen will, findet eine Anleitung hier. Als WLAN-USB-Adapter nutze ich den AWUS036NEH von ALFA. Der Chipsatz wird von Kali Linux automatisch erkannt. Es sind keine zusätzlichen Treiber erforderlich.

Die Konfiguration hinter einem Internet-Router könnte wie folgt aussehen:

vpn

RP1

Die Installation läuft in mehreren Schritten ab:

Wir benötigen für unser Vorhaben einige zusätzlichen Pakete.  Dazu nutzen wir folgende Befehle:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install hostapd udhcpd bind9 openvpn 
									

 

Netzwerkschnittstellen konfigurieren

Die LAN-Schnittstelle wird automatisch als eth0 erkannt. Sie kann eine IP-Adresse vom lokalen Router per DHCP beziehen. Mit diese Konfiguration sind also dafür keine weiteren Einstellungen zu tätigen.

Der WLAN Adapter wird standardmäßig als wlan0 erkannt.  Um eine statische IP-Adresse zu konfigurieren ergänzen wir die folgenden Einstellungen in der Datei /etc/network/interfaces:

auto wlan0
iface wlan0 inet static
address 172.16.1.1
netmask 255.255.255.0

									

 

DHCP einrichten

Um einen DHCP-Server einzurichten, muss die Datei /etc/udhcpd.conf angepasst werden:

start 172.16.1.2
end 172.16.1.254
interface wlan0
remaining yes
opt dns 172.16.1.1
option subnet 255.255.255.0
opt router 172.16.1.1
option lease 864000 # 10 Tage

									

Danach  wird in der Datei  /etc/default/udhcpd folgender Eintrag vorgenommen:

DHCPD_ENABLED=”yes”

 

WLAN-Accesspoint einrichten

Für die Konfiguration wird die Datei  /etc/hostapd/hostapd.conf  genutzt. Hier sind folgende Einstellungen vorzunehmen:

interface=wlan0
ssid=Name_des_Accesspoints
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=DEIN_Passwort
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

									

Sollte der Treiber des WLAN-USB-Adapters nicht automatisch erkannt werden oder ein Treiber zusätzlich notwendig sein, so ist eine weitere Zeile mit den Angaben zum Treiber hinzuzufügen (z .B. driver=nl80211).

Diese Konfiguration machen wir nun bekannt indem folgende Zeile in die Datei /etc/default/hostapd eigefügt wird:

DAEMON_CONF=”/etc/hostapd/hostapd.conf”

Damit die neuen Einstellungen greifen, werden die Dienste neu gestartet. Die beiden letzten Befehle gewährleisten, dass die Dienste auch nach einem Reboot des Raspberry automatisch starten.

sudo service hostapd start
sudo service udhcpd start
sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable

									

DNS einrichten

Auch diese Einstellungen sind schnell vorgenommen. Hierzu sind folgende Eintragungen in der Datei /etc/bind/named.conf.options zu machen. Damit “zapfen” wir die Google-DNS-Server an.

forwarders {
8.8.8.8;
8.8.4.4;
};

									

Auch hier starten wir den Dienst neu und gewährleisten den automatischen Start nach dem Reboot.

sudo service bind9 restart
sudo update-rc.d bind9 enable
									

 

NAT und VPN-Router einrichten

NAT wird mit folgendem Befehl aktiviert:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
									

Um dies auch hier permanent einzurichten empfehle ich der Datei /etc/sysctl.conf folgenden Eintrag zu machen:

net.ipv4.ip_forward=1

Für die Einrichtung des VPN Dienstes muss je nach Provider eine Lösung gefunden werden. HMA hat einen guten Linux-Support. Unter anderem sind fertige Skripte verfügbar, die die Einrichtung auf dem Raspberry sehr einfach machen.  Ich empfehle auf dieser Seite im Abschnitt “How to save username+password” ein Skript herunterzuladen. Es gewährleistet, dass die Nutzerdaten nicht nach jedem Neustart neu eingegeben werden müssen. Mit den folgenden Befehlen wird dieses Skript heruntergeladen und ausführbar gemacht und in der letzen Zeile ausgeführt.

In diesem Beispiel wird TCP als bevorzugtes Protokoll genutzt und ein Server am Standort Frankfurt ausgewählt. Wer lieber UDP nutzen möchte, der kann dies mit mit dem Eintrag -p udp vornehmen. Eine Liste mit den derzeit verfügbaren VPN-Servern und den jeweils unterstützten Protokollen findet man hier.

cd  /home
wget http://hmastuff.com/linux/hma-vpn-mod.sh
chmod +x hma-vpn-mod.sh
./hma-vpn-mod.sh –p tcp Frankfurt

									

Wird die VPN-Verbindung korrekt aufgebaut, so sollte die Netzwerkschnittstelle tun0 verfügbar sein und  über eine IP-Adresse verfügen. Der Befehl ipconfig wird hier alles weitere anzeigen.

In Kali Linux  gibt es ein Paket namens “iptables-persistent” welches das automatische Laden der gespeicherten iptables Rules übernimmt. Dafür müssen die Rules in der Datei /etc/iptables/rules.v4 für IPv4 und in /etc/iptables/rules.v6 für IPv6 gespeichert werden. Dazu führen wir folgende Kommandos aus, um die Regeln das erste mal zu laden

cd /etc
mkdir iptables
iptables -A FORWARD -o tun0 -i wlan0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
									

Mit der Anweisung  sudo apt-get install iptables-persistent wird das Paket installiert. Die Frage ob die derzeitigen Regeln in die Dateien  / etc/iptables/rules.v4 bzw./etc/iptables/rules.v6 gespeichert werden sollen, kann mit “Ja” beantwortet werden.

Nun sollte nach einem Neustart alles automatisch funktionieren. Sollte dies nicht der Fall sein, so kann man mit folgenden Befehlen die Regeln speichern bzw. wiederherstellen.

iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4

Damit der VPN-Service auch nach dem Reboot des Raspberry Pi gestartet wird, legen wir noch eine Datei (z.B start_router.sh) mit folgenden Inhalt an:

#!/bin/sh
# HMA einrichten und starten
cd /home/frank
./hma-vpn-mod.sh -p tcp Frankfurt

Zum Abschluss wird noch eine Zeile in die Datei /etc/rc.local und zwar vor die Anweisung exit 0 eingetragen.  Das sieht dann als Beispiel so aus:

/home/frank/start_router.sh
exit 0

Update 17.01.2016

Wer IPVanish als VPN-Provider nutzt, findet die Konfigurationsdateien hier und eine Anleitung für OpenVPN hier.

3 Gedanken zu “Raspberry Pi als WLAN Accesspoint und VPN Router

  1. Hi,

    erst mal herzlichen Dank für diese schöne und ausführliche Anleitung. Deine Seite ist allgemein schön aufgebaut und alles ist sehr genau beschrieben.

    Eine kleine Sache hätte ich gerne gewusst:
    Ich habe eine FB 7490 und habe mir dort über den myfritz service einen VPN Zugang eingerichtet. Die Anmeldedaten habe ich alle.
    Ich hätte jetzt gerne gewusst, wie ich das ganze in die konfig bekomme. Also ich habe jetzt nicht das Skript von HMA geladen, weil ich ja einen eigenen service dafür habe. Auf dem Handy und Co funktioniert alles soweit. Wäre schön, wenn du mir kurz erklären könntest was ich da genau machen muss.

    • Hallo,

      ich fürchte mit dem VPN-Server Deiner Fritzbox wird es nicht funktionieren. Soweit ich das richtig verstanden habe, verwendet AVM ein eigenes Verfahren um die Zugangsdaten zu verarbeiten und sicher zu speichern. Kann mich aber auch irren. Ich passe…

Schreibe einen Kommentar