2011-09-06 18:56:31 +0000 2011-09-06 18:56:31 +0000
46
46

Wie erkennen Sie automatisch eine neue Netzwerkkarte in CentOS 6 / RedHat?

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 existieren jedoch weiterhin. Ich versuche herauszufinden, wie ich CentOS dazu bringen kann, die Netzwerkadapter / eth-Dateien automatisch neu zu scannen und neu zu erstellen, genau wie bei der Installation.

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

Ich weiß, dass es einen schnellen Weg gibt, dies in der GUI zu tun, aber wir verwenden einen Server, so dass die GUI in diesem Fall nicht anwendbar ist. Hilfe?

Bearbeiten: @OldWolf schlug Kudzu vor, aber Kudzu wurde ab Centos 5 entfernt, so dass ich das lieber vermeiden möchte. Es gibt ein Verfahren, das Linux bei der Erstinstallation ausführt - kann mir jemand helfen herauszufinden, was das ist, damit ich es manuell auslösen kann?

Antworten (8)

52
52
52
2011-09-08 19:34:54 +0000

Mit CentOS 6 wird nun alles von udev gehandhabt. Gehen Sie in /etc/udev/rules.d und löschen Sie die Datei 70-persistent-net.rules und starten Sie neu. Wenn Sie sie vor der Hand öffnen, werden Sie wahrscheinlich die ursprüngliche  NIC MAC als eth0 und die neue als eth1 sehen.

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

Das Löschen der Datei erzwingt, dass der Erkennungsprozess beim Hochfahren erneut ausgeführt wird, ohne dass Gepäck vom Klonvorgang übrig bleibt, nämlich die alte NIC MAC-Adresse(n).

Ich muss das mit meinen CentOS 6-Klonen auf VMware ESXi 4.1 ständig tun. Es ist eine Qual, die Kudzu in der Vergangenheit mit früheren Versionen einfach erledigen würde.

5
5
5
2012-11-19 06:44:46 +0000

Sie können auch dieses Werkzeug verwenden (Dies ist kein GUI-Werkzeug, sondern sein TUI-Werkzeug, 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

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

Dann erscheint dieser Bildschirm

&00002

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

Unabhängig davon, welche Änderungen in eth0 vorgenommen wurden, die sich auf die Datei ifcfg-eth0 auswirken

4
4
4
2013-03-13 00:47:09 +0000

Das Modifizieren 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 in jeder Datei entfernen:

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

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

Wenn Sie die VM klonen und die Mac-Adresse ändern, funktioniert die Vernetzung, da die Mac-Adresse nie in eine der beiden Dateien geschrieben wird.

4
4
4
2012-11-19 06:21:11 +0000

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 Zeile HWADDR vollständig (oder ändern Sie sie so, dass sie mit der MAC-Adresse Ihrer neuen Netzwerkkarte übereinstimmt).

Starten Sie Ihr System neu:

reboot

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

3
3
3
2013-05-21 15:57:29 +0000

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

[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
1
1
1
2013-09-01 01:17:52 +0000

Ich benutze nicht Vmware, sondern KVM mit virsh - das habe ich gemacht.

Ich habe ein ‘Basis’-Image mit CentOS 6.4 erstellt, dies ist die Quelle all meiner Klone. Nach dem ersten Booten erstellte ich ein Skript wie dieses

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 Verweise 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.

An diesem Punkt schaltete ich den Rechner ab und begann mit dem Klonen. Alles funktioniert gut. Das Skript, das ich gemacht habe, ist sehr einfach, aber es funktioniert gut, macht jedoch einige Annahmen über Ihre Einrichtung für das Netzwerk (nur eth0).

Ich hoffe, dass es helfen wird.

1
1
1
2011-09-06 21:04:42 +0000

Wenn Ihr einziges Problem die Mac-Adresse ist, können Sie etwas Ähnliches wie

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

ausführen, um den HWADDR-Eintrag zu aktualisieren.

Bearbeiten: Da es so aussieht, als wäre das Problem eine tatsächliche Änderung der virtuellen Hardware, können Sie Folgendes versuchen. (ungetestet und referenziert von hier )

editieren Sie /etc/sysconfig/hwconf und entfernen Sie alle Verweise auf die vorherige NIC und führen Sie kudzu erneut aus, um zu sehen, ob es die neue Hardware erkennt. Möglicherweise müssen Sie neu starten.

0
0
0
2015-05-01 00:14:57 +0000

Ich hatte es mit mehreren NICs zu tun und nichts davon funktionierte für mich (VMware Fusion 7/VMware 6 und darunter), also schrieb ich ein Skript. Der Tarball ist hier .

Hier ist das mitgelieferte README:

  • Dieser Tarball und verwandte Skripte ändern die MAC-Adresse Ihres kürzlich geklonten VMware CentOS 6 oder darunter (kein systemd. )
  • Alles, was Sie auf dem Rechner tun müssen, den Sie nur einmal klonen werden:

Probleme:

  • Ich bin nicht sicher, warum, aber manchmal müssen Sie das Netzwerk ein zweites Mal neu starten, damit alle NICs erkannt werden:

  • Dies war für mich kein Problem, aber das Skript verlässt sich darauf, dass lshw die NICs in der gleichen Reihenfolge zurückgibt wie ifcfg-eth?

  • Dies setzt voraus, dass Ihr(e) NIC-Gerät(e) e1000 sind. VMware-Standard?

  • Es könnte sich lohnen, die Nummerierung Ihrer ifcfg-eth?-Dateien zu ändern, so dass sie mit dem übereinstimmen, was lshw zurückgibt, für den unwahrscheinlichen Fall, dass es nicht funktioniert und Sie viele Rechner mit vielen NICs betreiben.

  • Mit einer NIC sollte es einfach funktionieren.

  • Nach dem ersten Start wird die /usr/bin/change_mac_address.pl nach /usr/bin/change_mac_address.pl.old verschoben - Dadurch läuft sie nicht bei jedem Neustart, auch wenn sie nichts tut, wenn kein MACDADDY? in Ihrer ifcfg-eth? vorhanden ist - Sie können und sollten wahrscheinlich auch