Mehrere Netzwerkkarten mit der gleichen IP

DaSilva

Registered User
In meinem Server sind drei Netzwerkkarten eingebaut.
Da er eine fest vorgegeben IP bekommt möchte ich, dass es egal ist in welche der drei Netzwerkkarten das Kabel eingesteckt wird.
Es soll also möglich sein das Netzwerkkabel in eine beliebige Netzwerkkarte zu stecken und den Server trotzdem immer über die gleiche IP anzusprechen.
Meine bisherige interfaces Datei sieht so aus:

Code:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
#iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
	address 192.168.0.29
	gateway 192.168.0.1
	broadcast 192.168.0.255
	netmask 255.255.255.0

auto eth1
iface eth1 inet static
	address 192.168.0.29
	gateway 192.168.0.1
	broadcast 192.168.0.255
	netmask 255.255.255.0
	
auto eth2
iface eth2 inet static
	address 192.168.0.29
	gateway 192.168.0.1
	broadcast 192.168.0.255
	netmask 255.255.255.0

iface lo inet static
	address 127.0.0.1
	netmask 255.255.255.0
	broadcast 127.0.0.255
	network 127.0.0.0

Damit habe ich mal testweise das Kabel statt in eth0 in eth2 gesteckt.
Leider konnte ich mich dann aber nicht verbinden.
Was muss noch geändert werden?
Danke.
 
ich schätze, das dein Server immer noch versucht, die Pakete über eth0 zu verschicken. Herausfinden kannst du das mit dem Kommando "route".

Folgender link dürfte für dich hilfreich sein:
Debian Reference - Network configuration

unter Punkt 10.6.1.1 mal schauen, das könnte auf deine Situation passen

MfG Jens
 
Last edited by a moderator:
Informier dich mal über Bonding.
Würde zwar ausm Bauch heraus sagen, deine Variante hätte funktionieren müssen, wenn die Static Routes korrekt sind. Aber mit den Umweg über Bonding sollte es funktionieren.

Edit:
Wie ich eben sehen durfte, brauchst du uns ja eh nicht mehr. Suchst dir ja bereits woanders Hilfe: Mehrere Netzwerkkarten mit der gleichen IP - linuxforen.de -- User helfen Usern
Danke für den Crosspost :rolleyes:
 
Last edited by a moderator:
Mal eine blöde Frage: Wozu braucht man drei Netzwerkkarten? Ich hab das schon öfters gelesen, aber ich komm nicht dahinter.
 
Das klappt trotzdem irgendwie nur mit eth0.
Da kann ich sogar das Kabel rausziehen und wieder reinstecken und der merkt das.
Starte ich neu und habe das Kabel in eth1 oder eth2 ist der Server trotzdem nicht erreichbar.
ifconfig zeigt aber alle drei interfaces richtig an.

@Clickmaster: Ich brauche eigentlich nur eine Netzwerkkarte, der Server hat aber eifnach drei eingebaut!
 
@Clickmaster: Ich brauche eigentlich nur eine Netzwerkkarte, der Server hat aber eifnach drei eingebaut!

Dann würd ich einfach auf 2 pfeifen, sie potentiell sogar deaktivieren, als Lösungen für Probleme zu suchen, die gar keine sind!
 
Die Routing-Table wird von oben nach unten abgearbeitet. Die erste Route, die passt wird genommen und fertig. Es gibt kein Fallback.
Wenn also alle drei Interfaces up sind, greift die erste Route (eth0) und die anderen sind völlig egal.
Es kann also prinzipiell nicht gehen, wenn einfach nur drei Interfaces identisch konfiguriert sind.
 
Das geht und ist sogar ganz einfach. Du suchst nach einer brigde. Microsoft nennt das Netzwerkbrücke.
Jede Netzwerkkarte hat immer noch eine eigene MAC.

Zufälligerweise habe ich auch 3 NICs und damit klappt es wunderbar. Du solltest aber nur eine Netzwerkkarte an ein Switch anschließen. Es müsste ansonsten einen IP-Adressenkonflikt geben oder einen Loop. Ich kenn mich nicht besonders in Netzwerktechnik aus, finde aber des Thema sehr interessant.

Wenn du nun z.B. mit einem SSH-Client verbunden bist und ziehst das Kabel aus eth0 raus und steckst es z.B. in eth2, kannst du nach kurzer Zeit ganz normal weiterarbeiten (wenn kein Timeout kommt). Sämtlicher Verkehr wird über die Brigde geleitet.

Zuerst musst du unter Debian bridge-utils installieren. Dein Kernel muss das auch unterstützen. Wenn du einen Standardkernel verwendest und eine aktuelle Debian-Version, wird auch das Modul automatisch geladen.

Danach bearbeitest du deine /etc/network/interfaces:

Code:
cat /root@kiste:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
    address 192.168.0.200
    netmask 255.255.255.0
    gateway 192.168.0.1
    bridge_ports all

Code:
root@kiste:~# ifconfig
br0       Link encap:Ethernet  Hardware Adresse 00:0e:0c:33:bb:be
          inet Adresse:192.168.0.200  Bcast:192.168.0.255  Maske:255.255.255.0
          inet6-Adresse: fe80::20e:cff:fe33:bbbe/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:3795 errors:0 dropped:0 overruns:0 frame:0
          TX packets:953 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0
          RX bytes:746352 (728.8 KiB)  TX bytes:131872 (128.7 KiB)

eth0      Link encap:Ethernet  Hardware Adresse 00:13:d3:a3:96:8f
          inet6-Adresse: fe80::213:d3ff:fea3:968f/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:379919 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230120 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:435038252 (414.8 MiB)  TX bytes:20082138 (19.1 MiB)
          Interrupt:16

eth1      Link encap:Ethernet  Hardware Adresse 00:0e:0c:33:bb:be
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth2      Link encap:Ethernet  Hardware Adresse 00:13:d3:a3:86:1f
          inet6-Adresse: fe80::213:d3ff:fea3:861f/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:229576 errors:33 dropped:0 overruns:0 frame:17
          TX packets:379795 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:21229108 (20.2 MiB)  TX bytes:436604132 (416.3 MiB)
          Interrupt:22 Basisadresse:0x2000

lo        Link encap:Lokale Schleife
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:16436  Metrik:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Du kannst deine NICs auch mit brctl zum Verbund hinzufügen. Hierzu empfiehlt es sich aber direkt vor dem Server mit Monitor und Taststur zu sitzen. Wenn du Fehler machst, ist die SSH-Verbindung weg ;-)

Benötigt deine Brigde noch eine 2. IP, kannst du diese per ifconfig festlegen:

Code:
ifconfig br0:1 172.16.220.42 netmask 255.255.255.0

(br0:0 geht auch, ist Geschmackssache, wo man anfängt zu zählen)

oder automatisch über /etc/network/interfaces:

Code:
auto br0:1
iface br0:1 inet static
    address 172.16.220.42
    netmask 255.255.255.0

Unter anderem könntest du z.B. auch primär die IP von br0 über einen DHCP-Server beziehen und zusätzlich eine statische IP auf der Brigde einrichten. Das geht außerdem auch bei einzelnen Netzwerkkarten, die nicht in einer bridge sind.
Wenn du Netzwerkkarten bündeln willst, musst du mal Bonding ausprobieren. Dies ist auch recht einfach zu konfigurieren, benötigt aber spezielle Switches (802.3ad). Adaptive load balancing benötigt anscheinend kein spezielles Switch. Getestet habe ich das bis jetzt noch nicht.

Adaptive load balancing
includes balance-tlb plus receive load balancing (rlb) for IPV4 traffic, and does not require any special switch support. The receive load balancing is achieved by ARP negotiation. The bonding driver intercepts the ARP Replies sent by the local system on their way out and overwrites the source hardware address with the unique hardware address of one of the slaves in the bond such that different peers use different hardware addresses for the server.)

Falls du in zwei PCs zwei NICs hast ud die Möglichkeit hast auf beiden Linux zu starten, kannst du dort ja mal Bonding einrichten und dann mit iperf oder netperf den Datendurchsatz vom bond0 testen.

Ich vermute schon fast, dass es mit normaler Hardware leider nicht klappen wird.

PS: Windows ist noch in der Steinzeit und kann von Haus aus kein Bonding (vielleicht Win-Server). Spezielle Netzwerkkarten von Intel können aber per Treiber so konfiguriert werden, dass sie in einem Bond zusammengefasst werden. Leider lässt sich da nicht der Modus einstellen. In Sachen Netzwerktechnik hinkt Windows etwas hinterher.
 
Last edited by a moderator:
Ja, ist mir hinterher eingefallen, dass ich etwas sehr altes ausgekramt haben könnte. Immerhin hab ich hier im Forum eigentlich nach Bonding für Switches gesucht, die 802.3ad nicht unterstützen. Da ich das mit der Brigde erst Montag getestet habe, dachte ich mir, dass ich mal dazu etwas schreibe.
 
Fallstricke war mein Layer2-Switch. Aus dem Grund habe ich auch die beiden PCs mit den Netzwerkkarten direkt miteinander verbunden, um eine höhere Geschwindigkeit zu erzielen. Das ganzen Test hab ich aus reiner Neugierde durchgeführt. Was ich nicht getestet habe, war das FailOver.

Solange einer der beiden Testpcs keine Tastatur und Bildschirm haben, würde ich dir empfehlen wenigstens ein Interface für SSH frei zu halten. Die Konfiguration kannst du dann halt "On-The-Fly" nach belieben ändern. So lernt man auch den Umgang mit dem Befehl besser kennen und sieht direkt was passiert, wenn man Fehler macht. Sobald man aber beide (oder mehr) Netzwerkkarten z.B. im Mode 0 an ein Layer2-Switch anschließt, hat man Weihnachten. Solche Anwendungsfälle treten eher in großen Netzwerken auf. Aber es ist immer gut, das Verfahren zu kennen und zu wissen, dass Linux/BSD eindeutig mehr an Modi unterstützt als Windows. Unter Windows ist es abhängig vom Netzerkkartentreiber.
 
Wenn deine Switche LACP können, würde ich immer Bonding Mode 4 also 802.3ad / LACP.

Funktioniert super, man kann auch VLANs drüber schießen.
 
Back
Top