Raspberrypi.gateway

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
  • 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