Come si rileva automaticamente una nuova scheda di rete in CentOS 6 / RedHat?


46

Sto usando CentOS 6 in un ambiente virtuale. Quando si clona una versione virtuale di CentOS, i vecchi adattatori eth vengono "rimossi" e sostituiti con nuovi e indirizzi MAC di rete. Tuttavia, i file ifcfg-ethn esistono ancora. Sto cercando di capire come fare in modo che CentOS esegua nuovamente la scansione e ricreare gli adattatori di rete / i file eth, proprio come ha fatto durante l'installazione.

Altrimenti mi rimane il processo noioso come descritto qui: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

So che esiste un modo rapido per farlo nella GUI, ma stiamo usando un server quindi la GUI non si applica in questo caso. Aiuto?

Modifica: @OldWolf ha suggerito Kudzu, tuttavia Kudzu è stato rimosso a partire da Centos 5, quindi preferirei evitarlo. Esiste una procedura che Linux esegue al momento dell'installazione iniziale: qualcuno può aiutarmi a capire cos'è, così posso attivarlo manualmente?

Risposte:


52

Con CentOS 6 tutto è gestito da udev ora. Vai /etc/udev/rules.ded elimina il 70-persistent-net.rulesfile e riavvia. Se lo apri prima della mano, vedrai che la NIC MAC originale è elencata come eth0e la nuova come eth1.

Ora è necessario modificare /etc/sysconfig/network-scripts/ifcfg-eth0e aggiornare manualmente il MAC della nuova scheda NIC.

L'eliminazione del file forza il processo di rilevamento a essere riavviato all'avvio senza lasciare bagaglio dal processo di clonazione, vale a dire i vecchi indirizzi MAC NIC.

Devo farlo sempre con i miei cloni CentOS 6 su VMware ESXi 4.1. È un dolore che kudzu lo gestirà in passato con le versioni precedenti.


2
Sembrava una tracy meravigliosa, tuttavia non ha funzionato come hai descritto. Il vecchio file ifcfg-eth0 era ancora lì, con l'indirizzo MAC originale ecc. Anziché quello nuovo corretto.
Giosuè,

2
Scusa sì, mi ero dimenticato. È inoltre necessario aggiornare manualmente l'indirizzo mac in ifcfg-eth0, anche se mi dispiace. Questo lo farà funzionare. Potrebbe esserci un modo più semplice ma devo ancora trovarlo ...
Tracy Carlton,

Questo è stato un buon inizio. Sembra che sia possibile scrivere uno script che automatizzerà il processo - anche i bit manuali descritti - all'avvio. Il problema è l'attivazione dello script solo dopo che la macchina è stata clonata / spostata. Ancora nessuna risposta completa a questo ...
Joshua,

5
Vai /etc/udev/rules.ded elimina il 70-persistent-net.rulesfile e NON riavviare. Accedi /etc/sysconfig/network-scripts/ifcfg-eth0e aggiorna manualmente al MAC della tua nuova scheda NIC. Riavvia e la rete dovrebbe prendere vita.

2
@ user151091 Invece di riavviare, start_udevha service network restartfunzionato per me.
Doshea,

5

Puoi usare questo strumento anche (Questo non è uno strumento GUI, il suo strumento TUI, l'interfaccia utente basata su testo)

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

Digitare sopra il comando e premere Invio

Quindi verrà visualizzata questa schermata

inserisci qui la descrizione dell'immagine

Seleziona Configurazione dispositivo e premi Invio

Quindi verrà visualizzata questa schermata

inserisci qui la descrizione dell'immagine

Qui eth0 si riferisce /etc/sysconfig/network-scripts/ifcfg-eth0

Qualunque sia la modifica apportata, eth0ciò influirà sul ifcfg-eth0file


Anche se questa potrebbe essere una risposta utile ad alcune persone / casi, l'obiettivo era quello di creare script o automatizzare la configurazione degli adattatori di rete, cosa che non può essere fatta tramite una TUI / GUI. Leggi il post originale: "Sto cercando di capire come fare in modo che CentOS esegua nuovamente la scansione e ricreare gli adattatori di rete / i file eth, proprio come ha fatto durante l'installazione."
Giosuè,

@Joshua mi dispiace capito ... + 1
max

@max, system-config-networksembra anche aprire questa interfaccia.
Acumenus,

2
@QiFan Prova questo comandoyum install system-config-network-tui
massimo

1
@QiFan Per scoprire quale pacchetto contiene quel comando, prova questoyum whatprovides */system-config-network-tui
max

4

Elimina il file delle regole persistenti:

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

Modifica ifcfg-eth0:

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

RIMUOVI del HWADDRtutto la linea (o modificala in modo che corrisponda al nuovo indirizzo MAC della tua NIC).

Riavvia il tuo sistema:

reboot

Se si cambia di nuovo la scheda NIC, ripetere i passaggi 1 e 3.


Hai davvero bisogno di riavviare? Perché non semplicemente riavviare il servizio di rete?
vgoff,

Anche se questa potrebbe essere una risposta utile ad alcune persone / casi, l'obiettivo era quello di creare script o automatizzare la configurazione degli adattatori di rete. Dal post originale: "Sto cercando di capire come fare in modo che CentOS esegua nuovamente la scansione e ricreare gli adattatori di rete / i file eth, proprio come ha fatto durante l'installazione."
Giosuè,

@vgoff sì, il riavvio del servizio di rete ovviamente funziona bene :) Forse si riferisce al riavvio del dispositivo di rete stesso, ad es. "ifup eth0" ecc.
Joshua,

Potrebbe essere, ma dice "sistema" non "dispositivo".
vgoff,

Potrei sbagliarmi, ma penso che il "riavvio della rete di servizio" non causerà la ridenominazione degli adattatori dopo aver rimosso il file delle regole persistenti e che è necessario un riavvio o "start_udev" per rinominarli.
Doshea,

4

La modifica dei file dopo il clone non avrebbe funzionato per il mio caso d'uso, quindi ho risolto il problema come segue.

Devi modificare due file, rimuovendo i riferimenti agli indirizzi Mac in ciascuno:

/etc/sysconfig/network-scripts/ifcfg-eth0 - rimuovere la riga HWADDR =.

/etc/udev/rules.d/70-persistent-net.rules - rimuovi da ATTR {address} == fino alla virgola successiva inclusa.

Ora, quando cloni la VM e cambi l'indirizzo di rete, la rete funzionerà poiché l'indirizzo Mac non viene mai scritto su nessuno dei due file.


Questo ha funzionato per me - come notato, l'indirizzo MAC non viene mai riscritto in nessuno dei due file, quindi puoi continuare a cambiarlo e la tua interfaccia rimarrà "eth0" con la stessa configurazione. Questo sembra funzionare solo se hai una scheda di rete, tuttavia, altrimenti ho avuto un lungo ritardo di avvio in "Avvio di udev:" e il mio secondo dispositivo si chiamava "rename3", presumibilmente perché le regole suggerivano che entrambi i dispositivi dovrebbero essere chiamati "eth0 ".
Doshea,

Soluzione praticabile per 1 adattatore. Inoltre, non dimenticare di effettuare il tipo di connessione come Bridge nelle impostazioni di rete.
Cherry,

3

Creo ed elimino così tante macchine virtuali CentOS 6 che ho scritto alcuni Bashfu per correggere eth0 dopo la clonazione in VirtualBox.

   [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

Se il tuo unico problema è l'indirizzo mac, puoi eseguire qualcosa di simile a

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

Per aggiornare la voce HWADDR.

Modifica: poiché sembra che il problema sia una vera modifica dell'hardware virtuale, puoi provare quanto segue. (non testato e referenziato da qui )

modifica / etc / sysconfig / hwconf e rimuovi tutti i riferimenti alla scheda NIC precedente ed esegui nuovamente kudzu per vedere se rileva il nuovo hardware. Potrebbe essere necessario riavviare.


Ad esempio, ho provato a modificare manualmente l'indirizzo MAC su eth0, ma non ha ancora funzionato. I tentativi successivi di "ricaricamento forzato della rete di servizio", "ifup eth0" ecc. Finirebbero sempre con "Il dispositivo eth0 non sembra essere presente ..." Aiuto?
Giosuè,

Che tipo di virtualizzazione stai usando e come hai clonato il sistema?
OldWolf,

VirtualBox, ma non credo che la virtualizzazione sia importante. Questo dovrebbe essere come chiudere una scatola fisica, rimuovere le schede di rete esistenti e aggiungerne di diverse.
Giosuè,

@Josh Dove sono i file ifcfg- * che stai modificando in quanto ci sono probabilmente tre set - controlla / etc / sysconfig / network-script e / etc / sysconfig / networking / devices e / etc / sysconfig / networking / profiles / default ( sì, lo so - sembra che abbia a che fare con quale strumento / i usi per configurare gli adattatori). I primi dovrebbero essere quelli che fanno la differenza, ma potrebbe essere necessario occuparsi anche degli altri.
Linker3000,

1
Il motivo per cui ho chiesto e che il tipo di virtualizzazione è importante è che determina l'aspetto del processo di clonazione. Un clone di VMware sullo stesso host non cambierebbe l'hardware della rete virtuale a meno che non glielo avessi detto. Nel tuo caso, il problema non è l'indirizzo mac né il processo di clonazione, è che stai cambiando l'hardware virtuale.
OldWolf,

1

Non sto usando Vmware ma KVM con virsh - questo è quello che ho fatto.

Creato un'immagine 'base' con CentOS 6.4, questa è la fonte di tutti i miei cloni. Dopo il primo avvio ho creato uno script come questo

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

Aggiunto a init con

chkconfig --add manglemac

Eliminati tutti i riferimenti in / etc / sysconfig / network-scripts / ifcfg-eth0 di HWADDR o UUID, cancellate anche le regole udev da /etc/udev/rules.d/70-persistent-net.rules.

A questo punto ho spento la macchina e ho iniziato a clonare. Tutto funziona bene. Lo script che ho realizzato è molto semplice ma funziona bene, tuttavia fa alcune ipotesi sulla tua configurazione per la rete (solo eth0).

Spero possa essere d'aiuto.


0

Avevo a che fare con più schede di rete e nulla sopra ha funzionato per me (VMware Fusion 7 / VMware 6 e versioni precedenti), quindi ho scritto uno script. Il tarball è qui .

Ecco quello READMEche ne deriva:

  • Questo tarball e gli script correlati modificheranno l'indirizzo MAC della macchina VMware CentOS 6 o di recente clonata (senza systemd.)
  • Tutto ciò che devi fare nella macchina clonerai da una sola volta:

    1. installare lshw
    2. sostituire l'indirizzo MAC in tutti i vostri /etc/sysconfig/network-scripts/ifcfg-eth?con MACDADDY num dove num è il numero dell'interfaccia di rete. È necessario seguire il modello di denominazione per il file.
    3. correre:

      chckconfig change_mac_address on
      

      Ciò dovrebbe aggiungere collegamenti sym ai livelli di esecuzione corretti specificati nel file

    4. Clonare la macchina normalmente e accenderla. Dovrebbe cambiare l'indirizzo MAC in ciascuno dei tuoi ifcfg-eth?file,
      • cancella il file udev,
      • riesegui la scansione del tuo dispositivo e1000,
      • e riavviare la rete

I problemi:

  • Non so perché, ma a volte è necessario riavviare la rete una seconda volta per ottenere il riconoscimento di tutte le schede di rete:

    /etc/init.d/network restart
    

    Risolto il problema inserendo sleep 20a all'inizio di/etc/init.d/network

  • Questo non è stato un problema per me, ma lo script si basa sulla lshwrestituzione delle schede NIC nello stesso ordine diifcfg-eth?
  • Ciò presuppone che i dispositivi NIC siano e1000. Standard VMware?
  • Potrebbe valere la pena cambiare la numerazione dei tuoi ifcfg-eth?file in modo che corrispondano a ciò che lshwviene restituito nell'improbabile evento che non funzioni e che tu stia facendo un sacco di macchine con molte schede di rete.
  • Con una scheda di rete dovrebbe funzionare.
  • Dopo il primo avvio, /usr/bin/change_mac_address.plviene spostato in/usr/bin/change_mac_address.pl.old
  • Ciò impedirà l'esecuzione a ogni riavvio anche se non farà nulla se non è presente MACDADDY? nella tuaifcfg-eth?
  • Puoi anche e probabilmente dovresti eseguire

    chkconfig change_mac_address off
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.