raptor2101
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
Hallo Community in diesem Thread geht es nicht um ein zu lösendes Problem, sondern um eine Verständnisfrage. Das Problem habe ich gelöst bekommen, mir geht es nur um die Frage: "Warum ist das so". Szenario: Mein Netzwerk besteht aus 3 Hauptnetzten (da wo die Nutzer sich tummeln) und diversen Transitnetzen. Alles funktioniert Prima. Alle Clients können sich (im Rahmen ihrer Möglichkeiten) erreichen und miteinander Kommunizieren. "Aus Gründen" wird nun ein Server vom BackBone dichter an die Nutzer verschoben. Dieser Server bekommt nun 3 Interfaces mit Direktverbindungen in alle 3 Netze. Die Interfaces sind mit DefaultGateway konfiguriert und es ist nirgends NAT im Einsatz. Der UbuntuServer ist bewusst nicht als Router konfiguriert (IP Forwarding ist abgeschaltet, wobei das im test keinen unterschied gemacht hat). Was nun passiert ist folgendes:
wenn nur ein Interface aktiv ist, kann dieses Interface von allen Netzten erreicht werden. Egal welches Interface, die Router übernehmen halt das Routing... Sobald alle Interfaces aktiv sind, kann jeder Client nur noch das Interface erreichen, dass im seinem Netzsegment liegt. So wie es ausschaut antwortet der Server auf Anfragen über Interface A mit Antworten über Interface B wenn die anfrage von einem Client aus Netz B kam. Was den Client verwirrt...
Wenn man nun via "ip route" für jedes Interface eine eigene Routing-Table aufsetzt und dann via "ip rule" die Interfaces fest auf die Tables bindet, funktioniert alles wie es soll. Anfragen an Interface A werden von Interface A beantwortet. Das war in der Tat nicht das erwartete Ergebnis. Ich hab hier Debian Basierte Router die weisen das Verhalten "out of the Box" auf. Gibt es da irgendeinen Kernel schalter? (ip forward ist es nicht das hab ich ausprobiert und auch ein "Mach alle routen bekannt" brachte keine Besserung)
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8628
Wohnort: Münster
|
raptor2101 schrieb: […] So wie es ausschaut antwortet der Server auf Anfragen über Interface A mit Antworten über Interface B wenn die anfrage von einem Client aus Netz B kam. Was den Client verwirrt...
Ich bin auch verwirrt: Wenn eine Anfrage eines Client im Netz B den Server mit den drei Schnittstellen nicht über dessen Schnittstelle für das Netz B, sondern A, erreicht, obwohl der Client den Server über die Schnittstelle B erreichen könnte, dann stimmt etwas mit der Routing-Politik für das Gesamtsystem nicht. Das kann man aber auf der Basis der vorhanden Informationen nicht beurteilen. Eine Skizze des Gesamtsystems und die kompletten Routing-Tabellen bräuchte man schon. Offenbar hast Du keine Baum-Struktur, sondern Schleifen auf Layer 3, welche die Router dynamisch auftrennen und schließen. Ich glaube, dieses Textmedium ist mit Deinem komplizierten System überfordert.
|
raptor2101
(Themenstarter)
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
Nein ist eine ganz normale Baum Struktur. [Backbone]←>[Router]←>[Usernetze] Das "Problem" ist, dass der Server ein Interface im Backbone Netz hat, da er dort Dienste bereit stellt, als auch direkt in den Usernetzen hängt. Defakto aus 3 Servern einen gemacht. (VLan sei dank) Beispiel:
10.0.0.5/24 (Interface im Backbone Netz) 10.0.1.5/24 (Interface im User Netz A) 10.0.2.5/24 (Interface im User Netz B) 10.0.3.5/24 (Interface im User Netz C)
Wenn nur ein Interface aktiv kann aus jedem Netzt heraus dieses eine Interface angesprochen werden (Ping,SSH, whatever ...) Es ist egal welches Interface so lange nur es nur ein Interface ist.
Sobald alle interfaces aktiv sind, kann ich (ohne ip rule/ip route) nur noch das Interface angesprochen, das ich ohne Routing erreichen kann. Auf dem Server läuft kein Routing Daemon. Änderung beim Server bekommen die Router nicht mit...
ip route
default via 10.0.0.1 dev eth0 onlink
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.5
10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.5
10.0.2.0/24 dev eth2 proto kernel scope link src 10.0.2.5
10.0.3.0/24 dev eth3 proto kernel scope link src 10.0.3.5 Hinweis: mir ist schon bewusst, dass in dieser config, die router nicht wissen, dass sie über den Server andere Netze erreichen können. Deshalb hat der Server auch IP Forward auf disabled. Die eigentliche (präzise) Frage ist: gibt es einen Kernel Parameter der folgende Befehle überflüssig macht:
ip rule add from 10.0.1.5 lookup 10
ip rule add from 10.0.2.5 lookup 20
ip rule add from 10.0.3.5 lookup 30
ip route add default dev eth1 table 10
ip route add default dev eth2 table 20
ip route add default dev eth3 table 30
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8628
Wohnort: Münster
|
raptor2101 schrieb: […] Die eigentliche (präzise) Frage ist: gibt es einen Kernel Parameter der folgende Befehle überflüssig macht:
ip rule add from 10.0.1.5 lookup 10
ip rule add from 10.0.2.5 lookup 20
ip rule add from 10.0.3.5 lookup 30
ip route add default dev eth1 table 10
ip route add default dev eth2 table 20
ip route add default dev eth3 table 30
Wozu benötigst Du die mehrere default-Routen? Lass doch einfach die default-Routen über eth1, eth2, eth3 weg! Dann brauchst Du auch keine Regeln und zusätzliche Tafeln.
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
1. Ein gutes Netzwerk hat immer nur ein Interface mit einem Default Gateway.
1. Ein gutes Netzwerk rollt statische Routen für Interfaces aus die kein Default Gateway haben, mit den Netzen die über das Interface oder ein Gateway darin erreichbar sind. Mehrere Routing Tabellen, iptables Magic oder andere Sachen sind wenn man nicht weiß was man tut meist ein zeichen von schlechtem Netzwerkdesign. mfg Stefan
|
raptor2101
(Themenstarter)
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
encbladexp schrieb: 1. Ein gutes Netzwerk hat immer nur ein Interface mit einem Default Gateway.
1. Ein gutes Netzwerk rollt statische Routen für Interfaces aus die kein Default Gateway haben, mit den Netzen die über das Interface oder ein Gateway darin erreichbar sind. Mehrere Routing Tabellen, iptables Magic oder andere Sachen sind wenn man nicht weiß was man tut meist ein zeichen von schlechtem Netzwerkdesign. mfg Stefan
Da geb ich dir prizipjell recht. Das ist schlechtes netzwerkdesign, Geht nur leider nicht anders.
In deutschland bekommt man "gutes internet" (statische IPs, SubNets, IPv6) nur gegen exorbitante aufpreise bzw von nicht nicht (diverse Provider). 10 GBit Router sind aktuell noch außerhalb des Budgets
kB schrieb:
Wozu benötigst Du die mehrere default-Routen? Lass doch einfach die default-Routen über eth1, eth2, eth3 weg! Dann brauchst Du auch keine Regeln und zusätzliche Tafeln.
Das Backbone Interface ist das Hauptinterface. Die meisten Dienste sollen über dieses Inferface laufen. Die Interfaces direkt in die Usernetzte bieten nur Datendienste (CIFS/NFS) und gehen über 10GBit (hier sind keine Default Routen notwendig/konfiguriert) Eines der Interfaces ist ein ein VPN Endpunkt der eine statische IP(IPv6 Netz bereitstellt. "Aus Gründen" (Kosten, Bandbreite, etc) soll darüber natürlich nur der Traffic gehen, der darüber gehen muss. Ergo hat mein Server 2 DefaultRouten. Die übers Backbone um überhaupt normal ins Internet zu kommen (und den VPN Gateway zu erreichen) und dann die DefaultRoute über den VPN Uplink.
Die Tables Beispiele kommen von einem Versuchsaufbau um das Problem zu isolieren/verstehen.
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8628
Wohnort: Münster
|
raptor2101 schrieb: […] Da geb ich dir prizipjell recht. Das ist schlechtes netzwerkdesign
Sehr gut! Diese Erkenntnis ist der erste Schritt zur Lösung Deines Problems!
Geht nur leider nicht anders.
Was ich nicht glaube. Aber leider habe ich wohl weder Deine Motivation noch den Aufbau des Systems richtig verstanden.
[…] "gutes internet" […] nur gegen exorbitante aufpreise […]
Wenn Du Dir also nur „schlechtes“ Internet leisten kannst, ist jedenfalls dafür schlechtes Netzwerkdesign keine tauglich Gegenmaßnahme.
kB schrieb:
[…] mehrere default-Routen […]
Das Backbone Interface ist das Hauptinterface. Die meisten Dienste sollen über dieses Inferface laufen.
Die Interfaces direkt in die Usernetzte bieten nur Datendienste (CIFS/NFS) und gehen über 10GBit
Eines der Interfaces ist ein ein VPN Endpunkt der eine Statische IP bereitgestellt wird. "Aus Gründen" (Kosten, Bandbreite, etc) soll darüber natürlich nur der Traffic gehen, der darüber gehen muss. Ergo hat mein Server mindestens 2 Default Routen. Die übers Backbone um überhaupt normal ins Internet zu kommen (und den VPN Gateway zu erreichen) und dann die Default route über den VPN Uplink.
Das ist jetzt eine ganz andere Aufgabe als beim Eröffnungsbeitrag. Aber auch hier verstehe ich nicht die Erfordernis für zwei (oder gar noch mehr) default-Routen: Du hast Kriterien, welcher IP-Verkehr über Gateway 1 und welcher über Gateway 2 (z.B. VPN, aber VPN oder nicht ist für das Routing unerheblich) ins Internet soll und kannst Deine Kriterien auch irgendwie in iproute2-taugliche Regeln und Routen gießen. Dann benötigst Du für den VPN-Verkehr nur eine dedizierte Route zum Gateway 2, also keine default-Route und für den Rest eine einzige default-Route über Gateway 1.
Die Tables beispiele kommen von einem Versuchsaufbau um das Problem zu isolieren/verstehen.
Ich habe es wohl nicht verstanden.
|
raptor2101
(Themenstarter)
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
kB schrieb: raptor2101 schrieb: […] Da geb ich dir prizipjell recht. Das ist schlechtes netzwerkdesign
Sehr gut! Diese Erkenntnis ist der erste Schritt zur Lösung Deines Problems!
Geht nur leider nicht anders.
Was ich nicht glaube. Aber leider habe ich wohl weder Deine Motivation noch den Aufbau des Systems richtig verstanden.
[…] "gutes internet" […] nur gegen exorbitante aufpreise […]
Wenn Du Dir also nur „schlechtes“ Internet leisten kannst, ist jedenfalls dafür schlechtes Netzwerkdesign keine tauglich Gegenmaßnahme.
kB schrieb:
[…] mehrere default-Routen […]
Das Backbone Interface ist das Hauptinterface. Die meisten Dienste sollen über dieses Inferface laufen.
Die Interfaces direkt in die Usernetzte bieten nur Datendienste (CIFS/NFS) und gehen über 10GBit
Eines der Interfaces ist ein ein VPN Endpunkt der eine Statische IP bereitgestellt wird. "Aus Gründen" (Kosten, Bandbreite, etc) soll darüber natürlich nur der Traffic gehen, der darüber gehen muss. Ergo hat mein Server mindestens 2 Default Routen. Die übers Backbone um überhaupt normal ins Internet zu kommen (und den VPN Gateway zu erreichen) und dann die Default route über den VPN Uplink.
Das ist jetzt eine ganz andere Aufgabe als beim Eröffnungsbeitrag. Aber auch hier verstehe ich nicht die Erfordernis für zwei (oder gar noch mehr) default-Routen: Du hast Kriterien, welcher IP-Verkehr über Gateway 1 und welcher über Gateway 2 (z.B. VPN, aber VPN oder nicht ist für das Routing unerheblich) ins Internet soll und kannst Deine Kriterien auch irgendwie in iproute2-taugliche Regeln und Routen gießen. Dann benötigst Du für den VPN-Verkehr nur eine dedizierte Route zum Gateway 2, also keine default-Route und für den Rest eine einzige default-Route über Gateway 1.
Die Tables beispiele kommen von einem Versuchsaufbau um das Problem zu isolieren/verstehen.
Vereinfachen wir es um uns die Grundsatzdiskussion über "schlechtes Netzdesign"/"schlechtes internet" zu ersparen. Fokus auf den Server der 2 Uplinks hat.
Einfache Aufgabe: Annahme von SSH Verbindung (oder wenn ssh nicht passt, dann IMAP,SMTP oder einfach ICMP/PING) über das VPN Interface von jedem beliebigen Adresse. Einfacher ausgehender verkehr vom Server selbst, soll über das Backbone Interface gehen. wie gesagt mit ip route/rule voodoo geht das, die frage ist nur ob es einfacher geht. (ohne in weitere Hardware zu investieren oder gar den Wohnsitz zu ändern)
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
Wie viel WAN Verbindungen haben wir denn? Effektiv endet ein Multi Uplink Routing immer in Special Magic, weil man halt asymetrisches Routing vermeiden muss (haben die Provider was dagegen) und gleichzeitig ein Verfahren erforderlich ist mit welchem die Pakete auf die Interfaces verteilt werden müssen. Subnets bekommt man von keinem Provider, nen IP Range gerne und einfach, aber keine weiteren Subnets. Das ist alles dein Problem und mit nem sauberen Netz abbildbar. Das ist auch der Grund warum man Netze auf Seite von Server und Clients einfach hält, die Magic macht dann meist eine zentrale Firewall oder Router auf welcher die unterschiedliche Netze und WANs terminieren. mfg Stefan
|
raptor2101
(Themenstarter)
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
encbladexp schrieb: Wie viel WAN Verbindungen haben wir denn? Effektiv endet ein Multi Uplink Routing immer in Special Magic, weil man halt asymetrisches Routing vermeiden muss (haben die Provider was dagegen) und gleichzeitig ein Verfahren erforderlich ist mit welchem die Pakete auf die Interfaces verteilt werden müssen.
ich werte das als ein "nein es gibt keinen einfachen schalter" encbladexp schrieb: Subnets bekommt man von keinem Provider, nen IP Range gerne und einfach, aber keine weiteren Subnets. Das ist alles dein Problem und mit nem sauberen Netz abbildbar. Das ist auch der Grund warum man Netze auf Seite von Server und Clients einfach hält, die Magic macht dann meist eine zentrale Firewall oder Router auf welcher die unterschiedliche Netze und WANs terminieren.
Das mag sein, mir steht aber gerade nicht genug Geld zur Verfügung um alle Router durch Modelle zu ersetzten die auch 10GBit routen können. Das OpenVPN auf den GateWay-Router zu verschieben ist aktuell noch keine Option (Technisch möglich, aber komplizierter als das "ip route/rule vodoo") BTW: was ist für dich der unterschied zwischen einem Subnetz und einer IP Range? Ist eine /29 IPv4 Netz (bzw ein /48 IPv6) für dich ein Subnetz?
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 8628
Wohnort: Münster
|
raptor2101 schrieb: […] Server der 2 Uplinks hat.
Einfache Aufgabe: Annahme von SSH Verbindung (oder wenn ssh nicht passt, dann IMAP,SMTP oder einfach ICMP/PING) über das VPN Interface von jedem beliebigen Adresse. Einfacher ausgehender verkehr vom Server selbst, soll über das Backbone Interface gehen.
Das ist die entscheidende Information, die mir bisher zum Verständnis fehlte! Der Server soll also von jeder IP-Adresse sowohl über Interface-1 wie auch über Interface-2 erreichbar sein und natürlich über das Interface antworten, über welches die Anfrage einlief?
wie gesagt mit ip route/rule voodoo geht das, die frage ist nur ob es einfacher geht.
Nein, bei dieser Aufgabenstellung lande ich auch bei Deiner Lösung. Für weit entfernte Clients sollte das problemlos funktionieren. Für nahe Clients (solche, die der Server selber auf einem seiner Links sieht) könnte es Probleme geben, wenn ein solcher Client den Server mal über Interface-1, danach über Interface-2 erreicht, da dann ARP-Einträge im Cache auf das falsche Interface zeigen. Der Kernel Parameter net.ipv4.conf.*.arp_filter (Der Stern steht für all , default oder ein Interface.) könnte helfen. Denke auch nach über RPF (reverse path forwarding nach RFC 3704). Dieses verwirft IP-Pakete, wenn sie über das falsche Interface eintreffen. Der passende Kernel Parameter ist net.ipv4.conf.*.rp_filter .
|
raptor2101
(Themenstarter)
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
kB schrieb: raptor2101 schrieb: […] Server der 2 Uplinks hat.
Einfache Aufgabe: Annahme von SSH Verbindung (oder wenn ssh nicht passt, dann IMAP,SMTP oder einfach ICMP/PING) über das VPN Interface von jedem beliebigen Adresse. Einfacher ausgehender verkehr vom Server selbst, soll über das Backbone Interface gehen.
Das ist die entscheidende Information, die mir bisher zum Verständnis fehlte! Der Server soll also von jeder IP-Adresse sowohl über Interface-1 wie auch über Interface-2 erreichbar sein und natürlich über das Interface antworten, über welches die Anfrage einlief?
wie gesagt mit ip route/rule voodoo geht das, die frage ist nur ob es einfacher geht.
Nein, bei dieser Aufgabenstellung lande ich auch bei Deiner Lösung.
Das hatte ich versucht mit den beiden Eingangspostings klar zu machen ☺ kB schrieb: Für weit entfernte Clients sollte das problemlos funktionieren. Für nahe Clients (solche, die der Server selber auf einem seiner Links sieht) könnte es Probleme geben, wenn ein solcher Client den Server mal über Interface-1, danach über Interface-2 erreicht, da dann ARP-Einträge im Cache auf das falsche Interface zeigen. Der Kernel Parameter net.ipv4.conf.*.arp_filter (Der Stern steht für all , default oder ein Interface.) könnte helfen. Denke auch nach über RPF (reverse path forwarding nach RFC 3704). Dieses verwirft IP-Pakete, wenn sie über das falsche Interface eintreffen. Der passende Kernel Parameter ist net.ipv4.conf.*.rp_filter .
Den rp_filter kannte ich, an dem rumzufingern ist aber leider keine Option, auf die Clients habe ich nur bedingt (Darf ins netz/darf nicht) administrativen Zugriff ...
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
raptor2101 schrieb: Das mag sein, mir steht aber gerade nicht genug Geld zur Verfügung um alle Router durch Modelle zu ersetzten die auch 10GBit routen können.
Desktop PC mit 10 GbE Ethernet Karte reicht da, Switches mit SFP+ Interface bekommt man auch günstig auf eBay.
BTW: was ist für dich der unterschied zwischen einem Subnetz und einer IP Range? Ist eine /29 IPv4 Netz (bzw ein /48 IPv6) für dich ein Subnetz?
Deine Wortwahl lies mich annehmen das du mehrere Subnets von einem Provider haben möchtest, das macht quasi niemand. Die geben die alle ein v4 Netz und v6 Prefix und gut ist. Die anderen Sachen von kB solltest du beachten, vor allem RPF und andere Sachen die mit asymetrischem Routing zu tun haben sind Tricky. Gängig ist es auch interne Router und externe Router zu trennen, das macht auch auf den Aufbau einer DMZ oder verschiedener Security Zones einfacher. mfg Stefan
|
raptor2101
(Themenstarter)
Anmeldungsdatum: 8. Juni 2009
Beiträge: 1249
Wohnort: Stuttgart, Deutschland
|
encbladexp schrieb: raptor2101 schrieb: Das mag sein, mir steht aber gerade nicht genug Geld zur Verfügung um alle Router durch Modelle zu ersetzten die auch 10GBit routen können.
Desktop PC mit 10 GbE Ethernet Karte reicht da, Switches mit SFP+ Interface bekommt man auch günstig auf eBay.
Die bekommt man so schlecht in einen IT Schrank und schlucken Strom wie sau (die Desktops). Davon abgesehen müssen sie (Switches und "Router") hier in das Öko-System (Ubiquity/Unifi) passen.
BTW: was ist für dich der unterschied zwischen einem Subnetz und einer IP Range? Ist eine /29 IPv4 Netz (bzw ein /48 IPv6) für dich ein Subnetz?
Deine Wortwahl lies mich annehmen das du mehrere Subnets von einem Provider haben möchtest, das macht quasi niemand. Die geben die alle ein v4 Netz und v6 Prefix und gut ist.
Also in einer perfekten Welt schon. Ein eigenes Public /8 IPv4 Netz wär schon ... schön (oder oversized). Aber die /8 Besitzer wollen ja nicht verkaufen (bzw kann ich es mir nicht leisten) 😀
Die anderen Sachen von kB solltest du beachten, vor allem RPF und andere Sachen die mit asymetrischem Routing zu tun haben sind Tricky. Gängig ist es auch interne Router und externe Router zu trennen, das macht auch auf den Aufbau einer DMZ oder verschiedener Security Zones einfacher.
Von da komme ich. Viele Router, mehr Subnetze als ich finger an der Hand hab und OSPF im Einsatz. Das baue ich gerade zurück. Ziel ist ein (in Zahl 1) Router zu haben. Einfaches Deployment/Verwaltung und geringere Fehlerquote ist die Motivation.
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
raptor2101 schrieb: Die bekommt man so schlecht in einen IT Schrank und schlucken Strom wie sau (die Desktops).
Eine Professionelle Firewall braucht kaum weniger als ein Desktop ohne Grafikkarte. Die Hardwareplattform ist meist die selbe, typische SOHO Sophos Firewalls sind auch nur 0815 Intel Technik als Beispiel.
Davon abgesehen müssen sie (Switches und "Router") hier in das Öko-System (Ubiquity/Unifi) passen.
Die Unify gibt es mit SFP+ 😉
Also in einer perfekten Welt schon. Ein eigenes Public /8 IPv4 Netz wär schon ... schön (oder oversized). Aber die /8 Besitzer wollen ja nicht verkaufen (bzw kann ich es mir nicht leisten) 😀
Die /8 gab es früher mal, das war mit der größte Fehler den man jemals gemacht hat. Ein /28 oder /29 bekommt man aber zu einem Business Anschluss, selbst bei der <1000€/Monat Klasse oft mit dazu als Option.
Ziel ist ein (in Zahl 1) Router zu haben. Einfaches Deployment/Verwaltung und geringere Fehlerquote ist die Motivation.
Dann muss der halt vom Traffic her alles packen, und braucht eine entsprechend komplexe Konfiguration wenn man mehrere WAN Verbindungen nicht nur als Failover haben will. mfg Stefan
|