Ich versuche, meinen Raspberry Pi so zu konfigurieren, dass ich auf Geräte zugreifen kann, die entweder über eth0 oder wlan1 verbunden sind.
Die gewünschte Funktion ist diese:
- Der Benutzer stellt über WLAN1 eine Verbindung zum RPi-AP her und erhält eine IP (192.168.4.x).
- Separates Gerät, das über eth0 eine Verbindung zu RPi herstellt und eine IP erhält (192.168.5.x)
- Der Benutzer kann über die lokale IP-Adresse auf die Konfigurationsoberfläche des mit eth0 verbundenen Geräts zugreifen.
Ich habe dnsmasq verwendet, um die DHCP-Server auf jeder Schnittstelle einzurichten, und sie stellen ganz problemlos IPs bereit.
# dnsmasq.conf
interface=wlan1
dhcp-range=wlan1,192.168.4.2,192.168.4.99,24h
interface=eth0
dhcp-range=eth0,192.168.5.1,192.168.5.99,24h
listen-address=::1,127.0.0.1,192.168.5.1,192.168.4.1
Ich habe auch meine iptables aktualisiert, um den Datenverkehr zwischen den Schnittstellen weiterzuleiten.
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan1 -j ACCEPT
Ich bin jedoch immer noch etwas ratlos, wenn es darum geht, tatsächlich auf die verschiedenen IPs zuzugreifen. Ich glaube, ich muss einige Routen einrichten, aber ich habe Schwierigkeiten herauszufinden, wie ich das genau implementieren soll.
Pingen einer 192.168.4.x- und 192.168.5.x-IP über eine WLAN0-Verbindung:
Und von einer ...4.x und ...5.x von eth0-Verbindung:
iptables- und netstat-Ausgaben:
pi@rak-gateway:~ $ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
pi@rak-gateway:~ $ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Antwort1
Ich bin jedoch immer noch etwas ratlos, wenn es darum geht, tatsächlich auf die verschiedenen IPs zuzugreifen. Ich glaube, ich muss einige Routen einrichten, aber ich habe Schwierigkeiten herauszufinden, wie ich das genau implementieren soll.
Was Sie beim Routing beachten sollten, ist, dassjeder Computer auf der Routemuss wissen, wohin ein bestimmtes Paket gesendet werden soll.
Wenn sich also A als 192.168.4.x mit dem RaspPi verbindet und B als 192.168.5.y, dann
- Ein Muss ist, dass Pakete an 192.168.5.*/24 an die Adresse 192.168.4.? des RaspPi gehen.
- B muss, wenn er antwortet, wissen, dass Pakete an 192.168.4.*/24 an die Adresse 192.168.5.? des RaspPi gehen.
Sie erhalten dies kostenlos, wenn A und B nur mit dem RaspPi verbunden sind und die RasPi-IP-Adresse als Standard-Gateway festgelegt haben. Wenn dies nicht der Fall ist, beispielsweise weil A und B auch mit etwas anderem verbunden sind oder weil Sie nicht konfiguriert haben, dnsmasq
das Standard-Gateway bekannt zu geben, müssen Sie Routen festlegenauf A bzw. B.
Sie können dies entweder statisch direkt auf A oder B tun oder DHCP verwenden, um die Routen zu verteilen (erster Google-Link für eine AnleitungHier, googeln Sie für mehr).
In jedem Fall sollte das Debuggen Folgendes umfassen:Routen ansehensowohl auf A als auch auf B (unter Linux können Sie verwenden ip route get 1.2.3.4
, wobei 1.2.3.4 die Zieladresse ist).
Antwort2
Danke für dein Update.
Als Erstes würde ich vorschlagen, dass Sie Ihren eth0
DHCP-Bereich so festlegen, dass er bei beginnt. 192.168.5.2
Aktuell scheint er bei zu beginnen 192.168.5.1
.
Als Nächstes wird die Routing-Tabelle eines über verbundenen Geräts eth0
und die Routing-Tabelle eines über verbundenen Geräts gepostet wlan1
.
Stellen Sie sicher, dass beide Geräte DHCP erfolgreich ausgeführt haben und über Adressen in den erwarteten Subnetzen verfügen, bevor Sie ihre Routing-Tabellen abrufen.