PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Rechner an einen Port



michas
09.01.04, 23:40
Hallo,

Ich habe hier einen Port eines Switches zur Verfügung und möchte da zwei Rechner ranhängen.
Am Switch hängt der Rest des Netzwerkes. (das für das Problem aber nicht interessant ist.)


A --- B --- Switch

Ich habe auch zwei IP-Adressen zur Verfügung, ich dachte mir also ich hänge Rechner A an Rechner B, und den über eine zweite Netzwerkkarte an den Switch. Ist das soweit sinnvoll?

Wie muss ich jetzt Rechner B einrichten, das er den Traffic A <-> Switch durchlässt?

Kennt jemand ne gute Doku zu dem Thema?

Danke schonmal.
Gruß
- michas

klemens
10.01.04, 01:18
Geht, halte ich aber für aufwendig.

Du solltest für A ein eigenes Netzwerk einrichten und das Routing über B steuern - Das betrifft ALLE Rechner im Netzwerk.

Bei den heutigen Hardwarepreisen empfehle ich da eher: Kauf Dir einen Switch und häng ihn an den freien Port. Und wenn ein Freund mit einem Laptop vorbeischaut, dann hast Reserven. ;)

r2k
10.01.04, 09:04
Bei den heutigen Hardwarepreisen empfehle ich da eher: Kauf Dir einen Switch und häng ihn an den freien Port. Und wenn ein Freund mit einem Laptop vorbeischaut, dann hast Reserven.

Würde ich auch tun, aber vorher abklären ob dies erlaubt ist


Der Di 604 von Dlink ist sehr gut!

michas
10.01.04, 10:05
Original geschrieben von klemens
Geht, halte ich aber für aufwendig.


Wie denn? :)



Du solltest für A ein eigenes Netzwerk einrichten und das Routing über B steuern - Das betrifft ALLE Rechner im Netzwerk.


Bisher hatte ich einfach nen tinyproxy auf dem einen Rechner installiert und zwischen den beiden Rechner ein privates Netzwerk aufgebaut. Das geht zum Installieren übers Netz und ein bischen "surfen" ganz gut, aber zum sinnvoll arbeiten (z.b. ssh) ist es doch etwas umständlich. Da ich aber eh noch ne zweite IP-Adresse verwenden kann, hatte ich eben überlegt ihn etwas direkter mit ins Netz zu hängen.

Gut, auf ARP-Ebene werden es auf jeden Fall wohl zwei Netze bleiben, aber auf IP-Ebene müsste man die doch ganz gut zusammenbekommen:

Rechner A hat B als Gateway, schickt also alle Pakete dorthin.
B liefert Pakete ganz normal aus, wie wenn sie von ihm selbst stammen. (An der Stelle bin ich mir nicht ganz sicher, was ich dazu noch aktivieren muss. (Hat das was mit IP-Forwarding zu tun?))

In der anderen Richtung, müsste B einfach nur auch ARP-Requests für A beantworten.¹
Dann bekommt er wieder die Pakete und liefert sie entsprechend aus.
(¹Da gibts doch bestimmt auch ne Möglichkeit für, oder?)

Als nächster Schritt könnte B dann auch noch ein bischen Firewall für A spielen.

Switch soll wirklich nicht sein.
Auserdem löst es das Problem nicht sondern umgeht es. ;)
Ok, vielleicht ist die Aufgabe etwas "akademisch" aber mir geht es u.a. auch darum bei den ganzen Netzwerk-Innereien (und deren Umsetzung unter Linux) etwas besser durchzublicken.

Deshalb wird brauchbare Doku auch gerne angenommen.

r2k
10.01.04, 10:13
--------------------------------------------------------------------------------
Original geschrieben von klemens
Geht, halte ich aber für aufwendig.

--------------------------------------------------------------------------------



Wie denn?



Du musst das ganze routen und die firewall konfigurieren (Da kann ich dir nicht helfen).

Ich würde spontan sagen, dass für rechner A der Rechner B der DefaultGW ist.

Weiter musst du dem B sagen, dass er alles ins Lan absenden soll, was vom A kommt. Default GW für B ist der Switch/Router
Was du sicher brauchts ist das Komando route



Switch soll wirklich nicht sein.
Auserdem löst es das Problem nicht sondern umgeht es.


Ist mir klar, aber du hast sicher weniger Probleme.

klemens
10.01.04, 11:35
Brauchbare Doku für Dein Vorhaben:
http://www.linuxforen.de/forums/showthread.php?s=&threadid=60561

Das Prinzip ist bei Dir genau das gleiche!
Du musst Rechner A über Rechner B natten. Die 2 Netzwerkkarten in B müssen! 2 verschiedenen Netzen angehören, damit B auch wirklich routen kann.

Wenn noch was unverständlich am Howto ist, meld Dich nochmal.

Bubble
10.01.04, 11:50
Original geschrieben von reto2000

Weiter musst du dem B sagen, dass er alles ins Lan absenden soll, was vom A kommt. Default GW für B ist der Switch/Router
Was du sicher brauchts ist das Komando route


Nein, B braucht kein Default-Gateway! Ein Default-Gateway ist nur dann erforderlich, wenn Pakete in ein Netz gesendet werden sollen, dem der Rechner selbst nicht angehört. B gehört aber beiden Netzen (einmal dem Netz mit A, einmal dem mit den Switch-Rechnern) an. Btw, ein Switch kann niemals ein Default-Gateway sein (zumindest nicht der traditionelle Layer2-Switch, um den es hier wohl geht).
Die entsprechenden Routen werden meist automatisch gesetzt (bspw. bei einem Aufruf von ifconfig).

Das was du eigentlich suchst ist denke ich mal nicht Routing, sondern Bridging. Das läuft auf Layer 2 statt wie Routing auf Layer 3, heißt, es können alle Rechner im selben IP-Netz bleiben.
Bridging einzurichten ist anspruchsvoller als Routing, Anlaufstelle ist auf jeden Fall mal Google (wie immer). Da kann ich dir mangels eigener Erfahrungn nicht viel dazu sagen.

Wenns das Routing tut, bleib bei dem. Auf B muss dann IP-Forwarding aktiviert sein (echo 1 > /proc/sys/net/ipv4/ip_forward) und beide Netzwerkkarten müssen (wie klemens schon sagte) in getrennten Netzen sein.
Bubble

stefan-tiger
10.01.04, 11:59
IMHO müsste es so gehen:

einfach bei rechner B ipforwarding einschalten und den rest so wie du gesagt hast.

gruß

klemens
10.01.04, 14:24
Original geschrieben von stefan-tiger
IMHO müsste es so gehen:

einfach bei rechner B ipforwarding einschalten und den rest so wie du gesagt hast.

gruß

Ich glaub, da geht einiges in der Diskussion durcheinander, bzw. ist unklar.

Michas schreibt, dass der Rechner B den A-Traffik-Switch durchlassen soll, aber das Netz dahinter nicht interessant ist? Irgendwie lese ich aber raus, dass Rechner A ins Internet soll? Also muss hinter B ein Router sein. Einfaches ipforwarding kann dann aber nur funktionieren, wenn auch am Router? hinter B auch die Route zu A eingetragen ist. Wenn das nicht der Fall ist und nicht möglich ist einzurichten, dann kann das IMO nur mit Masquerading kompensiert werden.

@Michas:
Kannst das bitte noch klar stellen, was am Rechner A alles laufen soll und welche Möglichkeiten Du hast auf den Router, wenn vorhanden, hinter B Einfluss zu nehmen.

michas
10.01.04, 15:46
ok, noch ein Bildchen: :)


C
|
A --- B --- S --- G --- I
|
D


S ist ein Switch. An dem hängt ein Gateway zum Internet.
Außerdem hängen noch andere Rechner C und D am Switch.
Alles auf der Switch-Seite des Gateways soll _ein_ Netzwerk sein. (Gleiche Maske und so.)

Das einzige Problem ist, dass ich an einem Port zwei Rechner A und B anschließen möchte.
A soll dabei alles können was z.b. C und D auch kann.

Jeder der Rechner (A,B,C und D) haben eine eigene IP-Adresse.
Wenn ich das Richtig sehe, braucht also B einfach nur die Pakete von A "durchzulassen".
Das scheint per IP-Forward auch machbar zu sein.

Jetzt muß ich B nur noch beibringen, das er auch Pakete für A annehmen (und weiterleiten) soll.


wenn ich das jetzt aber richtig sehe, brauch ich dann für B evt. sogar drei verschiedene IPs?!
Eine für das interface nach A eine für das normale Inteface nach S und evt. noch ne dritte(die gleich der von A ist), damit er Pakete für A annimmt... (ok, jetzt wirds langsam wirr.)

klemens
10.01.04, 15:53
Meiner Meinung nach kommst an masquerading nicht vorbei. Rechner A hängt nicht im selben Netz wie CDG und sollte daher auch nicht so konfiguriert werden.

Jetzt gibts die Möglichkeit Rechner A über B zu routen -> das muss dann aber auch in CDG eingetragen werden oder masquerading durchzuführen, dann scheint Rechner A für CDG als B auf und B kontrolliert das für Rechner A.

Das geht dann wie im Router howto, nur dass die Einträge angepasst werden müssen. (z.B. ppp0 wird dann eth0 oder eth1 sein -> Die NIC zum Switch hin)

Bubble
10.01.04, 16:16
Also wenn dus über Routing machen willst (ohne Masquerading auf B), dann musst du folgendes machen:

B ist für A Default Gateway.
G ist für B, D und C Default Gateway.
Auf C, D und G müssen Routen eingetragen werden, dass Pakete an A nach B geschickt werden (die wirst du manuell eintragen müssen, sonst gehen Pakete an B nach G, siehe dazu man route).
Auf B und G muss IP_FORWARDING aktiviert werden.

Masquerading brauchst du in diesem Fall IMHO nicht, heißt wenn C, D oder G Pakete nach A schicken darf A ruhig den 'originalen' Absender sehen, B muss sich nach keiner Seite zwingend als Absender ausgeben (ausser du willst das so). Natürlich muss Masquerading auf G aktiviert werden.

OK ... hoffe ich hab nichts vergessen, aber versuchs doch einfach mal so. Btw, B braucht keine drei IP-Adressen, sondern nur zwei (eine für jedes Interface). Wenn auf dem Interface ins Switch-Netz Pakete für A reinkommen, weiß er automatisch wohin diese gehen, dazu haben wir ja IP_FORWARDING aktiviert.

Aber mal ganz ehrlich: Wenn du B als Bridge konfigurieren könntest, wäre das für diesen Fall meiner Ansicht nach die eleganteste Lösung. Dann sind A, B, C, D und G im selben logischen Netz, und B ist quasi sowas wie ein Switch. Es gab mal einen Artikel in der c't darüber, also würde ich mal diesen Ansatz probieren. Ist aufwendiger, aber designtechnisch in diesem Fall eleganter. Warum scheidet ein zweiter Switch/Hub in diesem Fall eigentlich aus?
Bubble

michas
10.01.04, 22:53
Danke an alle die versucht haben zu helfen.

Das richtige Stichwort lautet Proxy-ARP.
Sehr lesenswerte Infos gibts unter lartc.org und im iproute2 howto.

nochmal danke an alle
- michas

Thallez
11.01.04, 23:47
warum soviel aufwand mit den routen brigde doch einfach die netzwerkkarten

wenn a 2 Netztwerkkarten hat die gebrigde sind lassen sie alles durch und du brauchst keinen router das es sich um ein Layer 2 device nach osi handelt