Access Point, Hot-Spot bzw. W-Lan Router mit dem Raspberry Pi [DIY]

Raspberry Pi + Zubehör für Access Point

Bei den benötigten Komponenten verweise ich direkt per Links auf die einzelnen Artikel. Beachtet bitte auch das die günstigen Komponenten aus China ca. 30-45 Tage lieferzeit haben. Die unten aufgeführten Komponenten sind zu 100% kompatibel, solltet ihr andere Produkte bevorzugen, so achtet bitte darauf, dass diese kompatibel zum Pi sind. Besonders beim W-Lan Dongle gibt es durch unterschiedeliche Chips Kompatibilitätsprobleme. Bei der Stromversorgung empfiehlt es sich in Deutschland CE zertifizierte Produkte zu kaufen, da diese doch durchgehend am Strom hängen!

Inhalt

Benötigte Komponenten

  • Raspberry Pi Model B 29,00 € Getgoods (nach 5€ Newslettergutschein)
  • Stromversorgung, hier ein 2000mA 4 USB Hub ca. 10€ bei Amazon mit Prime (auch ohne Prime Versand günstiger zu haben)
  • W-Lan Dongle 6,99 € bei Amazon
  • Netzwerkkabel (sollte jeder zu hause haben)
  • SD Speicherkarte 11€ 16GB Class 10 Amazon
  • SD Kartenlesegerät
  • Maus & Tastatur

Optional

  • Case für den Raspberry Pi 3,40 € aus China
  • HDMI zu VGA Konverter kompatibel zum PI 15,85 € bei Amazon gibt es auch in der Bucht aus China für weniger, aber hier funktionieren auch nicht alle und es muss ein Koverter sein!
  • Micro USB Kabel ca. 1€ aus China oder etwas mehr von Amazon oder so (hängt davon ab, was ihr alles an eurem Pi betreiben wollt.)

Pi aktualisieren und überprüfen, ob Dongle installiert ist und erkannt wird

Ein Update unserer installierten Software wäre von Vorteil, somit sollten wir die folgenden Befehle ausführen lassen.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove

Dies kann je nach aktuellem Softwarestand und Internetverbindung einige Minuten in Anspruch nehmen. Mit dem Befehl

lsusb

könnt ihr überprüfen, ob euer Wifi Dongle richtig installiert ist und erkannt wird. LSUSB In meinem Fall befindet sich der Dongle hinter Device 004. ------------------------------------------------- Ist dein Stick nicht aufgeführt? Dann hier weitermachen ansonsten diesen Part überspringen! Achtung: Nur für Ralink Chip. Für andere Chips dementsprechend andere Firmware raussuchen! Für den Treiber des Sticks braucht ihr ein passendes "non-free" Firmware Repositority. Dazu öffnen wir die "source.list" im Nano Editor

sudo nano /etc/apt/sources.list

und tragen

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi

nach, speichern mit "Strg + O" und installieren die Firmware mit folgendem Befehl.

sudo apt-get install firmware-ralink

Nach erfolgreicher Installation nochmals mittels lsusb testen. -------------------------------------------------

Installieren und einrichten von DHCP und HostAPD

Beginnen wir nun mit der Installation der benötigten Software (hostapd isc-dhcp-server iw). Dazu geben wir in der Shell folgenden Befehl ein

sudo apt-get install hostapd isc-dhcp-server iw

Ob euer Dongle für den AP Betrieb ausgelegt ist, könnt ihr mittels

iw list | grep AP$

herausfinden. AP Check Nachdem dies erledigt ist, müssen wir ein Config File für HostAPD und den DHCP-Server erstellen.

HostAPD

Zunächst erstellen wir die Config für den HostAPD mit folgendem Befehl

sudo nano /etc/hostapd/hostapd.conf

und fügen

interface=wlan0
driver=nl80211
ssid=RaspberryPi
channel=3
wmm_enabled=1
wpa=1
wpa_passphrase=1234567890
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0

ein, wobei 1234567890 dein gewüschtes Passwort ist. SSID (hier: RaspberryPi) ist der Name des Netzwerks. Solltest du nicht den Dongle mit Ralink Chip besitzen, solltest du überprüfen ob nl80211 mit deinem Stick kompatibel ist. HostAPD Config

DHCP-Server

Widmen wir uns nun der Config für den DHCP-Server und legen mit

sudo nano /etc/dhcp/dhcpd.conf

eine neue Config an und fügen dort

authoritative;
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.25 192.168.1.50;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 192.168.1.1;
interface wlan0;
}

DHCP Server Conf ein. Subnet, Range und Option Routers solltet ihr auf eure Gegebenheiten anpassen. Mein Haupt Router rennt auf 192.168.2.1 somit habe ich für den Pi das Subnet 192.168.1.0 gewählt. Die Range legt die für den den DHCP Server verwendbaren IP Adressen fest. In meinem Fall ist die erste IP die vergeben wird die 25 und die letzte die 50. Option Routers ist die IP unter der der Pi läuft. Nun noch kleine Änderungen am ISC-DHCP-Server vornehmen.

sudo nano /etc/default/isc-dhcp-server
INTERFACES=""

zu

INTERFACES="wlan0"

ändern und speichern. ISC-DHCP-Server

Autostart HostAPD

Da unser DHCP und HostAPD eingerichtet sind, müssen wir noch den HostAPD beim Bootvorgang automatisiert starten lassen. Dazu öffnen wir

sudo nano /etc/default/hostapd

und entfernen die Raute vor

DAEMON_CONF="/etc/hostapd/hostapd.conf"

HostAPD autostart

Network Interface Konfiguration

Damit der DHCP Server für den richtigen Adapter die IP Vergabe übernimmt, müssen wir noch unser Netzwerk Interface für das Wifi anpassen.

sudo nano /etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

Network Interfaces Nun können wir unseren Pi mittels

sudo reboot

neustarten lassen und unser AP mit DHCP sollte funktionieren (bisher ohne Internet, da wir erst noch die IP Adressen auf den Kabelanschluss weiterleiten müssen).

Internetverbindung an W-Lan Nutzer weiterreichen

Nachdem unser PI wieder gestartet ist, ermöglichen wir den Nutzern unseres Hot Spots noch den Internetzugang. Dies erledigen wir mit

echo 1 > sudo /proc/sys/net/ipv4/ip_forward
sudo nano /etc/sysctl.conf

und entfernen die Raute vor.

net.ipv4.ip_forward=1

IP Forwarding sysctl conf NAT erlauben

Nun müssen wir noch mittels iptables NAT erlauben.

sudo su
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Da diese nur temporär sind müssen wir diese nach jedem Bootvorgang erneut erlauben. Da wir dies aber automatisiert haben wollen, speichern wir die Regeln ab

iptables-save > /etc/iptrules

und lassen diese beim Bootvorgang mitladen. Dazu erstellen wir folgendes Shell Script

nano /etc/network/if-pre-up.d/iptables

und kopieren

#!/bin/sh
iptables-restore < /etc/iptrules
exit 0

hinein. Damit unser Script auch beim Booten ausgeführt werden kann, müssen wir es noch ausführbar machen und die erforderlichen Rechte vergeben.

chmod +x /etc/network/if-pre-up.d/iptables
chown root:root /etc/network/if-pre-up.d/iptables 
chmod 755 /etc/network/if-pre-up.d/iptables

Nach einem Neustart eures Pi solltet ihr einen vollfunktionsfähigen Access Point besitzen und das eigentliche Tutorial endet hier. Die nächsten Schritte beschreiben noch, wie man einen VPN (PPTP) Client installiert und den Pi mit einem externen VPN Server verbinden lässt und somit alle Verbindungen durch den VPN schickt.

VPN Verbindung zu externen VPN Server und weiterreichen an die W-Lan Nutzer

Zunächst installieren wir die benötigte Software.

sudo apt-get install pptp-linux pptpd ppp curl

Die Einstellungen lassen wir durch ein Shell Script erledigen (Habe das Script von hier kopiert und angepasst)

sudo nano /home/pi/pptpvpn
#!/bin/bash
function routeadd {
   H=`ps aux | grep 'pppd pty' | grep -v grep | awk '{print $14}'`
   DG=`route -n | grep UG | awk '{print $2}'`
   DEV=`route -n | grep UG | awk '{print $8}'`
   route add -host $H gw $DG dev $DEV
   route del default $DEV
   route add default dev ppp0
}
function makepptp {
   echo pty \"pptp HIER_EURE_VPN_URL_ODER_IP_EINTRAGEN --nolaunchpppd\" >> /etc/ppp/peers/pptpvpn;
   echo remotename PPTP >> /etc/ppp/peers/pptpvpn;
   echo require-mppe-128 >> /etc/ppp/peers/pptpvpn;
   echo file /etc/ppp/options.pptp >> /etc/ppp/peers/pptpvpn;
   echo ipparam pptpvpn >> /etc/ppp/peers/pptpvpn;
pppd call pptpvpn &
}
if [ -a /etc/ppp/chap-secrets ];
                then
                rm /etc/ppp/chap-secrets
        echo $1 PPTP $2 '*' >> /etc/ppp/chap-secrets;
else
        echo $1 PPTP $2 '*' >> /etc/ppp/chap-secrets;
fi

if [ -e /etc/ppp/peers/pptpvpn ];
        then
        rm /etc/ppp/peers/pptpvpn;
        echo name $1 >> /etc/ppp/peers/pptpvpn;
        makepptp;
        sleep 8;
        routeadd;
else
        echo name $1 >> /etc/ppp/peers/pptpvpn;
        makepptp;
        sleep 8;
        routeadd;
fi

Bei dem Script noch HIER_EURE_VPN_URL_ODER_IP_EINTRAGEN durch die IP oder URL eures VPN Providers ersetzen.

sudo nano /etc/init.d/vypr

Vypr, da ich wegen meines VPN bei VyprVPN bin. Namen könnt ihr natürlich frei wählen, müsst ihr nur auch im Script und den Befehlen anpassen!

### BEGIN INIT INFO
# Provides: VPN Connection
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Connect VPN at boot
# Description: Connect VPN at boot.
### END INIT INFO

#! /bin/sh
# /etc/init.d/vypr

USER=root
HOME=/root

export USER HOME

case "$1" in
 start)
   echo "Connecting VPN"
   sudo /home/pi/pptpvpn BENUTZERNAME PASSWORT
   ;;

 stop)
   echo "Disconnecting VPN"
   sudo killall pppd
   ;;

 *)
   echo "Usage: /etc/init.d/vypr {start|stop}"
   exit 1
   ;;
esac

exit 0

BENUTZERNAME PASSWORT durch eure Daten ersetzen und das Script mit

sudo chmod +x /etc/init.d/vypr
sudo chown root:root /etc/init.d/vypr 
sudo chmod 755 /etc/init.d/vypr
sudo update-rc.d vypr defaults

ausfürbar machen und beim Bootvorgang mitladen lassen, so dass die VPN Verbindung direkt beim Start des Systems aufgebaut wird. Zum Test des Verbindungsaufbaus dann

sudo /etc/init.d/vypr start

eingeben und mit

curl ipecho.net/plain; echo

überprüfen, ob ihr die IP des VPNs nutzt. Damit unsere W-Lan Nutzer die VPN Verbindung zur Verfügung gestellt bekommen, müssen wir eine weitere NAT Regel anlegen.

sudo su
iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
iptables-save > /etc/iptrules

Jetzt sollte automatisch der gesamte Traffic von den Nutzern eures Hot Spots durch den VPN geschickt werden. To Do: Was jetzt noch fehlt wäre ein IP Binding, so dass der gesamte Traffic nur über den VPN geht und bei Disconnect des VPNs der gesamte Traffic geblockt wird, damit dieser nicht über die eigentliche IP geschickt wird. Des Weiteren noch ein automatischer reconnect, falls die VPN Verbindung mal getrennt wird.


Kommentare

War genau das was ich gesucht hatte! Besten Dank!

Neuen Kommentar schreiben

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
By submitting this form, you accept the Mollom privacy policy.