Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 
Die Raspberry Pi läuft mit Raspian, einem Debian für die ARM Architektur. Sie besitzt einen Ethernetadapter und üblicherweise wird zusätzlich ein USB WLAN Adapter eingebaut um kabellos mit der Pi kommunizieren zu können. Was liegt da näher als auch die Pi als Kabel zu WLAN Router einzusetzen. Der folgende Beitrag erkärt wie man einen WLAN Router unter Debian bzw der Raspberry Pi mit Raspbian erstellen und dann von an die PI angeschlossene kabelgebundenen Geräten über WLAN auf ein anderes Netz zugreifen kann. Da keine Brücke benutzt wird, sind die angeschlosssenen Geräte nicht am Heimrouter direkt angemeldet und sichtbar. Wer einen WLAN Access Point erstellen will kann hier nachlesen wie man das macht.

 
Hinweis: Die folgende Anleitung funktioniert mit Wheezy. Mit Jessie und Stretch funktioniert sie nicht mehr. Die Anleitung dazu findet sich an dieser Stelle.
 

Wheezy

 

Bevor der Kabel zu WLAN Router aufgebaut werden kann muss die WLAN Verbindung konfiguriert sein und funktionieren. Danach muss, um eine WLAN Router aufbauen zu können, das folgende zusätzliche Paket installiert werden:

 
sudo apt-get install dnsmasq
 
Danach noch den autostart von dnsmasq ausschalten mit
 
sudo update-rc.d dnsmasq disable
sudo service dnsmasq stop
 

Dann ist die Datei /etc/network/interfaces anzupassen. Dabei sind vier Dinge in den Konfigs den lokalen Gegebenheiten anzupassen:

1) Das WLAN Netz hat in der folgenden Konfig das Gateway 192.168.0.1 im Netz 192.168.0.0/24

2) Die Raspberry hat die IP Adresse 192.168.0.10

3) In der folgenden Konfig hat das Kabelnetz 192.168.3.0/24 mit der Netzwerkmaske 255.255.255.0.

4) Die IP Adressen die im Kabelnetz sind 192.168.3.10 bis 192.168.3.20, d.h es können sich nur 11 Clients über diese Verbindung anmelden.

5) Falls kein dhcp benutzt werden kann muss eine statische IP Adresse sowie die Netzwerkmaske und das Gateway manuell definiert werden. Dann darf die gewählte IP nicht zwischen 192.168.3.10 und 192.168.0.20 liegen, da sonst an ein anderes per dhcp angeschlossenes Gerät dieselbe IP Addresse vom dhcp vergeben bekommen kann. Ausserdem muss die Netzwerkmaske 255.255.255.0 sein und das Standardgateway muss die IP der Pi 192.168.3.1 sein.

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.3.1
netmask 255.255.255.0
gateway 192.168.0.1

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

post-up /sbin/iptables -A FORWARD -o wlan0 -i eth0 -s 192.168.3.0/24 -m conntrack --ctstate NEW -j ACCEPT
post-up /sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
post-up /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

post-up /usr/sbin/dnsmasq -i eth0 -I wlan0 -F 192.168.3.10,192.168.3.20,infinite 

Wenn man das am Etherneteingang angeschlossene Geraet öfter wechseln möchte deaktiviert ifplugd das WLAN interface. Deshalb muss der deinstalliert werden mit

apt-get remove ifplugd

Damit die per Kabel im 192.168.3.0/255.255.255.0 Netz angeschlossen Clients in Internet kommen muss noch folgendes machen.

1) Eine statische Route in den Nerkwerkeinstellungen des Heimrouters definieren sofern das unterstützt wird. Bei Fritzboxen ist das unterstützt. Dann definiert man, dass das Subnetz 192.168.3.0/255.255.255.0 zu erreichen ist über die Raspberry. Dazu muss man entweder in der Fritzbox definieren, dass die Raspi immer dieselbe IP erhalten soll und diese in der statischen Route definieren oder aber eine statische IP für die Raspberry in der /etc/network/interfaces vergeben und kein dhcp zu benutzen.

2) Auf jedem Rechner im lokalen Netz, der auf das Kabelnetz zugreifen will, eine statische Route zur Raspberry definieren (Annahme: Raspberry IP Adresse ist 192.168.0.10) für das Subnet 192.168.3.0/255.255.255.0

post-up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.0.10
post-down route del -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.0.10

und in beiden Fällen noch folgende Zeile am Ende in die /etc/network/interfaces aufnehmen:

 post-up /sbin/sysctl -w net.ipv4.ip_forward=1
 

Jessie und Stretch

 

Bevor der Kabel zu WLAN Router aufgebaut werden kann muss die WLAN Verbindung konfiguriert sein und funktionieren. Üblicherweise tut man das durch Einträge in der Datei /etc/wpa_supplicant/wpa_supplicant.conf. Anschliessend ist folgender Text am Ende von /boot/cmdline.txt anzufügen wobei er durch ein Leerzeichen von dem vorhergehenden Text getrennt werden muss. Dadurch bekommt die Netzwerkkarte den leichter zu merkenden Namen eth0.

net.ifnames=0

Bei den folgenden Konfigurationen sind vier Dinge den lokalen Gegebenheiten anzupassen:

1) Das WLAN Netz hat in der folgenden Konfig das Gateway 192.168.0.1 im Netz 192.168.0.0/24

2) Die Raspberry hat die IP Adresse 192.168.0.10

3) In der folgenden Konfig hat das Kabelnetz 192.168.3.0/24 mit der Netzwerkmaske 255.255.255.0.

4) Die IP Adressen die im Kabelnetz sind 192.168.3.10 bis 192.168.3.20, d.h es können sich nur 11 Clients über diese Verbindung anmelden.

Zuerst muss  der dnsmasq Service installiert werden.

sudo apt-get dnsmasq

Um den Kabelanschluss zu konfigurieren müssen nun folgende Zeilen am Ende der Datei /etc/dhcpcd.conf angefügt werden:

interface eth0 
static ip_address=192.168.3.1/24

und der dhcpcd Service wird mit

sudo service dhcpcd restart

neu gestartet.

Nun ist ein dns Server für das Kabelnetzwerk zu definieren. Die alte Datei /etc/dnsmasq.conf sollte man sichern und dann die neuen Datei /etc/dnsmasq.conf mit folgendem Inhalt erstellen:

interface=eth0
no-dhcp-interface=wlan0
dhcp-range=192.168.3.10,192.168.3.20,24h
dhcp-option=option:dns-server,192.168.0.1

und der dnsmasq Service wird mit

sudo service dnsmasq restart

neu gestartet.

 

Möchte man mal kurz testen ob ein ans Kabel angeschlossener Client eine IP Adresse erhält und die DNS Requests verfolgen muss man den laufenden dnsmasq Service stoppen, manuell starten und anschliessend wieder als Service starten:

sudo service dnsmasq stop
sudo dnsmasq -dd -C /etc/dnsmasq.conf
sudo service dnsmasq star

In der Datei /etc/sysctl.conf muss man folgende Zeile aktivieren damit die Raspberry als Router fungiert indem man das # Zeichen am Anfang der Zeile entfernt bzw die Zeile ohne # einfügt.

#net.ipv4.ip_forward=1

 

Nun sind noch Netzwerkregeln für das Routing zu definieren. Folgende Befehle sind dazu auszuführen:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Diese Regeln müssen abgespeichert werden damit sie jedesmal beim Neustart wieder aktiviert werden können. Dazu dient folgender Befehl:

iptables-save > /etc/network/iptables

 Ausserdem muss folgende Datei /etc/network/if-pre-up.d/iptables mit folgendem Inhalt erstellt werden damit die Regeln bei jedem Neustart geladen werden:

#!/bin/sh
/sbin/iptables-restore < /etc/network/iptables

sowie

sudo chmod +x /etc/network/if-pre-up.d/iptables

 

Zuletzt muss noch das neue Subnetz im lokalen Netz allgemein bekannt gemacht werden.

1) Damit die per Kabel angeschlossenen Clients die im 192.168.3.0/255.255.255.0 Netz angeschlossen sind ins Internet über den lokalen Router kommen muss noch folgendes definiert werden:

Es muss eine statische Route in den Nerkwerkeinstellungen des Heimrouters definiert werden sofern das unterstützt wird. Bei Fritzboxen und den meisten anderen Routern ist das unterstützt. Dann definiert man, dass das Subnetz 192.168.3.0/255.255.255.0 zu erreichen ist über die Raspberry. Dazu muss man entweder in der Fritzbox definieren, dass die Raspi immer dieselbe IP erhalten soll (192.168.0.10) und diese in der statischen Route definieren oder aber eine statische IP für die Raspberry in der /etc/network/interfaces für das wlan Interface vergeben und dhcp dafür in der /etc/dhcpcd.conf deaktivieren. Wie eine statische Route bei einer Fritzbox 7390 zu definieren ist ist hier beschrieben. Wie man in der Fritzbox definiert, dass ein Client immer dieselbe IP erhält ist hier beschrieben.

2) Auf jedem Rechner im lokalen Netz, der auf das Kabelnetz zugreifen will, eine statische Route zur Raspberry definieren (Annahme: Raspberry IP Adresse ist 192.168.0.10) für das Subnet 192.168.3.0/255.255.255.0

 

Nach dem Reboot des Systems können nun an die Raspberry per Netzwerkkabel angeschlossene Geräte über das WLAN ins lokale Netz gelangen sowie auch ins Internet über den lokalen Internetrouter.

Wenn man das am Etherneteingang angeschlossene Geraet öfter wechseln möchte deaktiviert ifplugd das WLAN interface. Deshalb muss der deinstalliert werden mit

apt-get remove ifplugd

 

References

Raspbmc als WLAN/Lan Bridge

Raspberry Pi – Wifi repeater im Eigenbau

WLAN-Repeater mit Linux selber bauen

Elektronik Kompendium: DNSMASQ als DHCP-Server einrichten