Routing Probleme

shamanu

Member
hi,
zuerst ein paar daten:

System:
OpenBSD 3.5
3 NIC's
als firewall, proxy usw. gedacht. internet verbindung und ähnliches läuft über externes gateway. ist also reines netzwerk/routing problem.

der Server zeigt folgendes verhalten:
hardwaremäßig scheint alles ok zu sein. der server kann (über eine einzige karte) hinaus pingen und angepingt werden.
(mit über eine einzige karte meine ich: aktuell zu pingende karte hat per hostname.xxx eine fixe ip erhalten. die restlichen 2 karten haben jedoch nur ein "up" in ihrer hostname.xxx)

vergebe ich jedoch an alle 3 karten eine ip, zb:
192.168.0.2 255.255.255.0
192.168.0.3 255.255.255.0
192.168.0.4 255.255.255.0

so ist immer nur eine anpingbar (und kann hinaus pingen).
die anderen zwei scheinen wie tod. (laut ifconfig -a sind sie jedoch up und active)
openbsd erhält sogar die arp msgs beim pingen auf eine "tote" karte.

ist das ein routing problem? wenn ja, wie ist es zu lößen?

ach ja: wenn ich eine bridge aufsetzte läuft das ganze system netzwerkmäßig.
(alle karten sind pingbar)
zu mir hat man jedoch gesagt das sollte man nicht machen, für meine zwecke...

pf ist natürlich abgeschalten
 
Das das Routing nicht Funktionieren kann, wenn du deinen Karten im Subnetz 192.168.0.0/24 Adressen von 192.168.0.2-4 gibst, ist ganz klar. Du brauchst verschiedene Netze, zb. 192.168.0.x, 192.168.1.x, 192.168.2.x usw.

Für diese setze dann via route Routing-Einträge.

Anderer Lösungsansatz: Ist ipv4-Forwarding aktiviert? (man sysctl).

Ich hoffe, das hilft dir weiter,
cdp_xe.
 
Zuletzt bearbeitet:
Wen du nicht soviel IPs vergeben wilst, kanst du die Nets kleiner machen, und dan 192.168.0.0 - 192.168.0.8 - 192.168.0.16 nehmen oder so
 
oder mach ne bridge aus den drei NICs und gib einer davon ne ip..

ansonsten: du kannst nicht mehrere NICs im selben netzwerk (subnet) haben.

auf bald
oenone
 
@shamanu

Mehrere Interfaces in einem "Netz" verstoßen gegen die TCP/IP Konvention nach RFC.
Wie sollte Dein System auch wissen, über welches Interface es z.B. 192.168.0.7 erreichen kann? Sollte es dann alle 3 Interfaces benutzen oder per Zufall auswählen????????
Wie bereits erwähnt solltest Du dazu Subnetze anlegen und betreiben.

Gruß,

Ice
 
hier mal ein link zum thema bridge, sogar mit beispiel:
http://openbsd.org/faq/faq6.html#Bridge

ich hab z.b. daheim auf meinem OpenBSD rechner ne bridge aus zwei NICs erstellt...
auf der einen seite laufen 10MBit/s, auf der anderen 100MBit/s :) so kann ich zum einen netz schneller die daten versenden und ausserdem spare ich so einen port am HUB.

auf bald
oenone
 
Danke einmal für die vielen schnellen antworten. :)

cdp_xe schrieb:
Du brauchst verschiedene Netze, zb. 192.168.0.x, 192.168.1.x, 192.168.2.x usw.
Anderer Lösungsansatz: Ist ipv4-Forwarding aktiviert? (man sysctl).
die sache mit den verschiedenen netzen klingt gut.
werde es morgen testen.
ip4 forwarding ist auf 1. danke.

oenone schrieb:
oder mach ne bridge aus den drei NICs und gib einer davon ne ip..
eine bridge wäre in dem fall für mich verwatlungsmäßig besser.
ich hatte bereits einen 3.4 er mit bridge für einige zeit am laufen.
aber mit pf und filterung scheint das bei einer bridge nicht so 100pro einfach/flexibel zu sein.??
(auf openbsd.org empfehlen sie ja zb bei einer bridge nur an einer karte ports zu filtern.)
 
Ice schrieb:
Wie sollte Dein System auch wissen, über welches Interface es z.B. 192.168.0.7 erreichen kann? Sollte es dann alle 3 Interfaces benutzen oder per Zufall auswählen????????

hehe, also ich dachte das er über alle 3 interfaces sendet. (bei einem ping)
ein hub verwendet ja auch so etwas wie eine "streu technik".
in dem fall wieder etwas neues gelernt :)
 
Ich kenn pf nicht allzu gut aber habe schon mal an einem Zebra rumconfiguriert, aber anhand von der PF docu kann man doch ein Redirect auf mehrer nic's machen, wäre das vielleicht ein anderer anstz aber möglich, oder?
 
shamanu schrieb:
hehe, also ich dachte das er über alle 3 interfaces sendet. (bei einem ping)
ein hub verwendet ja auch so etwas wie eine "streu technik".
in dem fall wieder etwas neues gelernt :)

Achtung, Denkfehleralarm.
Ein Hub verteilt ein Paket von einem Absender an alle Ports, und der Rechner fuer den es bestimmt ist, der antwortet.
Bei Deiner Version (Versand ueber alle 3 interfaces) waeren es drei Pakete von drei verschiedenen Absendern. Genauso wuerde das auch 3 Replies - an jeden Absender einen - erzeugen. Du siehst also den grossen Unterschied.
So wuerde zB aufgrund der Struktur der Routingtabelle der Rechner zwar mit 300mbit empfangen, aber nur mit 100mbit senden koennen - da aller Traffic hinaus in dieses eine Subnet ueber eine Karte geht.
 
Ice schrieb:
@shamanu

Mehrere Interfaces in einem "Netz" verstoßen gegen die TCP/IP Konvention nach RFC.
Wie sollte Dein System auch wissen, über welches Interface es z.B. 192.168.0.7 erreichen kann? Sollte es dann alle 3 Interfaces benutzen oder per Zufall auswählen????????
Ist das dan nicht bonding ?
 
Bonding,Trunking, Link Aggregation, etc [Name variiert je nach Hersteller]:
zwei (oder mehr) physikalische Interfaces zu einem logischen Interface zusammenfuegen.
Sollte beidseitig eingerichtet werden, die Treibergeschichten die dann auf mehreren Netzwerkkarten mit der gleichen MAC senden bringen meist nur die Switche durcheinander (bei Hubs weniger problematisch).
Das Bonding Interface hat eine Adresse (MAC wie auch IP) ueber das es angesprochen wird. Je nach Hersteller wird der Traffic gleichmaessig auf alle Leitungen verteilt oder aber zusaetzliche erst ab einer gewissen Interfaceauslastung zugeschaltet.

Multi-Homed:
Ein Rechner mit mehreren Interfaces mit Adressen in verschiedenen Subnetzen. Problemlos mit "herkoemmlichen" Routingtabellen die rein zielorientiert arbeiten moeglich.


Mehrere Interfaces mit Adressen im gleichen Netz ist moeglich, zB ueber die erweiterten Netzwerkfunktionen unter Linux (die nicht mit ifconfig konfigurierbar sind sondern externe Tools benoetigen). Hierbei hat jedes Interface eine eigene Routingtabelle und die Zuweisung ueber welche Tabelle das Paket abgefertigt wird erfolgt ueber die Quelladresse. Auch als policy routing oder source based routing bekannt.
freeBSD kann dies momentan nicht, wird es aber vmtl zu 5.3 oder 5.4 wenn der CleanUp des TCP Codes fertig ist (ARP aus der Routingtabelle raus etc) auch unterstuetzen.

Die etwas weiter oben gefallene Bemerkung das dies nicht RFC konform ist --- ich weiss nicht. Es ist glaube ich eher "nicht explizit erlaubt, aber auch nicht verboten". Traditionell hatte jedes OS nur eine Routingtabelle und Interfaces waren auch eher selten, weshalb sich diese Frage nicht stellte. Mit mehreren Tabellen und entsprechendem packet processing ist es moeglich dies zu erreichen, so das sich die Interfaces nicht stoeren und die Pakete auch ueber das korrekte Interface den Rechner verlassen.
 
Zuletzt bearbeitet:
Ich wollt grad fragen auf was du hinaus willst :)


Ich sehe gerade erst das ich in der openBSD Sektion gelandet bin..... lalala.
Bei openBSD ist es iirc momentan vom network stack her aehnlich wie bei freeBSD oben beschrieben.
 
Zuletzt bearbeitet:
Policy-based routing geht sowohl mit ipfw, pf und ipfilter. Nur das hier nicht mit hunderttausend versch. Routing-Tabellen gearbeitet wird, sondern direkt der naechste Hop gesetzt wird.
 
Nein, auch ipfw1 (dann aber Kernel mit IPFIREWALL_FORWARD, oder so...)

Aus ipfw(8)
fwd | forward ipaddr[,port]
Change the next-hop on matching packets to ipaddr, which can be
an IP address in dotted quad format or a host name. The search
terminates if this rule matches.
 
Zurück
Oben