Wie erkennt man automatisch eine neue Netzwerkkarte in CentOS 6 / RedHat?

46

Ich verwende CentOS 6 in einer virtuellen Umgebung. Beim Klonen einer virtuellen Version von CentOS werden die alten eth-Adapter "entfernt" und durch neue und Netz-MAC-Adressen ersetzt. Die ifcfg-ethn-Dateien sind jedoch noch vorhanden. Ich versuche herauszufinden, wie CentOS dazu gebracht wird, die Netzwerkadapter / eth-Dateien automatisch neu zu scannen und neu zu erstellen, genau wie bei der Installation.

Ansonsten bleibt mir der mühsame Prozess wie hier beschrieben: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

Ich weiß, dass es eine schnelle Möglichkeit gibt, dies in der GUI zu tun, aber wir verwenden einen Server, sodass die GUI in diesem Fall nicht angewendet wird. Hilfe?

Edit: @OldWolf schlug Kudzu vor, jedoch wurde Kudzu ab Centos 5 entfernt, so dass ich das lieber vermeiden würde. Es gibt eine Prozedur, die Linux bei der Erstinstallation ausführt. Kann mir jemand helfen, das herauszufinden, damit ich es manuell auslösen kann?

Joshua
quelle

Antworten:

52

Mit CentOS 6 wird jetzt alles von udev erledigt. Öffnen /etc/udev/rules.dund löschen Sie die 70-persistent-net.rulesDatei und starten Sie neu. Wenn Sie es vorher öffnen, werden Sie am ehesten den originalen NIC MAC als eth0und den neuen als sehen eth1.

Jetzt müssen Sie /etc/sysconfig/network-scripts/ifcfg-eth0die MAC-Adresse Ihrer neuen NIC-Karte bearbeiten und manuell aktualisieren.

Wenn Sie die Datei löschen, wird der Erkennungsprozess beim Booten erneut ausgeführt, ohne dass Gepäck vom Klonprozess übrig bleibt, nämlich die alten NIC-MAC-Adressen.

Ich muss es die ganze Zeit mit meinen CentOS 6-Klonen auf VMware ESXi 4.1 machen. Es ist ein Schmerz, mit dem Kudzu in der Vergangenheit mit früheren Versionen fertig wurde.

Tracy Carlton
quelle
2
Es klang wundervoll, aber es funktionierte nicht so, wie Sie es beschrieben haben. Die alte ifcfg-eth0-Datei war noch vorhanden, mit der ursprünglichen MAC-Adresse usw. anstelle der richtigen neuen.
Joshua
2
Entschuldigung ja ich hatte es vergessen. Sie müssen auch die MAC-Adresse in ifcfg-eth0 manuell aktualisieren. Damit wird es funktionieren. Es könnte einen einfacheren Weg geben, aber ich muss ihn noch finden ...
Tracy Carlton
Das war ein guter Anfang. Es scheint möglich zu sein, ein Skript zu schreiben, das den Vorgang - auch die beschriebenen manuellen Bits - beim Booten automatisiert. Das Problem besteht darin, das Skript erst zu aktivieren, nachdem der Computer geklont / verschoben wurde. Immer noch keine vollständige Antwort auf diese
Joshua
5
Öffnen /etc/udev/rules.dund löschen Sie die 70-persistent-net.rulesDatei und starten Sie sie NICHT neu. Rufen Sie /etc/sysconfig/network-scripts/ifcfg-eth0die MAC-Adresse Ihrer neuen NIC-Karte auf und aktualisieren Sie sie manuell. Starten Sie neu und das Netzwerk sollte lebendig werden.
2
@ user151091 Anstatt neu zu booten, hat das start_udevdann service network restartbei mir geklappt .
Doshea
5

Sie können dieses Tool auch verwenden (Dies ist kein GUI-Tool, sein TUI-Tool, textbasierte Benutzeroberfläche).

[root @ localhost ~] # system-config-network-tui

Geben Sie den obigen Befehl ein und drücken Sie die Eingabetaste

Dann erscheint dieser Bildschirm

Bildbeschreibung hier eingeben

Wählen Sie Gerätekonfiguration und drücken Sie die Eingabetaste

Dann erscheint dieser Bildschirm

Bildbeschreibung hier eingeben

Hier bezieht sich eth0 /etc/sysconfig/network-scripts/ifcfg-eth0

Unabhängig von der vorgenommenen Bearbeitung eth0wirkt sich dies auf die ifcfg-eth0Datei aus

max
quelle
Dies ist möglicherweise eine nützliche Antwort auf einige Personen / Fälle. Das Ziel dabei war jedoch, die Konfiguration von Netzwerkadaptern zu skripten oder zu automatisieren, was über eine TUI / GUI nicht möglich ist. Lesen Sie den Originalbeitrag: "Ich versuche herauszufinden, wie CentOS die Netzwerkadapter / eth-Dateien automatisch erneut scannen und erstellen kann, genau wie bei der Installation."
Joshua
@Joshua Entschuldigung ... + 1
max
@max, system-config-networkscheint nur auch diese Schnittstelle zu öffnen.
Acumenus
2
@QiFan Versuchen Sie diesen Befehlyum install system-config-network-tui
max
1
@QiFan Um herauszufinden, welches Paket diesen Befehl enthält, probieren Sie diesyum whatprovides */system-config-network-tui
max.
4

Löschen Sie die persistente Regeldatei:

rm /etc/udev/rules.d/70-persistent-net.rules

Bearbeiten Sie ifcfg-eth0:

nano /etc/sysconfig/network-scripts/ifcfg-eth0

ENTFERNEN Sie die HWADDRLeitung vollständig (oder ändern Sie sie entsprechend der MAC-Adresse Ihrer neuen Netzwerkkarte ).

Starten Sie Ihr System neu:

reboot

Wenn Sie die Netzwerkkarte erneut ändern, wiederholen Sie einfach die Schritte 1 und 3.

Martin Anderson
quelle
Müssen Sie wirklich neu starten? Warum nicht einfach den Netzwerkdienst neu starten?
VGOFF
Während dies eine nützliche Antwort auf einige Personen / Fälle sein könnte, bestand das Ziel darin, die Konfiguration von Netzwerkadaptern zu skripten oder zu automatisieren. Aus dem ursprünglichen Beitrag: "Ich versuche herauszufinden, wie CentOS dazu gebracht wird, die Netzwerkadapter / eth-Dateien automatisch erneut zu scannen und zu erstellen, genau wie bei der Installation."
Joshua
@vgoff ja, ein Neustart des Netzwerkdienstes funktioniert offensichtlich einwandfrei :) Vielleicht bezieht er sich auf einen Neustart des Netzwerkgeräts selbst, z. B. "ifup eth0" usw.
Joshua
Das mag sein, aber er sagt "System" nicht "Gerät".
vgoff
Ich kann mich irren, aber ich denke, dass der Neustart des Dienstnetzwerks nicht dazu führt, dass Ihre Adapter umbenannt werden, nachdem Sie die Datei mit den beständigen Regeln entfernt haben, und dass ein Neustart oder 'start_udev' erforderlich ist, damit sie umbenannt werden.
Doshea
4

Das Ändern von Dateien nach dem Klonen würde für meinen Anwendungsfall nicht funktionieren, daher habe ich das Problem wie folgt gelöst.

Sie müssen zwei Dateien bearbeiten und dabei die Verweise auf die Mac-Adressen entfernen:

/etc/sysconfig/network-scripts/ifcfg-eth0 - Entfernen Sie die Zeile HWADDR =.

/etc/udev/rules.d/70-persistent-net.rules - von ATTR {address} == bis einschließlich des nächsten Kommas entfernen.

Wenn Sie nun die VM klonen und die Mac-Adresse ändern, funktioniert das Netzwerk, da die Mac-Adresse niemals in eine der beiden Dateien geschrieben wird.

Scot Inscore
quelle
Dies hat bei mir funktioniert - wie bereits erwähnt, wird die MAC-Adresse nie in eine der beiden Dateien zurückgeschrieben, sodass Sie sie weiter ändern können und Ihre Schnittstelle mit derselben Konfiguration "eth0" bleibt. Dies scheint jedoch nur zu funktionieren, wenn Sie einen Netzwerkadapter haben. Andernfalls kam es bei "Starting udev:" zu einer langen Startverzögerung, und mein zweites Gerät hieß "rename3", vermutlich, weil die Regeln vorschlugen, dass beide Geräte "eth0" heißen sollten ".
Doshea
Praktische Lösung für 1 Adapter. Vergessen Sie auch nicht, den Verbindungstyp als Bridge in den Netzeinstellungen festzulegen.
Cherry
3

Ich erstelle und lösche so viele virtuelle CentOS 6-Maschinen, dass ich Bashfu geschrieben habe, um eth0 beim Klonen in VirtualBox zu beheben.

   [root@jp-xm-base ~]# cat fixeth0.sh
if grep -q eth1 /etc/udev/rules.d/70-persistent-net.rules; then
   sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules;
   sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules;
   ETHERNET=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules | awk -F"," '{print $4}' | awk -F"\"" '{print $2}'`;
   echo Ethernet Addr: $ETHERNET;
   sed -i 's/HWADDR=".*"/HWADDR="'$ETHERNET'"/' /etc/sysconfig/network-scripts/ifcfg-eth0;
   /sbin/start_udev
   /sbin/service network restart;
fi
Electrawn
quelle
1

Wenn Ihr einziges Problem die MAC-Adresse ist, können Sie etwas Ähnliches ausführen

TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0

So aktualisieren Sie den HWADDR-Eintrag

Bearbeiten: Da es sich anscheinend um eine tatsächliche Änderung der virtuellen Hardware handelt, können Sie Folgendes versuchen. (ungetestet und von hier aus referenziert )

Bearbeiten Sie / etc / sysconfig / hwconf und entfernen Sie alle Verweise auf die vorherige Netzwerkkarte. Führen Sie kudzu erneut aus, um festzustellen, ob die neue Hardware erkannt wird. Möglicherweise müssen Sie neu starten.

OldWolf
quelle
Ich habe zum Beispiel versucht, die MAC-Adresse auf eth0 manuell zu ändern, aber es hat immer noch nicht funktioniert. Nachfolgende Versuche "Service Network Force-Reload", "ifup eth0" usw. würden immer mit "Device eth0 scheint nicht vorhanden zu sein ..." enden. Hilfe?
Joshua
Welche Art von Virtualisierung verwenden Sie und wie haben Sie das System geklont?
OldWolf
VirtualBox, aber ich denke nicht, dass die Virtualisierung wichtig ist. Dies sollte so aussehen, als würde eine physische Box heruntergefahren, die vorhandenen Netzwerkadapter entfernt und andere hinzugefügt.
Joshua
@Josh Wo sind die ifcfg- * -Dateien, die Sie bearbeiten, da es möglicherweise drei Sätze gibt? Überprüfen Sie / etc / sysconfig / network-scripts und / etc / sysconfig / networking / devices und / etc / sysconfig / networking / profiles / default ( Ja, ich weiß - es scheint etwas damit zu tun zu haben, mit welchen Tools Sie die Adapter einrichten. Die ersten sollten diejenigen sein, die den Unterschied ausmachen, aber Sie müssen sich möglicherweise auch mit den anderen auseinandersetzen.
Linker3000
1
Der Grund, warum ich gefragt habe und der Virtualisierungstyp von Bedeutung ist, ist, dass er bestimmt, wie der Klonprozess aussieht. Ein VMware-Klon auf demselben Host würde die virtuelle Netzwerkhardware nicht ändern, es sei denn, Sie haben es angewiesen. In Ihrem Fall liegt das Problem weder bei der Mac-Adresse noch beim Klonen, sondern darin, dass Sie die virtuelle Hardware ändern.
OldWolf
1

Ich verwende keine VMware, sondern KVM mit Virsh - das habe ich getan.

Mit CentOS 6.4 wurde ein Basis-Image erstellt, aus dem alle meine Klone stammen. Nach dem ersten Start habe ich so ein Skript erstellt

cat /etc/init.d/manglemac 
#!/bin/bash
#
# manglemac        This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg

mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut   -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)

if [ -z "$match_mac" ];
then
   echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi

Fügte es zu init mit hinzu

chkconfig --add manglemac

Löschte alle Referenzen in / etc / sysconfig / network-scripts / ifcfg-eth0 von HWADDR oder UUID, löschte auch die udev-Regeln aus /etc/udev/rules.d/70-persistent-net.rules.

Zu diesem Zeitpunkt habe ich die Maschine heruntergefahren und mit dem Klonen begonnen. Alles funktioniert gut. Das Skript, das ich erstellt habe, ist sehr einfach, funktioniert aber einwandfrei. Es enthält jedoch einige Annahmen zu Ihrem Setup für das Netzwerk (nur eth0).

Ich hoffe es wird helfen.

silviud
quelle
0

Ich hatte es mit mehreren Netzwerkkarten zu tun und es hat nichts oben für mich funktioniert (VMware Fusion 7 / VMware 6 und darunter), also habe ich ein Skript geschrieben. Der Tarball ist da .

Hier ist das README, was damit kommt:

  • Mit diesem Tarball und den zugehörigen Skripten wird die MAC-Adresse Ihres kürzlich geklonten VMware CentOS 6-Computers oder darunter geändert (kein Systemd.).
  • Alles, was Sie in der Maschine tun müssen, klonen Sie nur einmal:

    1. Installieren lshw
    2. Ersetzen Sie die MAC-Adresse in allen Ihren /etc/sysconfig/network-scripts/ifcfg-eth?mit MACDADDY num, wobei num die Nummer der Netzwerkschnittstelle ist. Sie müssen dem Benennungsmuster für die Datei folgen.
    3. Lauf:

      chckconfig change_mac_address on
      

      Dies sollte Sym-Links mit den in der Datei angegebenen Ausführungsstufen hinzufügen

    4. Klonen Sie die Maschine wie gewohnt und starten Sie sie. Es sollte die MAC-Adresse in jeder Ihrer ifcfg-eth?Dateien ändern ,
      • lösche die udev datei,
      • Scannen Sie Ihr e1000-Gerät erneut.
      • und starten Sie das Netzwerk neu

Probleme:

  • Ich weiß nicht warum, aber manchmal muss das Netzwerk ein zweites Mal neu gestartet werden, damit alle Netzwerkkarten erkannt werden:

    /etc/init.d/network restart
    

    Dies wurde behoben, indem ein sleep 20am Anfang von gesetzt wurde/etc/init.d/network

  • Dies war für mich kein Problem, aber das Skript lshwbasiert auf der Rückgabe der NICs in der gleichen Reihenfolge wieifcfg-eth?
  • Dies setzt voraus, dass Ihre NIC-Geräte e1000 sind. VMware Standard?
  • Es könnte sich lohnen, die Nummerierung Ihrer ifcfg-eth?Dateien zu ändern, damit sie dem entsprechen, was lshwsich in dem unwahrscheinlichen Fall ergibt, dass es nicht funktioniert und Sie viele Maschinen mit vielen Netzwerkkarten betreiben.
  • Mit einer Netzwerkkarte sollte es einfach funktionieren.
  • Nach dem ersten Start wird der /usr/bin/change_mac_address.plnach verschoben/usr/bin/change_mac_address.pl.old
  • Dies verhindert, dass es bei jedem Neustart ausgeführt wird, obwohl es nichts tut, wenn kein MACDADDY vorhanden ist. in deinemifcfg-eth?
  • Du kannst auch und solltest wohl laufen

    chkconfig change_mac_address off
    
FFQ
quelle