Raspberrypi.gateway
- Ziel ist es dass sich der Raspberry Pi mit einem WLAN verbindet, dieses ist in meinem Fall ein durch ein Handy aufgespannter HotSpot
- Er ist per LAN an das lokale Netz angebunden, und soll eigentlich eine fest IP-Adresse haben
- Er soll als Gateway dem Netz dienen
Problem 1
- LAN sollte eine statische Adresse erhalten, wenn ich aber in interfaces was formuliere geht wlan0 DHCP nicht mehr
Problem 2
- sind beide interfaces ungenannt wird immer wieder die standard-route des LAN gesetzt
- dann haben wir 2 standard-Route, die vom wlan0 ist aber die einzig richtige
Problem 3
- /etc/dhcp/dhcpcd.conf scheint wirkungslose zu sein
"routes" option beim DHCPD Server verhindern
- Wir betreiben wegen "Problem 1" beide Interfaces im DHCP Modus
- Verwirrung entsteht jedoch dass zusammen mit der IP Adresse für eth0 auch ein Gateway versendet und eigetragen wird
- da kabelgebunden hat es eine niedrigere Metrik und wird dem wlan0-gateway vorgezogen
- dies kann man auf seinem DHCPD Server verhindern, es ist jedoch eine undokumentierte Funktion
option routers false;
# /etc/dhcp/ # ... host pi3x02 { option host-name "pi3x02"; hardware ethernet b8:27:eb:bd:79:cc; fixed-address pi3x02; option routers false; } ... #
- dadurch ist pi3x02 ein normaler DHCP Client, er bekommt jedoch keine Standard-Route, gut in diesem Fall
aktuelles Router-Script
bisher
#!/bin/bash # # erst mal die Tabellen leeren # iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X # # # route del default gw 192.168.115.47 dhcpcd -S ip_adress=192.168.115.47/24 eth0 iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE # # Ausgabe zur Diagnose # iptables -t nat -L -v -n route -vn #
neu
#!/bin/bash # # erst mal die Tabellen leeren # iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X # # System für TCP-Manipulationen öffnen # echo "1" > /proc/sys/net/ipv4/ip_forward # # Fritz!Box zugänglich machen # iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j DNAT --to-destination 192.168.178.1:443 iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.178.1:80 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # # System als Gateway befähigen # iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Fritz!Box
- Ziel ist es, die Fritz!Box, die am eth0 Interface hängt sichtbar zu machen
- Der Raspi ist über WLAN in unser Netz angebunden
echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j DNAT --to-destination 192.168.178.1:443 iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.178.1:80 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- Voraussetzung sind ordentliche Routen, dies wird erreicht dass der DHCPD Server an eth0 keine Standard-Route sendet. Stichwort "options route false"
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default fritz.box 0.0.0.0 UG 202 0 0 eth0 192.168.115.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0 192.168.178.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0