Routing zwischen mehreren Subnetzen

10

Angenommen, ich möchte ein internes Netzwerk mit 4 Subnetzen erstellen. Es gibt keinen zentralen Router oder Switch. Ich habe ein "Management-Subnetz" zur Verfügung, um die Gateways in allen vier Subnetzen (192.168.0.0/24) zu verbinden. Das allgemeine Diagramm würde folgendermaßen aussehen:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

Mit anderen Worten, ich konfiguriere eine einzelne Linux-Box in jedem Subnetz mit zwei Schnittstellen, 10.0.x.1 und 192.168.0.x. Diese fungieren als Gateway-Geräte für jedes Subnetz. Für jedes 10.x / 24-Subnetz gibt es mehrere Hosts. Bei anderen Hosts steht nur eine Schnittstelle als 10.0.xx zur Verfügung

Ich möchte, dass jeder Host in der Lage ist, sich gegenseitig in einem anderen Subnetz anzupingen. Meine Frage ist zuerst: Ist das möglich? Und zweitens, wenn ja, brauche ich Hilfe beim Konfigurieren von iptables und / oder Routen. Ich habe damit experimentiert, kann aber nur eine Lösung finden, die Pings in eine Richtung zulässt (ICMP-Pakete sind nur ein Beispiel, ich möchte letztendlich die vollen Netzwerkfunktionen zwischen Hosts, z. B. SSH, Telnet, FTP usw.). .

graue Linie
quelle

Antworten:

8

Ok, so dass Sie fünf Netzwerke haben 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24und 192.168.0.0/24, und vier Boxen Routing zwischen ihnen. Lassen Sie uns sagen , dass die Routing - Boxen haben Adressen 10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, 10.0.3.1/192.168.0.3, und 10.0.4.1/192.168.0.4.

Sie müssen statische Routen zu den anderen 10.0.x.0/24Netzwerken auf jeder Router-Box hinzufügen , mit Befehlen wie diesen (BEARBEITET!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

und die entsprechenden Routen auf den anderen Router-Boxen. Legen Sie auf den Nicht-Routing-Feldern mit nur einer Schnittstelle die Standardroute fest, auf die gezeigt werden soll 10.0.x.1. Natürlich müssen Sie auch die statischen Adressen und Netzmasken auf allen Schnittstellen hinzufügen.

Beachten Sie auch, dass Linux standardmäßig nicht als Router fungiert. Sie müssen die Paketweiterleitung aktivieren mit:

echo 1 > /proc/sys/net/ipv4/ip_forward

Die ipobigen Befehle machen die Einstellungen nicht dauerhaft. Wie dies zu tun ist, hängt von der Verteilung ab.

Wie gesagt, ich habe das nicht getestet und vielleicht etwas vergessen.

Johan Myréen
quelle
Danke für die Hilfe hier. Was Sie empfohlen haben, funktioniert, wenn ich Router an Router pinge (10.0.1.1 bis 10.0.2.1), aber nicht, wenn ich einen anderen Host anpinge. Wenn Sie beispielsweise von 10.0.1.1 auf 10.0.2.2 pingen, wird kein Datenverkehr an den 10.0.2.2-Host weitergeleitet. Würden Sie vorschlagen, einige iptables-Manipulationen durchzuführen? Ich habe ein paar Tage damit experimentiert, aber ohne Erfolg.
Grayline
Standard-Routing-Techniken sollten ausreichend sein. Hier ist eine Checkliste: 1. Alle Adressen sollten auf den Hosts eingerichtet sein (z. B. ip addr add 10.0.2.2/24 dev eth0). 2. Die Routen sollten wie oben beschrieben auf den vier Router-Feldern eingerichtet werden. 3. Die Standardroute Auf den Nicht-Router-Boxen sollte so eingerichtet sein, dass sie auf die Routing-Box im Netzwerk verweisen (z. B. IP-Route über 10.0.1.1 hinzufügen). 4. Cat / proc / sys / net / ipv4 / ip_forward auf den vier Router-Boxen sollte "1" drucken.
Johan Myréen
Ich habe einen Fehler in den obigen IP-Routenbefehlen korrigiert. Ich habe dieses Setup auch tatsächlich getestet, allerdings nur mit vier Computern: zwei Routing-Boxen und zwei Hosts auf der 10.0.x.0-Seite. Es klappt!
Johan Myréen
Johan, danke für deine zusätzlichen Beiträge. Dieses Setup funktioniert. Es stellte sich heraus, dass das von mir verwendete Linux-Image standardmäßige Iptables-Regeln hatte, die problematisch waren. Vielen Dank, dass Sie mir dabei geholfen haben, dies zu lernen.
Grayline