mika: Linux Maschine mit 2 Netzwerkkarten

Hi miteinander,

habe folgendes Problem. Ich habe ein kleines Netzwerk. In diesem Netzwerk hängt eine Linuxmaschine mit 2 Netzwerkkarten. Beiden Netzwerkkarten möchte ich eine eigene IP zuweisen. Folgende Config gibts zu sehen:

ipconfig:
---------

eth0      Link encap:Ethernet  HWaddr 00:0B:6A:41:4C:1B
          inet addr:192.168.0.89  Bcast:192.168.0.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27174 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31599 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2548676 (2.4 Mb)  TX bytes:3657191 (3.4 Mb)
          Interrupt:10 Base address:0xd400

eth1      Link encap:Ethernet  HWaddr 00:50:FC:CC:6C:6F
          inet addr:192.168.0.76  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7732 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:645131 (630.0 Kb)  TX bytes:3892 (3.8 Kb)
          Interrupt:10 Base address:0xf00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:142 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:14901 (14.5 Kb)  TX bytes:14901 (14.5 Kb)

Folgende Files sind angelegt:

/etc/sysconfig/network-scripts/ifconfig-eth0:
---------------------------------------------
ONBOOT=yes
SERVICE=static
IP=192.168.0.89
NETMASK=255.255.255.0
BROADCAST=192.168.0.255

/etc/sysconfig/network-scripts/ifconfig-eth1:
---------------------------------------------
ONBOOT=yes
SERVICE=static
IP=192.168.0.76
NETMASK=255.255.255.0
BROADCAST=192.168.0.255

Genug an Infos. Wenn ich nun also von einer anderen Maschine einen ping auf die beiden IPs mache, kommen beide an. Wenn ich nun den Netzwerkstecker aus eth1 ziehe, dann kann ich die IP 192.168.0.89 korrekterweiße noch erreichen, die 192.168.0.76 aber nicht mehr.

Wenn ich nun aber den Stecker aus eth0 ziehe, dann habe ich auf beide IPs keinen Kontakt mehr. Wieso?

Hab mit den Routen schon hin und her probiert....

route -n ergibt:

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

Danke Mika

  1. Hallo mika,

    habe folgendes Problem. Ich habe ein kleines Netzwerk.

    Das ist noch kein Problem :-)

    In diesem Netzwerk hängt eine Linuxmaschine mit 2 Netzwerkkarten.

    Das ebenfalls nicht, das hab ich auch :-)

    Beiden Netzwerkkarten möchte ich eine eigene IP zuweisen. Folgende Config gibts zu sehen:

    eth0      Link encap:Ethernet  HWaddr 00:0B:6A:41:4C:1B
              inet addr:192.168.0.89  Bcast:192.168.0.255 Mask:255.255.255.0

    ...

    eth1      Link encap:Ethernet  HWaddr 00:50:FC:CC:6C:6F
              inet addr:192.168.0.76  Bcast:192.168.0.255  Mask:255.255.255.0

    ...

    Genug an Infos.

    Nein, leider nicht genug an Infos :-(

    Du solltest die physische Verkabelung Deines Netzwerkes beschreiben.
    Ich nehme an, Dein kleines Netzwerk besteht noch aus mindestens zwei weiteren Rechnern. Nun kann ich mir folgende zwei einfache Konfigurationen vorstellen:

    1. Linuxrechner als Router zwischen zwei Netzwerken.

    192.168.0.76
         |-------------------| |--------------------------------|
           |192.168.0.75   |     | 192.168.0.89               | 192.168.0.90
           |               |     |                            |
        --------         ----------                         ---------
        | WS 1 |         | Linux- |                         |  WS 2 |
        |      |         | kiste  |                         |       |
        --------         ----------                         ---------

    In diesem Fall liegt bei Nutzung der Subnetmask 255.255.255.0 eine Fehlkonfiguration des Netzwerkes vor. Denn hier hast Du zwei verschiedene Netzwerke, entsprechend müssen die IP-Adressen vergeben werden, z.B. 192.168.0.x in Netzwerk 1 und 192.168.1.x in Netzwerk 2. Zudem muss Routing auf dem Linuxrecher aktiviert sein und das Standardgateway in beiden Netzwerken korrekt konfiguriert sein.

    2. Linuxrechner mit zwei Netzwerkkarten im gleichen Netzwerk

    192.168.0.76
         |------------------------------------------------------|
           |192.168.0.75   |     | 192.168.0.89               | 192.168.0.90
           |               |     |                            |
        --------         ----------                         ---------
        | WS 1 |         | Linux- |                         |  WS 2 |
        |      |         | kiste  |                         |       |
        --------         ----------                         ---------

    Bei dieser Konfiguration sind die IP-Adressen korrekt, jedoch entgeht mir der Sinn dieser Konfiguration (Loadbalancing?)

    Wenn ich nun also von einer anderen Maschine einen ping auf die beiden IPs mache, kommen beide an. Wenn ich nun den Netzwerkstecker aus eth1 ziehe, dann kann ich die IP 192.168.0.89 korrekterweiße noch erreichen, die 192.168.0.76 aber nicht mehr.

    Gehen wir von Fall 2 aus:
    WS 1 versucht die 192.168.0.76 zu erreichen. Diese IP-Adresse befindet sich im gleichen Netzwerk wie der Rechner WS 1. Also muss die MAC-Adresse dieses Rechners direkt per Broadcast erreichbar sein. Dies geht aber schief, da die Netzwerkkarte nicht angeschlossen ist.
    => 192.168.0.76 ist nicht erreichbar :-)

    Dein Linuxrechner routet die Anfrage _nicht_ weiter. Es gibt keinen Grund dafür.

    Wenn ich nun aber den Stecker aus eth0 ziehe, dann habe ich auf beide IPs keinen Kontakt mehr. Wieso?

    Das wiederum kann ich nur mit Fall 1 erklären. Dann ist das logisch.
    Bitte erläutere deswegen Deine Netzwerkkonfiguration.

    Freundliche Grüsse,

    Vinzenz

    1. Hi,

      derzeitig ist diese physikalische Verbindung angeschlossen: (ROuter hat 5 Ports)

      192.168.0.10
      |----|        |--------|     192.168.0.89 |-------|
      |    |        |        |------------------|       |
      | M1 |--------| ROUTER |------------------| LINUX |
      |----|        |------- |     192.168.0.76 |-------|
                    192.168.0.1

      Du wirst nun sagen: Was soll das, das gibt doch keinen Sinn. Damit muss ich dir recht geben. Ich wollte dies nur aus testzwecken machen. Trotzdem krieg ich es nicht hin.

      1. hallo,

        Was soll das, das gibt doch keinen Sinn

        Tatsächlich ergibt das keinen Sinn. Vor allem gibt es für deinen "Router" nichts zu routen, alle IP-Adressen, die du angibst, gehören zum selben (Sub-)Netz.

        Damit muss ich dir recht geben. Ich wollte dies nur aus testzwecken machen.

        Was willst du denn testen?

        Inzwischen ist dir bekannt, daß "eth0" immer die erste Netzwerkschnittstelle ist, egal, ob du sie gerne so nennen möchtest oder ob du sie eventuell für "eth281" hältst. Wenn du also bei "eth0" ganz einfach mal das Netzwerkkabel rauszerrst (was sowieso unschön ist), "verwandelt" sich dein bisheriges "eth1" in "eth0"  -  und wenn du dafür nun eine IP in ifcfg-eth0 vorgeschrieben hast, bekommt es auch diese IP. Dieser Vorgang kann ein kleines bißchen Zeit fordern und hinterläßt Spuren, die du auf jeden Fall im syslog findest. Warum schaust du nicht in deine Systemmeldungen in /var/log?

        Übrigens wärs freundlich, wenn du mal deine Distribution angeben würdest. Es sieht nach einem älteren RedHat aus ...

        Grüße aus Berlin

        Christoph S.

        1. Inzwischen ist dir bekannt, daß "eth0" immer die erste >Netzwerkschnittstelle ist, egal, ob du sie gerne so nennen möchtest >oder ob du sie eventuell für "eth281" hältst. Wenn du also >bei "eth0" ganz einfach mal das Netzwerkkabel rauszerrst (was >sowieso unschön ist), "verwandelt" sich dein bisheriges "eth1" >in "eth0"  -  und wenn du dafür nun eine IP in ifcfg-eth0 >vorgeschrieben hast, bekommt es auch diese IP. Dieser Vorgang kann >ein kleines bißchen Zeit fordern und hinterläßt Spuren, die du auf >jeden Fall im syslog findest. Warum schaust du nicht in deine >Systemmeldungen in /var/log?

          Und wird den der Eintrag der im ifcfg-eth1 steht auch von eth0 übernommen. Also sind beide IPs über das eth0 verfügbar?

          An welchen Kriterien legt der Rechner eigentl. fest welche der beiden Netzwerkkarten das eth0 und welches das eth1 ist? Also die Reihenfolge?

          Übrigens wärs freundlich, wenn du mal deine Distribution angeben >würdest. Es sieht nach einem älteren RedHat aus ...

          Es ist ein LFS System.

          Danke Mika

          1. hi,

            Und wird den der Eintrag der im ifcfg-eth1 steht auch von eth0 übernommen. Also sind beide IPs über das eth0 verfügbar?

            Nein. eth0 wird von ifcfg-eth0 konfiguriert, dafür ist das schließlich da. Wenn es kein eth1 gibt, kann in ifcfg-eth1 stehen, was du reinschreiben möchtest, es gibt ja kein Device, womit diese Konfigurationsdatei in Verbindung gebracht werden könnte.

            An welchen Kriterien legt der Rechner eigentl. fest welche der beiden Netzwerkkarten das eth0 und welches das eth1 ist? Also die Reihenfolge?

            Nach der Reihenfolge der Slots am Bus. Steck deine Karten mal um, dann siehst du es an der Hardware-Adresse.

            Es ist ein LFS System.

            Aha. Der Grund für meine Nachfrage war: Gerätekonfigurationsdateien mit dem Namen
              /etc/sysconfig/network-scripts/ifcfg-ethX
            gibt es weder bei Suse 9.1 noch bei GenToo oder Debian (in den jeweils aktuellen Versionen). Fedora und Mandrake haben zwar solche Dateien, aber die Einträge sehen geringfügig anders aus als deine.

            Grüße aus Berlin

            Christoph S.

      2. Moin!

        derzeitig ist diese physikalische Verbindung angeschlossen: (ROuter hat 5 Ports)

        192.168.0.10
        |----|        |--------|     192.168.0.89 |-------|
        |    |        |        |------------------|       |
        | M1 |--------| ROUTER |------------------| LINUX |
        |----|        |------- |     192.168.0.76 |-------|
                      192.168.0.1

        Du wirst nun sagen: Was soll das, das gibt doch keinen Sinn. Damit muss ich dir recht geben. Ich wollte dies nur aus testzwecken machen.

        Wenn du statt einer Netzverbindung mit einer Karte zwei Netzverbindungen mit zwei Karten machen willst, brauchst du Loadbalancing oder sonst irgendeine Methode, sowohl deinem "Router" (oder was immer das auch ist) als auch deinem Linuxklarzumachen: "Hey, da sind zwei parallele Leitungen zum gleichen Ziel, die dürfen parallel genutzt werden!"

        Derzeit passiert folgendes beim Ping:
        M1 will an .76 pingen. M1 fragt mit ARP: Welche MAC-Adresse gehört zur IP .76? Linux antwortet: Hier, das bin ich (mit eth0). Und M1 sendet an die zugehörige MAC.

        Linux merkt das eingehende Ping-Paket und will antworten. Die Antwort soll an .10 gehen - aber welches Interface nehmen? Die Routing-Tabelle dürfte da Klarheit bringen: Mit Pech ist .89 als erstes Device eingetragen und wird verwendet. Und M1 kriegt deshalb die Antwort von dieser IP - das verwirrt natürlich den Menschen an M1.

        Wenn Linux wüßte, dass es beide Netzwerkkarten parallel benutzen dürfte, weil sie sowieso ins gleiche Netz gehen, und auch der Router weiß, dass er sich von den beiden Leitungen die mit weniger Last aussuchen kann, dann würde Linux auch nur eine IP auf beiden Karten haben und wäre dann entsprechend schneller angebunden.

        Ansonsten hat Linux eindeutig ein Routingproblem, denn wenn aufgrund der Ziel-IP feststeht, welches Netz genutzt werden soll - wie soll man entscheiden, welche Netzwerkkarte zu benutzen ist? Normale Routen sind immer eindeutig - deine ist es derzeit nicht.

        - Sven Rautenberg

        1. Hi,

          danke für die Antwort - hat mir sehr weitergeholfen! Und eine Möglichkeit, dass die Antwort durch das device zurückgeschickt wird wie es reinkam gibt es nicht?

          Mika