Donnerstag, 17. November 2016

Raspberry Pi als einfacher Router

Man kann den Raspberry mittels USB Adapter mit zusätzlichem Netzwerk Interfaces ausrüsten Wlan oder auch Ethernet. Der Raspberry Pi 3 hat schon eine Wlan Schnittstelle an Board.
Folgende USB Adapter habe ich im Einsatz, die werden auf Anhieb ab debian wheezy erkannt und lassen sich problemlos betreiben.
- i-tec USB 2.0 Advance 10/100 Fast Ethernet LAN Network Adapter USB 2.0
- TP-Link TL-WN725N WLAN Nano USB-Adapter (150 Mbit/s, Soft AP)

Vorbereitung 

Seit debian jessie hat die Konfiguration der Netzwerkschnittstellen etwas geändert. Einfach etwas in der /etc/network/interfaces eintragen ist nicht mehr. Über diese Seite habe ich die entscheidenden Hinweise gefunden. Der Dienst DHCP Client Deamon übernimmt die Konfiguration der Schnittstellen, eine Ethernet Schnittstelle die nicht über einen DHCP Server konfiguriert wird, bekommt von ihm eine Adresse aus dem Pool 169.254.0.0 zugewiesen.
Eine statische Konfiguration erfordert nicht mehr die Veränderung der Datei /etc/network/interfaces, diese bleibt unbedingt Original! Stattdessen wird die Konfiguration in der Datei /etc/dhcpcd.conf durchgeführt. Dabei sind die Einträge ähnlich der alten Methode.
sudo nano /etc/dhcpcd.conf
Minimal wird dort die IP Adresse für das Interface eingetragen:
interface eth1
static ip_address=192.168.1.1/24
Ein ifdown eth1 && ifup eth1 sollte die Änderung im laufenden Betrieb ausführen.

Router einrichten

DHCP

Der Router wird mit einem Interface an den vorhandenen Netzwerk/Internetanschluss angeschlossen und erhält von dort per DHCP seine Konfiguration.
Das zweite Interface  soll selbst mit einem DHCP Server versorgt werden.
Ziel ist es den Router einfach in ein bestehendes Netzwerk einfügen zu können.

In Frage kommt sicher isc-dhcp-server aber der dnsmasq schein noch etwas besser für diese Aufgabe zu sein. Die Anregung stammt von hier.
sudo apt-get update && sudo apt-get install dnsmasq
In der Datei /etc/dnsmasq.conf enthält die gesamte Doku und am Ende werden die Parameter eingetragen:
interface=eth1
no-dhcp-interface=eth0
dhcp-range=interface:eth1,192.168.1.100,192.168.1.200,12h
Manchmal startete der Deinst dsnmasq mit Fehlern, da muss ich noch etwas tun. Verzögern?

Portweiterleitung und NAT

Zwei Einstellungen führen dazu, das sich unser Router auch wie erwartet verhält und sämtlichen Traffic aus dem Netzwerk eth1 zum Netzwerk eth0 "routet".

Mit diesem Befehl wird IP-Forwarding sofort aktiviert
sudo sysctl -w net.ipv4.ip_forward=1
Um das IP-Forwarding dauerhaft zu aktivieren muss die Datei /etc/sysctl.conf editiert werden.
sudo nano /etc/sysctl.conf
Entweder suchen wir nach der Stelle und entfernen das #
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
Oder wir  fügen am Ende einfach die Zeile hinzu
net.ipv4.ip_forward=1
Man kann auch die Datei editieren und mit sudo sysctl -p die Änderung sofort wirksam werden lassen.

Jetzt können wir zwar in das andere Netzwerksegment pingen, aber der Internetrouter wird keinerlei Anfragen aus dem eth1 wirklich beantworten. Damit dies ohne Neukonfiguration im bestehenden Netzwerk funktioniert brauchen wir NAT:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Allerdings müssen diese Einstellungen noch gespeichert werden, sonst sind sie beim nächsten Neustart weg.

Speichern in eine Datei iptables-save > /etc/iptables_01.save
Um diese beim Start zu aktivieren:
nano /etc/network/interfaces
Unterhalb von iface lo inet loopback einfügen
pre-up iptables-restore < /etc/iptables_01.save

Keine Kommentare:

Kommentar veröffentlichen