# 3 netzwerkkarten im system, aber alles laeuft ueber eine?

## pieter_parker

pc1

eth0 192.168.0.20 3com [mac 00:04:75:B0:7C:B1]

eth1 192.168.0.21 onboard realtek1

eth2 192.168.0.22 onboard realtek2

pc2

```

arping -c1 192.168.0.20 ; arping -c1 192.168.0.21 ; arping -c1 192.168.0.22

ARPING 192.168.0.20 from 192.168.0.4 eth0

Unicast reply from 192.168.0.20 [00:04:75:B0:7C:B1]  0.729ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

ARPING 192.168.0.21 from 192.168.0.4 eth0

Unicast reply from 192.168.0.21 [00:04:75:B0:7C:B1]  0.732ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

ARPING 192.168.0.22 from 192.168.0.4 eth0

Unicast reply from 192.168.0.22 [00:04:75:B0:7C:B1]  0.730ms

Sent 1 probes (1 broadcast(s))

Received 1 response(s)

```

warum hab ich bei 192.168.0.21 und 192.168.0.22 die gleiche mac wie sie bei 192.168.0.20 ist ?

:edit

route -n an pc1

```

route -n

Kernel IP Routentabelle

Ziel            Router          Genmask         Flags Metric Ref    Use Iface

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2

127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo

0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

0.0.0.0         192.168.0.1     0.0.0.0         UG    1      0        0 eth1

0.0.0.0         192.168.0.1     0.0.0.0         UG    2      0        0 eth2

```

:edit

hab mich ueber ein 2tes fesnter auf pc1 eingelogt und "/etc/init.d/net.eth0 stop ; sleep 25 ; /etc/init.d/net.eth0 start" gemacht

dann erneut arping -c1 192.168.0.21 und arping -c1 192.168.0.22

bei beiden sehe ich die mac von eth1 von pc1 an pc2

nach dem eth0 wieder oben war, habe ich an pc2 immer noch die mac von eth1 von pc1 gesehen

```

route -n

Kernel IP Routentabelle

Ziel            Router          Genmask         Flags Metric Ref    Use Iface

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo

0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

0.0.0.0         192.168.0.1     0.0.0.0         UG    1      0        0 eth1

0.0.0.0         192.168.0.1     0.0.0.0         UG    2      0        0 eth2

```

Last edited by pieter_parker on Mon Apr 21, 2008 8:58 pm; edited 2 times in total

----------

## c_m

weil mehrere default routen nicht gehen.

Das System wird sich für eine entscheiden und diese nutzen.

Vllt solltest du dir mal das Thema bonding ansehen. Da gibts auch verschiedene Methoden zur Lastverteilung.

//EDIT: wenn mich meine routing Kenntnisse nicht ganz im Stich lassen sollte dir die Spalte Metric anzeigen, welche prioritäten deine verschiedenen Defaultrouten bekommen haben. Iirc ist der tiefste Wert der favorisierte.

----------

## ChrisJumper

 *pieter_parker wrote:*   

> pc1
> 
> eth0 192.168.0.20 3com [mac 00:04:75:B0:7C:B1]
> 
> eth1 192.168.0.21 onboard realtek1
> ...

 

Hi pieter_parker!

Also für mich wirkt das so aus als hast du einfach mehrere Alias-Netzwerkinterfaces mit einer Karte erzeugt, die unterschiedliche IP-Adressen bekommen haben, daher haben sie dann die selbe Mac-Adresse. Wie schauen denn die einzelnen Schnittstellen mit ifconfig aus?

----------

## pieter_parker

das mit dem bonding werde ich mir ansehen

hier erstmal das was ifconfig anzeigt

```

ifconfig

eth0      Protokoll:Ethernet  Hardware Adresse 00:04:75:B0:7C:B1

          inet Adresse:192.168.0.20  Bcast:192.168.0.255  Maske:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:97912 errors:0 dropped:0 overruns:0 frame:0

          TX packets:90922 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000

          RX bytes:81552702 (77.7 Mb)  TX bytes:14729645 (14.0 Mb)

          Interrupt:19 Basisadresse:0xc000

eth1      Protokoll:Ethernet  Hardware Adresse 00:1D:7D:05:FA:F3

          inet Adresse:192.168.0.21  Bcast:192.168.0.255  Maske:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:17 errors:0 dropped:32411499 overruns:0 frame:0

          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000

          RX bytes:3020 (2.9 Kb)  TX bytes:120 (120.0 b)

          Interrupt:16 Basisadresse:0xe000

eth2      Protokoll:Ethernet  Hardware Adresse 00:1D:7D:05:FA:F4

          inet Adresse:192.168.0.22  Bcast:192.168.0.255  Maske:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:15 errors:0 dropped:3909290382 overruns:0 frame:0

          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000

          RX bytes:2900 (2.8 Kb)  TX bytes:120 (120.0 b)

          Interrupt:17

lo        Protokoll:Lokale Schleife

          inet Adresse:127.0.0.1  Maske:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:2 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:0

          RX bytes:100 (100.0 b)  TX bytes:100 (100.0 b)

```

wenn alles ueber eth0 rausgeht, ist das unpraktisch, denn das ist nur eine 100mbit netzwerkkarte, eth1 und eth2 sind 1000mbit karten

das was ueber eth0 reinkommt, soll ueber eth0 rausgehen

das was ueber eth1 reinkommt, soll ueber eth1 rausgehen

und was ueber eth2 reinkommt, soll ueber eth2 rausgehen

----------

## Christoph Schnauß

 *ChrisJumper wrote:*   

> Also für mich wirkt das so aus als hast du einfach mehrere Alias-Netzwerkinterfaces mit einer Karte erzeugt, die unterschiedliche IP-Adressen bekommen haben, daher haben sie dann die selbe Mac-Adresse.

 Nein, das ist nicht so. Aliase würden ihm, wenn überhaupt, mit

```
eth0:1

eth0:2
```

angezeigt werden. Aber "ifconfig" zeigt seit einiger Zeit Aliase eh nicht mehr an (übrigens: seit wann genau?). Wenn man die einrichten, wirkungsvoll handhaben und kontrollieren möchte, muß iproute2 installiert sein und der Anzeigebefehl kann dann eventuell

```
ip addr
```

lauten.

Siehe mein Thread weiter unten: https://forums.gentoo.org/viewtopic-t-689069.html

----------

## TheSmallOne

Hast du auch das Forwarding deaktiviert?

----------

## DarKRaveR

Was Du willst ist ein Source based policy routing. Damit kannst Du per Interface (IP) ein default gate setzen.

Sowas ist für Server praktisch, bei ausgehenden Vrbindungen greift das nur, wenn die Verbindung an eine der IPs spezifisch gebunden wird.

----------

## pieter_parker

wie funktioniert das?

bei google finde ich nichts brauchbares auf deutsch dazu, und bei dem englischen verstehe ich noch weniger

----------

## DarKRaveR

Linux Advanced Routing Howto http://lartc.org/howto/

wenn es keine Deutsche Übersetzung gibt, frage Babelfish, vielleicht lässt sich das kauderwelsch irgendwie auseinandernehmen ....

Ansonsten eben die iproute2 doku, vielleicht gibt es die ja auf Deutsch?

----------

## pieter_parker

```

ip route list

192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.20

192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.21

192.168.0.0/24 dev eth2  proto kernel  scope link  src 192.168.0.22

127.0.0.0/8 dev lo  scope link

default via 192.168.0.1 dev eth0

default via 192.168.0.1 dev eth1  metric 1

default via 192.168.0.1 dev eth2  metric 2

```

```

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo

2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop

    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff

3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:04:75:b0:7C:b1 brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.20/24 brd 192.168.0.255 scope global eth0

4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:1d:7d:05:fa:f3 brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.21/24 brd 192.168.0.255 scope global eth1

5: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:1d:7d:05:fa:F4brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.22/24 brd 192.168.0.255 scope global eth2

6: tunl0: <NOARP> mtu 1480 qdisc noop

    link/ipip 0.0.0.0 brd 0.0.0.0

7: gre0: <NOARP> mtu 1476 qdisc noop

    link/gre 0.0.0.0 brd 0.0.0.0

```

sieht sehr danach aus das alles ueber die langsammere 100mbit netzwerkarte eth0 rausgeht

----------

## DarKRaveR

Hummm, es nutzt auch nichts, wenn DU zar eien route je Interface setzt un diese alle im gleichen Netz sind, da wird wohl die ohne metric(mit der niedrigsten metric) genommen ... und zwar immer.

Ich sage ja policy routing:

```
ip rule help
```

Lege eine Routing Table je interface an, dann kannst du auch je interface ein default gate setzen und anhand der quelladrese die pakete in unterschiedliche Tabellen stopfen.

----------

## pieter_parker

```

ip rule add from 192.168.0.120 table 100

ip route add 192.168.0.0/24 dev eth0 src 192.168.0.20 table 100

ip route add default via 192.168.0.101 dev eth0 table 100

ip rule add from 192.168.0.121 table 101

ip route add 192.168.0.0/24 dev eth1 src 192.168.0.21 table 101

ip route add default via 192.168.0.101 dev eth1 table 101

ip rule add from 192.168.0.122 table 102

ip route add 192.168.0.0/24 dev eth2 src 192.168.0.22 table 102

ip route add default via 192.168.0.101 dev eth2 table 102

```

wie baue ich das in die net datei in /etc/conf.d/ ein so das ich eth0 bis eth2 ueber /etc/init.d/net.eth0 bist .eth2 starten, stopen und restarten kann ?

----------

## DarKRaveR

indem Du bei routes_device ein array übergibst, was aber nicht Posix-konform ist udn verschwinden soll, ebenso wie das direkte übergeben von Parametern an iproute2.

Ich weiß zwar nicht, wer auf eine derart dämliche Idee kommt, ohne zeitgleich die komplette API von iproute 2 zu exportieren - aber seis drum.

Den Rest dann in nem Postup script (die rules zum Beispiel). Im Prinzip könntest Du auch alles in ein postup script packen, ob das wiederum sachdienlich ist, sei mal dahingestellt.

Ich habe es zum Beispiel so gemacht:

 *Quote:*   

> 
> 
> routes_realtek=("Network dev realtek src InterfaceIP table realtek"
> 
> 		"default via GatewayIP dev realtek src InterfaceIP table realtek")
> ...

 

Aber wie gesagt, das ist total deprecated, weil irgendein dev einen Anfall hatte und meinte, man müsse das in Zukunft anders machen   :Very Happy:  .

----------

## pieter_parker

ich versteh das nicht .. warum sind das bei dir nur 2 zeilen wo es doch bei mir 3 zeilen sind ? wie muss das bei mir aussehen ?

----------

## DarKRaveR

Da Du nur die routes (das was an IP route geht) dort setzen kannstr, mußt Du die Rules eben immernoch getrennt setzen. Ich zumindest hatte nichts passendes in der Doku fürs Baselayout gefunden und dann einfach nen mini postup() script angefügt.

----------

## pieter_parker

hab die 3 zeilen zu den jeweiligen karten in einer script datei stehen, wie kann ich diese automatisch beim booten aufrufen und ausfuehren lassen ?

----------

## DarKRaveR

Deine /etc/conf.d/net ist eine Scriptdatei, diese wird im Prinzip gesourced, dort kannst Du eine Funktion postup definieren.

 *Quote:*   

> 
> 
> postup(){
> 
>         eval testing=\$config_${IFACE}
> ...

 

So sieht die Quick&Dirty Version bei mir aus. Hole Dir die Config vom Interface, strip die CIDR Netzwerklänge, setze rule, wobei bei mir die Tables die Namen der Interfaces tragen, der Einfachheit halber.

----------

## pieter_parker

ja, aber ne .. wie kann ich eine script datei beim booten ausfuehren lassen?

----------

## DarKRaveR

Okay, auch hier nochmal: vermutlich suchst Du /etc/conf.d/start.local

----------

## pieter_parker

andersrum, local.start  :D

----------

## pieter_parker

ich will die ip 192.168.0.99 ansprechen und will das die verbindung ueber eth2 raus geht, wie funktioniert das ? wem muss ich was wo und wie sagen ?

----------

## Finswimmer

 *pieter_parker wrote:*   

> ich will die ip 192.168.0.99 ansprechen und will das die verbindung ueber eth2 raus geht, wie funktioniert das ? wem muss ich was wo und wie sagen ?

 

*Sollte* doch über den Befehl "route" gehen. 

Zumindest kannst du da default Routen einstellen, ob es dann aber auch nur auf eine spezielle IP Regeln gibt, weiß ich nicht.

Darf man fragen, warum du dir überhaupt 3 Karten einbaust?

Tobi

----------

## pieter_parker

die beiden onboard karten machen noch probleme

route add 192.168.0.99 dev eth2

bringt keine veraenderung...

----------

