IP-Forwarding klappt nicht

Post Reply
Message
Author
Kurt.

IP-Forwarding klappt nicht

#1 Post by Kurt. »

Hallo,

ich versuche, einen Rechner als Linux-Router aufzusetzen, der zwischen zwei Netzwerken routen soll:

192.168.0.0/24 und
10.0.0.0/8.

Ich habe das IP-Forwarding aktiviert (echo 1 > proc/sys/net/ipv4/ip_forward) und in iptables sämtliches Forwarding erlaubt (Policy "ACCEPT" für Forwarding, keine Einträge in der Tabelle). In dem Rechner sind zwei Netzwerkkarten, eine mit der IP 192.168.0.4 (Subnet 255.255.255.0) und die zweite mit der IP 10.0.0.1 (Subnet 255.0.0.0).

In einem an das 10er-Netzwerk über einen Switch angeschlossenen Windows-Client (mit der IP 10.0.0.2) ist 10.0.0.1 mit Subnet 255.0.0.0 als Gateway eingetragen. In dem 192.168.x.x-Netzwerk befindet sich ein weiterer Rechner mit der IP 192.168.0.254 (Subnet 255.255.255.0).

Laut sämtlichen HOWTOs, die ich dazu gelesen habe, sollte damit das Routing zwischen den beiden Netzen funktionieren. Leider ist das nicht der Fall: Ein "ping 192.168.0.254" von dem Windows-Client aus bleibt unbeantwortet. Pings zu dem Linux-Server funktionieren hingegen zu beiden internen Netzwerkkarten (zu 10.0.0.1 und 192.168.0.4).

Leider befassen sich nahezu sämtliche Anleitungen, die es im Netz zu geben scheint, lediglich damit, ein Heimnetzwerk über DSL oder ISDN per NAT ins Internet zu routen. Ich jedoch möchte einfach nur IP-Pakete aus einem Netz in ein anderes vermitteln - das sollte ja auch ohne NAT etc. gehen.

Achja, bei dem Linux-System handelt es sich um SuSE 9.1 mit Kernel 2.6.4. Von dem Linux-Server aus erreiche ich alle Rechner in beiden Netzen, nur wird dazwischen anscheinend nicht geroutet.

Hat jemand irgendeine Idee, woran das liegen könnte? Für Hilfestellungen wäre ich sehr dankbar!

Viele Grüße,

Kurt

User avatar
Hans Solo
prolinux-forum-admin
Posts: 601
Joined: 20. Apr 2004 12:19
Location: AT
Contact:

#2 Post by Hans Solo »

hi

du musst auch routen für die netzwerke eintragen
was sagt den ein
#route

ansonsten
#man route
ist recht ausführlich erklärt

mfg
arno
[root@host]# cd /pub
[root@host]# more beer

Kurt.

Lösung

#3 Post by Kurt. »

Hab das Problem inzwischen gelöst - für Interessierte:

Das Routing zwischen zwei Netzen funktioniert in diesem Fall nicht ohne Masquerading. Denn wenngleich passende Forwarding-Regeln in iptables dafür sorgen, dass an den Router geschickte Pakete in ein fremdes Netz geroutet werden, weiß der Empfänger der Pakete - der u.U. einen anderen Gateway benutzt - nichts mit der Absenderadresse, die aus dem fremden Netz stammt, anzufangen. Er schickt die Antwort-Pakete an seinen eigenen Gateway, und wenn der dieses Netz nicht kennt und Pakete daran nicht weiterleitet, endet dort die Kommunikation.

Es gibt also in meinem Fall zwei Möglichkeiten: Entweder man definiert zwei Forwarding-Regeln - aus dem 10er-Netz in das 192.168.x.x-Netz und umgekehrt -, so dass Pakete in beide Richtungen weitergeleitet werden, und trägt in allen Clients in beiden Netzen den Router als Gateway ein. Wenn jedoch die Clients im 192er-Netz einen anderen Gateway verwenden, muss die Quelladresse aus dem 10er-Netz in den IP-Paketen durch die des Routers in dem 192er-Netz ersetzt werden, damit die Clients die Antwortpakete an den Router zurückschicken und nicht an ihren Gateway (welcher ja mit den Adressen aus dem 10er-Netz nichts anfangen kann).

Genau das erledigt Masquerading: Pakete aus dem 10.x.x.x-Netz werden vom Router mit einer (seiner) Quelladresse aus dem 192.168.x.x-Netz versehen und erst dann verschickt. Die Antworten kommen somit beim Router an (und nicht beim Gateway der Clients, der u.U. nicht identisch mit dem Router ist!), der wieder die Ursprungsadresse aus dem 10.x.x.x-Netz als Ziel einsetzt und die Pakete dann an das Ziel weiterleitet. Welche Pakete zu welchem Client im 10.x.x.x-Netz gehören, merkt sich der Router dabei anhand seiner NAT-Tabelle.

Sollen auch Rechner im 10er-Netz umgekehrt vom 192er-Netz aus erreichbar sein, ist außerdem bei jedem Client ein Eintrag in der Routing-Tabelle notwendig: Die Route in das Netz 10.0.0.0/8 muss auf den Router umgelenkt werden, der Zugang zu diesem Netz hat. Alternativ kann man natürlich auch den (anderen) Gateway dieser Clients so konfigurieren, dass er Pakete in das 10er-Netz an den Router weiterleitet.

Post Reply