Linux-Router auf 2 verschieden Gateways routen
Hab ein Problem, an dem ich mir schon seit einiger Zeit die Zähne ausbeiße
Folgende Konfiguration ist vorhanden:
Windows-Domäne mit festen IP-Adressen xxx.xxx.97.1-255, wobei x für eine öffentliche IP-Adresse steht, das ist so vom Firmenverband vorgegeben.
Linux-Router mit 2 Netzwerkkarten und SQUID
eth1 = dynamische Adresse 192.168.178.xxx von Fritzbox
eth0 = feste IP xxx.xxx.97.135
Routing ins Internet funktioniert einwandfrei
Alle Windows-Pc's haben den Linux-Router alst Standard-Gateway eingetragen und kommen so ins Internet.
Problem: ein zweiter Hardware-Router hängt im Netz mit der IP xxx.xxx.97.2 und über den sollen die Windows-Pc's in ein Intranet des Firmenverbandes. Das funktioniert sobald man den Windows-Pc's die gewünschte Route zufügt mit dem gateway xxx.xxx.97.2
Da es aber ca. 70 IP's sind, die über den xxx.xxx.97.2 Router geroutet werden sollen und die sich auch von Zeit zu Zeit ändern, wollte ich diese Routen auch über den Linux-Router zentral verwalten, habe auf dem Linux-Router die entsprechenden Routen eingetragen. Von der Konsole aus routet der Linux-Router auch richtig über das xxx.xxx.97.2 GW, nur die Windows-Clients werden weiterhin ins Internet über die eth1 geroutet.
Also nochmal mit fiktiven IP-Adressen:
Linux-Router eth0: 64.123.97.135
Linux-Router eth1: 192.168.178.20 (dhcp von Fritzbox DSL)
Intranet-Router: 64.123.97.2
Windows-Pc's: 64.123.97.20-50
Intranetseite die über Intranetrouter erreichbar ist: 64.199.15.79
Auf Windows-PC ist folgende Route eingetragen:
Dest. Mask GW Metrik
64.199.15.79 255.255.255.255 64.123.97.2 1 -> funktioniert
Auf Linux-Router ist folgende Route eingetragen:
Dest. Mask GW Metrik Flags Use Iface
64.199.15.79 255.255.255.255 64.123.97.2 0 UGH 0 eth0 -> funktioniert lokal auf der Konsole, aber nicht von den Windows-Clients aus (Route wurde am Windows-Client vorher entfernt)
Hat da jemand eine Idee dazu? Ich tippe da vielleicht auch noch auf die Firewall, hab vorsichtshalber mal die Ausgabe von "iptables --list" angehängt.
Noch was - IP-Adressen können nicht geändert werden, die müssen so bleiben.
Noch einige Daten:
Linux-Router: SuSe 10.0
Squid
Avira-Webgate
Windows-Domäne: W2K3
Firewall-Regeln:
Hier noch das gewünschte Diagramm, ich hoffe es ist damit verständlicher

Vielen Dank im Voraus
Folgende Konfiguration ist vorhanden:
Windows-Domäne mit festen IP-Adressen xxx.xxx.97.1-255, wobei x für eine öffentliche IP-Adresse steht, das ist so vom Firmenverband vorgegeben.
Linux-Router mit 2 Netzwerkkarten und SQUID
eth1 = dynamische Adresse 192.168.178.xxx von Fritzbox
eth0 = feste IP xxx.xxx.97.135
Routing ins Internet funktioniert einwandfrei
Alle Windows-Pc's haben den Linux-Router alst Standard-Gateway eingetragen und kommen so ins Internet.
Problem: ein zweiter Hardware-Router hängt im Netz mit der IP xxx.xxx.97.2 und über den sollen die Windows-Pc's in ein Intranet des Firmenverbandes. Das funktioniert sobald man den Windows-Pc's die gewünschte Route zufügt mit dem gateway xxx.xxx.97.2
Da es aber ca. 70 IP's sind, die über den xxx.xxx.97.2 Router geroutet werden sollen und die sich auch von Zeit zu Zeit ändern, wollte ich diese Routen auch über den Linux-Router zentral verwalten, habe auf dem Linux-Router die entsprechenden Routen eingetragen. Von der Konsole aus routet der Linux-Router auch richtig über das xxx.xxx.97.2 GW, nur die Windows-Clients werden weiterhin ins Internet über die eth1 geroutet.
Also nochmal mit fiktiven IP-Adressen:
Linux-Router eth0: 64.123.97.135
Linux-Router eth1: 192.168.178.20 (dhcp von Fritzbox DSL)
Intranet-Router: 64.123.97.2
Windows-Pc's: 64.123.97.20-50
Intranetseite die über Intranetrouter erreichbar ist: 64.199.15.79
Auf Windows-PC ist folgende Route eingetragen:
Dest. Mask GW Metrik
64.199.15.79 255.255.255.255 64.123.97.2 1 -> funktioniert
Auf Linux-Router ist folgende Route eingetragen:
Dest. Mask GW Metrik Flags Use Iface
64.199.15.79 255.255.255.255 64.123.97.2 0 UGH 0 eth0 -> funktioniert lokal auf der Konsole, aber nicht von den Windows-Clients aus (Route wurde am Windows-Client vorher entfernt)
Hat da jemand eine Idee dazu? Ich tippe da vielleicht auch noch auf die Firewall, hab vorsichtshalber mal die Ausgabe von "iptables --list" angehängt.
Noch was - IP-Adressen können nicht geändert werden, die müssen so bleiben.
Noch einige Daten:
Linux-Router: SuSe 10.0
Squid
Avira-Webgate
Windows-Domäne: W2K3
Firewall-Regeln:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
input_int all -- anywhere anywhere
input_ext all -- anywhere anywhere
input_ext all -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-IN-ILL-TARGET '
DROP all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
forward_int all -- anywhere anywhere
forward_ext all -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWD-ILL-ROUTING '
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-OUT-ERROR '
Chain forward_ext (1 references)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp echo-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp time-exceeded
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp parameter-problem
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp timestamp-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp address-mask-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp protocol-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp redirect
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-FWDext-DROP-DEFLT '
LOG icmp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWDext-DROP-DEFLT '
LOG udp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWDext-DROP-DEFLT '
LOG all -- anywhere anywhere limit: avg 3/min burst 5 state INVALID LOG level warning tcp-options ip-options prefix `SFW2-FWDext-DROP-DEFLT-INV '
DROP all -- anywhere anywhere
Chain forward_int (1 references)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp echo-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp time-exceeded
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp parameter-problem
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp timestamp-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp address-mask-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp protocol-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp redirect
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-FWDint-DROP-DEFLT '
LOG icmp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWDint-DROP-DEFLT '
LOG udp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWDint-DROP-DEFLT '
LOG all -- anywhere anywhere limit: avg 3/min burst 5 state INVALID LOG level warning tcp-options ip-options prefix `SFW2-FWDint-DROP-DEFLT-INV '
DROP all -- anywhere anywhere
Chain input_ext (2 references)
target prot opt source destination
DROP all -- anywhere anywhere PKTTYPE = broadcast
ACCEPT icmp -- anywhere anywhere icmp source-quench
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp echo-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp time-exceeded
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp parameter-problem
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp timestamp-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp address-mask-reply
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp protocol-unreachable
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED icmp redirect
LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-ACC-TCP '
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
reject_func tcp -- anywhere anywhere tcp dpt:ident state NEW
LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
LOG icmp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
LOG udp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
LOG all -- anywhere anywhere limit: avg 3/min burst 5 state INVALID LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT-INV '
DROP all -- anywhere anywhere
Chain input_int (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain reject_func (1 references)
target prot opt source destination
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
Hier noch das gewünschte Diagramm, ich hoffe es ist damit verständlicher

Vielen Dank im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 136038
Url: https://administrator.de/forum/linux-router-auf-2-verschieden-gateways-routen-136038.html
Ausgedruckt am: 12.04.2025 um 02:04 Uhr
21 Kommentare
Neuester Kommentar
2 Kardinalsfehler hast du bei der Umsetzung begangen, die du auch unbedingt ändern musst:
1.) Ein Router hat niemals eine DHCP Adresse an einem Port. Dem Linux Router im 192.168.178er Segment also eine DHCP IP zu vergeben ist schlicht falsch und zeugt von wenig Routing Fachwissen...sorry ! Router dienen der Wegefindung in einem Netzwerk und sind auf feste IP Adressen angewiesen. Du musst hier also eine statische IP vergeben außerhalb der DHCP Range der FB
2.) Statische Routen konfiguriert man niemals auf Endgeräten !! Diese Frickelei mit route add... auf Endgeräte PCs ist also schonmal grundfalsch. Statische Routen werden immer auf den Routern gesetzt NICHT auf Endgeräten. Denn...wozu heisst der Router "Router" ??
Zu Punkt 2. ist also die einzig relevante Frage WO haben deine PCs ihr Defualt Gateway konfiguriert ???
Auf diesen Routern werden die statischen Routen eingetragen..nirgendwo sonst !
Leider fehlt diese Angabe in deiner Beschreibung so das man hier nur wild raten kann statt dir qualifiziert zu helfen
So sollte dein Netzwerk eigentlich aussehen:
Fragen die weiter ungeklärt sind:
1.) Ein Router hat niemals eine DHCP Adresse an einem Port. Dem Linux Router im 192.168.178er Segment also eine DHCP IP zu vergeben ist schlicht falsch und zeugt von wenig Routing Fachwissen...sorry ! Router dienen der Wegefindung in einem Netzwerk und sind auf feste IP Adressen angewiesen. Du musst hier also eine statische IP vergeben außerhalb der DHCP Range der FB
2.) Statische Routen konfiguriert man niemals auf Endgeräten !! Diese Frickelei mit route add... auf Endgeräte PCs ist also schonmal grundfalsch. Statische Routen werden immer auf den Routern gesetzt NICHT auf Endgeräten. Denn...wozu heisst der Router "Router" ??
Zu Punkt 2. ist also die einzig relevante Frage WO haben deine PCs ihr Defualt Gateway konfiguriert ???
Auf diesen Routern werden die statischen Routen eingetragen..nirgendwo sonst !
Leider fehlt diese Angabe in deiner Beschreibung so das man hier nur wild raten kann statt dir qualifiziert zu helfen
So sollte dein Netzwerk eigentlich aussehen:
Fragen die weiter ungeklärt sind:
- Wo haben die PCs im 64.123.97.0er Netz ihr Standardgateway ?
- Wo haben die PCs im 192.168.178.0er Netz ihr Standardgateway ?
OK, dann hast du diese 3 Punkte zu erledigen damit es fehlerfrei klappt:
b.) Zielnetz: 64.199.15.0, Maske: 255.255.255.0, Gateway: <Feste IP Linux Router im 192.168.178.0er Netz>
b. kann ggf. entfallen wenn da keiner über die FB nach draussen geht !
b.) Default Route, Gateway: 192.168.7.1 (FritzBox IP)
Das wars. Auf dem Linux Router musst du ggf. das IP Forwarding aktivieren sofern du das noch nicht gemacht hast !
Siehe hier im Tutorial:
Routing von 2 und mehr IP Netzen mit Windows, Linux und Router
- 2 Statische Routen auf der FritzBox eintragen:
b.) Zielnetz: 64.199.15.0, Maske: 255.255.255.0, Gateway: <Feste IP Linux Router im 192.168.178.0er Netz>
b. kann ggf. entfallen wenn da keiner über die FB nach draussen geht !
- 2 Statische Routen auf dem Linux Router:
b.) Default Route, Gateway: 192.168.7.1 (FritzBox IP)
- Default Route vom Hardware Router .2 auf die .135
Das wars. Auf dem Linux Router musst du ggf. das IP Forwarding aktivieren sofern du das noch nicht gemacht hast !
Siehe hier im Tutorial:
Routing von 2 und mehr IP Netzen mit Windows, Linux und Router
Feb 16 12:31:56 linux-router kernel: SFW2-FWDint-DROP-DEFLT IN=eth0 OUT=eth0 SRC=64.123.97.25 DST=64.199.170.59 LEN=92 TOS=0x00 PREC=0x00 TTL=1 ID=28048 PROTO=ICMP TYPE=8 CODE=0 ID=512 SEQ=23808
Die Routing-Tabelle auf dem Linux-System sieht also wie folgt aus?
ip route
64.123.97.0/24 dev eth0 proto kernel scope link src 64.123.97.135
64.199.15.79/24 via 64.123.97.2 dev eth0
default via 192.168.178.1 dev eth1
Mit Yast wurde folgendes unter "Security and Users -> Firewall" Konfiguriert:
Interface eth0 INTERNAL
Interface eth1 EXTERNAL oder ANY
Masquerading auf ETH1 aktiviert
Mit YaST wurde folgendes unter "Network Settings->Routing" konfiguriert:
DEST 64.199.15.79 MASK 255.255.255.0 GATEWAY 64.123.97.2 DEVICE eth0
Enable IP Forwarding wurde aktiviert.
Gibt es noch zusätzliche, benutzerdefinierte Regeln? Eventuell verbeietest du dem System Redirects zu senden oder zu empfangen? Dein Log-Auszug sieht so aus, als währen alle Interfaces auf "extern" gesetzt. Kannst du bitte nochmal eine Ausgabe von "iptables -nvL" geben? Das ist etwas genauer.
Um zu testen ob es an der Firewall liegt, kannst du eine Permit any any Regel in die Forward-Table für eth0 schreiben.
iptables -I FORWARD -i eth0 -o eth0 -j ACCEPT
Die Kette "forward_int" springt an, wenn Pakete von ETH0 kommen und nach Any weitergeleitet werden sollen. In dieser Kette werden Pakete, die über eth1 das System verlassen mit dem Status "NEU und BESTEHEND" erlaubt aber nur Pakete, die zu bestehenden Verbindungen gehören akzeptiert.
Über eth0 darf garnichts geforwarded werden. Normalerweise ist das auch kein problem, da sich hinter diesem interface alle Systeme im gleichen Subnetz befinden. Vermutlich akzeptieren aber die Systeme im Netz keinen ICMP Redirect oder das System ist nicht in der Lage, aufgrund der Firewallkonfiguration, diesen zu senden. Da es nun keine Regel gibt, greift Default Drop.
Da sich hinter eth0 sowieso das gleiche Netz verbirgt, kannst du relativ bedenkenlos Verbindungen in der Forward-Kette von eth0 nach eth0 akzeptieren.
Willst du eine saubere trennung zum restlichem Netz (der Intranet-Router) solltest du ein Subinterface konfigurieren und die Netze logisch (L3) trennen. Der Zugriff kann dann in der Firewall explizit in eine Richtung erlaubt werden (-m state ....).
Da du aber ein SuSE einsetzt, sollten diese Regeln eigentlich vorhanden sein. Prüfe bitte eine Interfacekonfiguration. eth0 muss auf INTERN stehen. Sollte das nicht helfen, trage die iptables Zeile unter "Custom Rules" ein, um die Konfiguration nicht zu versauen.
Über eth0 darf garnichts geforwarded werden. Normalerweise ist das auch kein problem, da sich hinter diesem interface alle Systeme im gleichen Subnetz befinden. Vermutlich akzeptieren aber die Systeme im Netz keinen ICMP Redirect oder das System ist nicht in der Lage, aufgrund der Firewallkonfiguration, diesen zu senden. Da es nun keine Regel gibt, greift Default Drop.
Da sich hinter eth0 sowieso das gleiche Netz verbirgt, kannst du relativ bedenkenlos Verbindungen in der Forward-Kette von eth0 nach eth0 akzeptieren.
Willst du eine saubere trennung zum restlichem Netz (der Intranet-Router) solltest du ein Subinterface konfigurieren und die Netze logisch (L3) trennen. Der Zugriff kann dann in der Firewall explizit in eine Richtung erlaubt werden (-m state ....).
iptables -I FORWARD -i eth0 -o eth0 -j ACCEPT
Da du aber ein SuSE einsetzt, sollten diese Regeln eigentlich vorhanden sein. Prüfe bitte eine Interfacekonfiguration. eth0 muss auf INTERN stehen. Sollte das nicht helfen, trage die iptables Zeile unter "Custom Rules" ein, um die Konfiguration nicht zu versauen.