Routing des Netzwerkverkehrs zwischen zwei Subnetzen mithilfe eines Raspberry Pi

3721
Mercedes Colomar

Ich habe Probleme beim Routing des Datenverkehrs zwischen zwei Subnetzen. Mit meinem aktuellen Setup kann ich Hosts in beiden Subnetzen von meinem Rasbperry Pi aus pingen, jedoch keine Hosts von einem Subnetz in ein anderes (Timeout).

Grundsätzlich möchte ich, dass Hosts aus einem Subnetz Zugriff auf Hosts im anderen Subnetz haben. Mein Plan war, meinen Raspberry Pi so zu konfigurieren, dass er fast alle Routing-Verbindungen zwischen Subnetzen abwickelt, da sich jedes Subnetz hinter seinem eigenen Haushaltsrouter befindet, der kein statisches Routing unterstützt. Ich würde dann auf jedem Host eine Route über das RPi-Gateway (Gateway) zum gegenüberliegenden Subnetz hinzufügen.

Hier ist mein aktuelles Setup:

LAN A <---> Router A <---> RPi <---> Router B <---> LAN B

LAN A
Netzwerk: 192.168.0.0/24
Gateway: 192.168.0.1

LAN B-
Netzwerk: 192.168.1.0/24
Gateway: 192.168.1.1

RPi
OS: Raspbian
eth0: 192.168.0.4
eth1: 192.168.1.4

RPi-Schnittstellenkonfiguration:

# cat /etc/network/interfaces auto lo iface lo inet loopback  auto eth0 iface eth0 inet static address 192.168.0.4 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1  # The USB-Ethernet interface 1 allow-hotplug eth1 iface eth1 inet static address 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 

RPi-Routen:

# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 192.168.1.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth1 192.168.1.0 * 255.255.255.0 U 0 0 0 eth1 

RPi-Firewall-Regeln:

# iptables -t nat -n -L -v Chain PREROUTING (policy ACCEPT 2711 packets, 147K bytes) pkts bytes target prot opt in out source destination  Chain INPUT (policy ACCEPT 33 packets, 5204 bytes) pkts bytes target prot opt in out source destination  Chain OUTPUT (policy ACCEPT 97 packets, 7344 bytes) pkts bytes target prot opt in out source destination  Chain POSTROUTING (policy ACCEPT 97 packets, 7344 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * eth0 192.168.0.0/24 192.168.1.0/24 0 0 MASQUERADE all -- * eth1 192.168.1.0/24 192.168.0.0/24 

Host 192.168.0.3 (WIN 10) Route:

>route PRINT =========================================================================== Interface List ... ===========================================================================  IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 281 ... 192.168.1.0 255.255.255.0 192.168.0.4 192.168.0.3 26 ... =========================================================================== ... 

Derzeit passiert Folgendes, wenn ich das Gateway des gegenüberliegenden Subnetzes von Host 192.168.0.3 aus anpinge:

>ping 192.168.1.1  Pinging 192.168.1.1 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out.  Ping statistics for 192.168.1.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss). 

Wenn man sich mein Setup ansieht, könnte man sagen, dass ich den Ansatz der Flinte genommen habe, aber leider hat es nicht geklappt. Könnte ich bitte herausfinden, was ich sonst noch konfigurieren muss oder wo ich einen Fehler gemacht habe? Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Vielen Dank im Voraus. :)

1
Warum maskieren Sie sich? Sie möchten nur zwei verschiedene Subnetze verbinden. ip_forward ist aktiviert? dirkt vor 6 Jahren 1
Nehmen wir an, alles auf LANB hat Routen für LANA, dann entfernen Sie einfach alles iptables und aktivieren Sie die Weiterleitung von `sysctl -w net.ipv4.ip_forward = 1`. Sie können diese Einstellung in `/ etc / sysctl, conf` speichern. Das Pi wird ohne es nicht routen Paul vor 6 Jahren 1
Nehmen Sie sich bitte nichts vor, aber ich denke, Sie müssen etwas über das Routing lernen, bevor Sie das Problem beheben. In Ihrem Setup gibt es mehrere Probleme - möglicherweise Probleme mit der Verkabelung / Beschriftung. Sie sollten natürlich kein NAT verwenden, aber Ihre Router sind nicht so eingerichtet, dass sie ordnungsgemäß routen (dh, es gibt Schnittstellen für LAN-IPs) und Ihr RPI wird nicht ordnungsgemäß als Standard-Gw verwendet. Sie haben fast sicher redundante Hardware und ein unnötig komplexes Setup - was versuchen Sie zu tun? (Ein Switch oder 2 könnte Router oder das Pi ersetzen, was das Leben einfacher macht). davidgo vor 6 Jahren 0
Welche Art von Routern? davidgo vor 6 Jahren 0

1 Antwort auf die Frage

1
Mercedes Colomar

Der vollständige Kontext des Setups ist, dass wir 2 Apartments mit eigenem Internetanschluss und LAN haben, die wir mithilfe eines RPi über Jumper-Kabel in der Garage miteinander verbunden haben. Der Kernpunkt dieser Übung bestand darin, dass ich den NAS der oberen Wohnung verwalten kann, ohne dass der Netzwerkverkehr das Gebäude verlässt (was auch die gemeinsame Nutzung von Daten viel schneller machen würde) und auch das Internet / Netzwerk-Setup jedes apt beibehalten wird, damit sie fortfahren können arbeiten, falls das RPi ausfällt. Da den Commodity-Routern in jedem Apartment so viele Optionen und Funktionen fehlen, war ich bereit, Kompromisse einzugehen, indem Sie den Hosts manuell Routen hinzufügen, über die ich die Verwaltung in meinem Subnetz vornehmen würde.

Es ist wahr, dass ich ein besseres Verständnis für das Netzwerk erlangen muss, und ich bin ständig dabei, dies als IT-Profi zu tun. Ich habe heute mit einem Kollegen über mein Problem gesprochen, und es stellte sich heraus, dass ich keine Routen hinzufügen musste. Ich musste lediglich die Firewall-Regeln ändern, um SNAT anstelle von MASQUERADE zu verwenden. Die Subnetze sprachen miteinander (ich brauchte es auch.) IPv4-Weiterleitung wie von Paul vorgeschlagen empfohlen, danke!):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.0/24 -o eth0 -j SNAT --to-source 192.168.0.4 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.1.0/24 -o eth1 -j SNAT --to-source 192.168.1.4 

Vollständige iptables-Liste:

# iptables -t nat -n -L -v Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination  Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination  Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination  Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * eth0 192.168.1.0/24 192.168.0.0/24 to:192.168.0.4 0 0 SNAT all -- * eth1 192.168.0.0/24 192.168.1.0/24 to:192.168.1.4 

Wie Sie sehen, bleibt der Verkehr jetzt im Gebäude, wenn Sie von Host 192.168.0.3 aus testen:

>tracert 192.168.1.1  Tracing route to 192.168.1.1 over a maximum of 30 hops  1 1 ms 1 ms <1 ms 192.168.0.4 2 1 ms 1 ms 1 ms 192.168.1.1  Trace complete. 

Vielen Dank für Ihre Anmerkungen.