Wie (einfaches) IPV4 Routing einrichten (kein NAT)?

Bin verzweifelt, weil ich ein ganz normales Routing nicht hinbekomme :frowning:

Ziel ist es, einen Server unter OS11.4 aufzusetzen, der mit einem Interface an einem internen Netzwerk #1 (192.168.178.0/24) hängt, das über einen NAT Router (FB7270) ans Internet gebunden ist. → Funktioniert!

UND über eine zweite Schnittstelle ein weiteres interne Netzwerk #2 anzubinden (192.168.100.0/24). → Funktioniert auch!

Die Rechner des zweiten Netzwerkes über den Server transparent auf das Netzwerk #1 und auf das Internet zu routen.

Forwarding ist gesetzt:

smb4srv:~ # sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Routing sollte stimmen:

smb4srv:~ # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.178.0   smb4srv.BECKSTE 255.255.255.0   UG    0      0        0 eth1
192.168.178.0   *               255.255.255.0   U     0      0        0 eth1
192.168.100.0   smb4srv.bst.nil 255.255.255.0   UG    0      0        0 eth0
192.168.100.0   *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         192.168.178.1   0.0.0.0         UG    0      0        0 eth1

Trotzdem geht kein Ping vom 192.168.100 Netz an das 192.168.178 Netz.

Alle Howtos zu dem Thema befassen sich mit NAT Routing :frowning:

Was mache ich falsch?

Klaus

Funktioniert der Ping den anders rum? Kannst du vom Netz #2 den Router in
Netz #1 pingen?

Was mich wundert ist, dass du vom Netz #2 auf das Internet zugreifen kannst.
Normalerweise sollte nicht mal das funktionieren.
Ich glaube, du brauchst entweder eine NAT oder du stellst die IP-Adressen
um.

No, eben nicht! Der zwischengeschaltete Server routet nicht.

Ich kann vom Server, jedoch nicht vom Netz #2 auf das Internet zugreifen.

Doch! Das sollte eben funktionieren. Jeder normale Router im Internet routet Pakete, die nicht an ihn gerichtet sind, weiter zum nächsten. Das läßt sich mit tracert ja dann einfach nachverfolgen. Nicht anderes versuche ich hier:(

Das Problem ist das folgende:

Jeder Rechner schickt Pakete, die er nicht im lokalen Netz zustellen kann,
an das Gateway. Im Netz #2 werden solche Pakete als an den Server geschickt.
(Hier läuft noch alles richtig.)

Im Netz #1 ist das Gateway aber NICHT der Server sondern der Router ins
Internet.

Wenn du jetzt vom Netz #1 (der Server gehört in dem Fall auch dazu) auf das
Internet zugreifst, macht das Paket den folgenden Weg:
Rechner in Netz #1 -> Router -> Internet
Und die Antwort zurück:
Internet -> Router -> Rechner in Netz #1

Wenn du jetzt aus dem Netz #2 einen Rechner in Netz #1 pingst ist entsteht
der folgende Weg:
Rechner in Netz #2 → Server → Rechner in Netz #1
Und die Antwort:
Rechner in Netz #1 → Router → —

Warum schickt der Rechner die Antwort an den Router:
Die Antwort soll an eine Adresse aus Netz #2 gehen, also 192.168.100.xxx.
Diese Adresse ist keine lokale Adresse in Netz #1, also ist das Gateway (in
dem Fall der Router) dafür zuständig das Paket weiter zu verschicken.

Das selbe Problem entsteht auch, wenn du aus Netz #2 auf das Internet
zugreifen willst.

Spontan fallen mir 3 Lösungen ein:

  1. Du richtest den Server als NAT ein. In dem Fall werden die
    Antwortadressen von Paketen aus #2 geändert. Hat aber den Nachteil, dass du
    von #1 keine Rechner in #2 erreichst. (Anders herum geht es aber.)

  2. Du fügst auf jedem Rechner (und dem Router) in #1 folgende Zeile in die
    Routing Tabelle ein:
    192.168.100.0 <Server-IP in #1> 255.255.255.0
    Dann werden Pakete für #2 nicht an den Router sondern an den Server
    geschickt.

  3. Du machst aus beiden Netzen ein Netz und richtest den Server als Proxy
    ARP oder als Bridge ein.

Yes! Das ist einleuchtend :slight_smile:

Variante 1 habe ich schon getestet mit dem vorhergesagten (Teil)Erfolg.
Variante 2 werde ich jetzt mal testen.

Danke!

So, Hallo,

entweder habe ich etwas überlesen, was definitiv sein kann oder ich vermisse wirklich etwas.
Sowas wie
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
auf dem Router. Damit die Pakete die über den Router gehen auch passend maskiert werden. Denn sollte dies nicht der Fall sein kommen die Pakete zwar auf dem anderen Rechner an der kann aber ohne die Rückroute keine Pakete schicken.

Grüsse

Mit dem Befehl wird der Server aber genau zu dem was er nicht sein sollte:
Ein NAT

Ah, dann ist das die Stelle die ich überlesen habe :slight_smile: