• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[mit 13.1 gelöst] openSUSE 12.3 vertauscht Netzwerkkarten

P6CNAT

Advanced Hacker
Hallo,

ich habe fast täglich Probleme ins Internet zu kommen.
Ich habe zwei Netzwerkkarten eth0 für ein internes Netz und ein paar virtuellen IP's für einen Apache Server und eth1 für das Internet. Mit ifup Konfiguriert.
Wenn ich nicht ins Internet komme, aktiviere ich kurzfristig den Networkmanager der den Internetzugang wieder ermöglicht. Danach läuft DCHP auch wieder mit ifup. Bis zum nächsten booten, dann fangen die Probleme wieder an.


Die Symptome:
Heute nach dem booten lief wieder kein Internet. Über Yast auf Netzwerkmanager umgeschaltet -> Internet geht, mein Apache Server nicht erreichbar -> auf ifup zurückgeschaltet, Internet geht, Apache Server geht!

Beim Prüfen der Konfiguration hat mich bald der Schlag getroffen. Jetzt sind eth0 und eth1 vertauscht. Das Internet und die virtuellen Adressen für meinen Apache Server laufen beide auf eth0, eth1 ist inaktiv.

Hier ist die Konfiguration der Karte eth0 (intern) in Yast

Konfiguration-eth0.png


Hier ist die Konfiguration der Karte eth1 (Internet) in Yast

Konfiguration-eth1.png


Hier die Anzeige von ifconfig nach dem Umweg über den Networkmanager:
eth0 hat plötzlich eine DHCP Adresse vom DSL-Router + die virtuellen Adressen für den Apache, eth1 ist abgeschaltet.

Code:
polaris:/etc/sysconfig/network # ifconfig
eth0      Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.2.104  Bcast:192.168.2.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4634 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5705 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:1000 
          RX bytes:4938503 (4.7 Mb)  TX bytes:467009 (456.0 Kb)

eth0:e*** Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.110  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:f*** Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.111  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:g*** Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.112  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:h*** Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.113  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:h*** Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.114  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:joom Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.116  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:l***  Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.115  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:285 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:0 
          RX bytes:30469 (29.7 Kb)  TX bytes:30469 (29.7 Kb)


          
polaris:/etc/sysconfig/network # ifconfig eth1
eth1      Link encap:Ethernet  Hardware Adresse 30:85:A9:B3:4D:D4  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Die Karten haben doch unterschiedliche MAC-Adressen, wie kann das sein, dass die Konfiguration "umherwandert" :irre:?
Welche Möglichkeiten hätte ich denn diesen Schwachfug zu unterbinden?

Grüße
Georg
 

spoensche

Moderator
Teammitglied
Wenn du für die Netzwerkkonfiguration ifup verwenden willst, dann darfst du auf gar keinen Fall den Networkmanager verwenden. Poste mal die Ausgabe von
Code:
cat /etc/sysconfig/network/ifcfg-eth*
und die Ausgabe von
Code:
cat /etc/udev/rules.d/70-persistent-net.rules
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Guten Abend spoensche,
spoensche schrieb:
Wenn du für die Netzwerkkonfiguration ifup verwenden willst, dann darfst du auf gar keinen Fall den Networkmanager verwenden.
Jepp, ich hatte schon davon gehört, aber das war der letzte Notnagel, um ins Internet zu kommen. Hatte die Netzwerkkarten schon mit Knoppix getestet, dabei ist mir das erste mal aufgefallen, das Knoppix mit "der falschen Karte" in Netz geht. Dann hat es aber immer noch eine Woche gedauert, bis ich auf den Trichter gekommen bin, dass beim Booten gelegentlich die Netzwerkkarten vertauscht werden.

Code:
polaris:/etc/sysconfig/network # cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="30:85:a9:b3:4d:d4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Ich denke mal laut. Da mit udev die Hardware eingebunden wird müsste eth1 auch darin stehen?
Heute Abend hat der Rechner beim Booten die Karten übrigens richtig verwendet. Mit eth1 bin ich im Internet. Auf eth0 funktionieren die virtuellen Adressen, der PC an eth0 ist ausgeschaltet.

Code:
polaris:/etc/sysconfig/network # cat ifcfg-eth0
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.0.99/24'
MTU=''
NAME='RTL-8139/8139C/8139C+'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
IFPLUGD_PRIORITY='0'
PREFIXLEN='24'
IPADDR_0='192.168.0.110/24'
LABEL_0='e***'
IPADDR_1='192.168.0.111/24'
LABEL_1='f***'
IPADDR_2='192.168.0.112/24'
LABEL_2='g***'
IPADDR_3='192.168.0.113/24'
LABEL_3='h***'
IPADDR_4='192.168.0.114/24'
LABEL_4='h***'
IPADDR_5='192.168.0.115/24'
LABEL_5='l***'
IPADDR_6='192.168.0.116/24'
LABEL_6='joomla'

Code:
polaris:/etc/sysconfig/network # cat ifcfg-eth1
BOOTPROTO='dhcp4'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR=''
MTU=''
NAME='RTL-8139/8139C/8139C+'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
IFPLUGD_PRIORITY='0'
PREFIXLEN='24'

Grüße
Georg
 

josef-wien

Ultimate Guru
Was hindert Dich daran, für die zweite Netzwerkkarte eine eigene Regel einzutragen?

Alternativ kannst Du die Datei /etc/udev/rules.d/70-persistent-net.rules löschen. Dann wird sie beim nächsten Start erzeugt und enthält vielleicht beide Karten.
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

josef-wien schrieb:
Was hindert Dich daran, für die zweite Netzwerkkarte eine eigene Regel einzutragen?
Das notwendige Wissen um die Zusammenhänge und Kommandos. :???:
Bis gestern war es für mich selbstverständlich, dass openSUSE das alleine regelt und ich hätte es noch nicht einmal für möglich gehalten, dass Netzwerkkarten anscheinend zufällig vertauscht werden.

josef-wien schrieb:
Alternativ kannst Du die Datei /etc/udev/rules.d/70-persistent-net.rules löschen. Dann wird sie beim nächsten Start erzeugt und enthält vielleicht beide Karten.
Habe ich gemacht, nachdem beim Booten wieder kein Internet erreichbar war.
Ich habe diese Datei in mein Home-Verzeichnis verschoben, nicht gelöscht. Allerdings wurde sie beim zweiten Booten nicht neu erzeugt.

Jetzt habe ich die Netzwerkstecker vertauscht. Es soll aber kein ständiges Ritual werden unter dem Tisch rumzukriechen ;)
Immerhin habe ich jetzt einen Anhaltspunkt :thumbs:

Grüße
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Ai,

ich habe die Datei /etc/udev/rules.d/70-persistent-net.rules jetzt manuell editiert. Die MAC-Adressen der Karten je einer festen eth Adresse zugewiesen und den Rechner neu gebootet. Jetzt funktioniert das Netz wie gewünscht und ich bin zuversichtlich, dass es auch so bleibt.

Danke für die Hinweise und ein schönes Wochenende.

Grüße
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

leider funktioniert der "Trick" mit den Einträgen in /etc/udev/rules.d/70-persistent-net.rules nicht.
Das ist in der letzten bereits Woche 3 mal passiert:

Eintrag in 70-persistent-net.rules
Code:
polaris:/etc/udev/rules.d # cat 70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="30:85:a9:b3:4d:d4", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:FC:71:A8:19", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

und das Ergebnis nach dem booten:
Code:
polaris:/home/georg/bin # ifconfig
eth0      Link encap:Ethernet  Hardware Adresse 00:50:FC:71:A8:19  
          inet Adresse:192.168.0.99  Bcast:192.168.0.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:1000 
          RX bytes:1522 (1.4 Kb)  TX bytes:7288 (7.1 Kb)

eth0 ist mit der falschen MAC-Adresse verknüpft! Dann habe ich noch die Kommandos udevadm control --reload-rules, /etc/init.d/boot.udev reload und /etc/init.d/boot.udev force-reload ausgeführt. Nutzt alles nix, das einzige was hilft ist den Rechner neu zu booten und zu hoffen, dass die Netzwerkkarten dann in der richtigen Reihenfolge verwendet werden.

Grüße
Georg
 

drcux

Hacker
Die sicherste Lösung ist das Modul für die Karte, die eth0 werden soll, schon beim Booten laden zu lassen.

Udev ist seit der Integariton in systemd irgendwie kaputt.
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo drcux,
drcux schrieb:
Die sicherste Lösung ist das Modul für die Karte, die eth0 werden soll, schon beim Booten laden zu lassen.
Ich würde das gerne probieren, wie macht man das?

Gruß
Georg
 

drcux

Hacker
Es sollte reichen in /etc/modules-load.d/ ein Datei mit dem Namen network.conf mit folgenden Inhalt zu erstellen:

Code:
modul1
modul2

Beispiel für Intel 1000 und Realtek 8139:
Code:
e1000e
8139cp

Das sorgt dafür, das erst die Intelkarte aktiviert wird (eth0) und anschließend die Realtek (eth1). Welche Module du brauchst, solltest du mit hwinfo rausbekommen.
 

josef-wien

Ultimate Guru
Ich vermute, auch bei 12.3 kommt bei
Code:
gzip -cd /boot/initrd | cpio -ivt | grep 70-persistent
etwas heraus, dann mußt Du mit
Code:
mkinitrd
die initrd neu erstellen, damit die aktuelle Datei dort enthalten ist.
 
OP
P6CNAT

P6CNAT

Advanced Hacker
josef-wien schrieb:
Ich vermute, auch bei 12.3 kommt bei
Code:
gzip -cd /boot/initrd | cpio -ivt | grep 70-persistent
etwas heraus, dann mußt Du mit
Code:
mkinitrd
die initrd neu erstellen, damit die aktuelle Datei dort enthalten ist.
Das ist ein super Hinweis :thumbs:
Bei der ersten Abfrage gab es keinen Eintrag für 70-persistent, nach dem mkinitrd ist etc/udev/rules.d/70-persistent-net.rules enthalten.
Das würde plausibel erklären, dass der Eintrag nicht verwendet wurde.

Ich beobachte das mal eine Woche und melde mich wieder.

Danke und schönen Sonntag
Georg
 

spoensche

Moderator
Teammitglied
Nach dem ausführen von
Code:
udevadm control --reload-rules
hätte ein
Code:
udevadm trigger
umd die Regeln anzuwenden. Allerdings ohne Ergebnis, weil
die durchgeführte Aktion (ACTION) ein Change gewesen wäre und kein Add.
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

trotz des Eintrages in /boot/initrd wurde die Netzwerkkarte heute wieder vertauscht :zensur:.

Die Netzwerkkarten werden anscheinend nur dann in der richtigen Reihenfolge verwendet, wenn der DSL-Router bereits eine Internetverbindung aufgebaut hat. Hat der DSL-Router den Verbindungsaufbau noch nicht abgeschlossen, scheint udev die nächste Netzwerkkarte zu nutzen. Das ist möglicherweise eine praktische Funktion für Laptops. Für stationäre Rechner mit dedizierten Netzwerkkarten taugt das nichts.

Grüße
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

der Artikel enthält einen interessanten Hinweis!

Finally, many distributions support renaming interfaces to user-chosen names (think: "internet0", "dmz0", ...) keyed off their MAC addresses or physical locations as part of their networking scripts. This is a very good choice but does have the problem that it implies that the user is willing and capable of choosing and assigning these names.

Wird das von openSUSE auch unterstützt? Falls ja, an welchen Stellen muss man eingreifen, bzw. wie geht das?

Grüße
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

jetzt habe ich gelernt, dass man die Zuweisung der Netzwerkports zu den Karten an die Hardwareadresse (Bus-ID) koppeln kann.
Habe ich jetzt mal gemacht und bin gespannt, ob das zuverlässiger funktioniert.

Code:
polaris:/etc/udev/rules.d # cat 70-persistent-net.rules | sort
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:01:05.0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:04:00.0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Gruß
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

die Kopplung der Netzwerkports an die Hardware (Bus) Adressen der Netzwerkkarten scheint die Lösung zu sein. Jedenfalls hat der PC seit Freitag keinen Fehlstart mehr hingelegt.

Grüße
Georg
 
OP
P6CNAT

P6CNAT

Advanced Hacker
Hallo,

die Kopplung der Netzwerkports an die Bus-Adressen funktioniert auch nicht zuverlässig :zensur:. Allerdings tritt das Problem nicht mehr so häufig auf.

Gruß
Georg
 
Oben