Bagaimana Anda secara otomatis mendeteksi kartu jaringan baru di CentOS 6 / RedHat?

46

Saya menggunakan CentOS 6 di lingkungan virtual. Saat mengkloning versi virtual CentOS, adapter et lama "dihapus" dan diganti dengan yang baru dan alamat MAC net. Namun, file ifcfg-ethn masih ada. Saya mencoba mencari cara untuk mendapatkan CentOS untuk secara otomatis memindai ulang & membuat ulang adapter jaringan / file et, seperti yang terjadi pada saat menginstal.

Kalau tidak, saya ditinggalkan dengan proses yang membosankan seperti dijelaskan di sini: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

Saya tahu ada cara cepat untuk melakukan ini di GUI, tetapi kami menggunakan server sehingga GUI tidak berlaku dalam kasus ini. Membantu?

Sunting: @OldWolf menyarankan Kudzu, namun Kudzu telah dihapus pada Centos 5 jadi saya lebih suka menghindarinya. Ada prosedur yang dijalankan Linux pada instalasi awal - dapatkah seseorang membantu saya mencari tahu apa itu sehingga saya dapat memicunya secara manual?

Joshua
sumber

Jawaban:

52

Dengan CentOS 6, segalanya ditangani oleh udev sekarang. Pergilah /etc/udev/rules.ddan hapus 70-persistent-net.rulesfile dan reboot. Jika Anda membukanya ber tangan Anda akan paling suka melihat NIC MAC asli terdaftar sebagai eth0dan yang baru sebagai eth1.

Sekarang Anda perlu mengedit /etc/sysconfig/network-scripts/ifcfg-eth0dan memperbarui secara manual ke MAC kartu NIC baru Anda.

Menghapus file memaksa proses deteksi untuk berjalan kembali saat boot tanpa ada bagasi yang tersisa dari proses kloning, yaitu alamat MAC NIC lama.

Saya harus melakukannya dengan klon CentOS 6 saya di VMware ESXi 4.1 sepanjang waktu. Sayang kudzu hanya akan menanganinya di masa lalu dengan versi sebelumnya.

Tracy Carlton
sumber
2
Kedengarannya tracy yang luar biasa, tetapi tidak berhasil seperti yang Anda gambarkan. File ifcfg-eth0 lama masih ada di sana, dengan alamat MAC asli dll, bukan yang baru.
Joshua
2
Maaf ya saya sudah lupa. Anda juga harus secara manual memperbarui alamat mac di ifcfg-eth0 juga maaf. Itu akan membuatnya bekerja. Mungkin ada cara yang lebih mudah, tetapi saya belum menemukannya ...
Tracy Carlton
Ini awal yang baik. Sepertinya dimungkinkan untuk menulis skrip yang akan mengotomatiskan proses - bahkan bit manual yang dijelaskan - pada bootup. Masalahnya adalah mengaktifkan skrip hanya setelah mesin telah dikloning / dipindahkan. Masih belum ada jawaban lengkap untuk ini ...
Joshua
5
Pergilah /etc/udev/rules.ddan hapus 70-persistent-net.rulesfile dan JANGAN reboot. Pergilah ke /etc/sysconfig/network-scripts/ifcfg-eth0dan perbarui secara manual ke MAC kartu NIC baru Anda. Reboot dan jaringan akan menjadi hidup.
2
@ user151091 Alih-alih me-reboot, start_udevlalu service network restartbekerja untuk saya.
doshea
5

Anda juga dapat menggunakan alat ini (Ini bukan alat GUI, alat TUI-nya, Antarmuka Pengguna Berbasis Teks)

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

Ketik perintah di atas dan tekan Enter

Maka layar ini akan muncul

masukkan deskripsi gambar di sini

Pilih Konfigurasi perangkat dan tekan Enter

Maka layar ini akan muncul

masukkan deskripsi gambar di sini

Di sini eth0 merujuk /etc/sysconfig/network-scripts/ifcfg-eth0

Apa pun pengeditan yang dilakukan eth0akan memengaruhi ifcfg-eth0file

maks
sumber
Meskipun ini mungkin jawaban yang berguna bagi beberapa orang / kasus, tujuan dari ini adalah untuk skrip atau mengotomatiskan konfigurasi adapter jaringan, yang tidak dapat dilakukan melalui TUI / GUI. Baca posting asli: "Saya mencoba mencari cara mendapatkan CentOS untuk secara otomatis memindai ulang & membuat ulang adapter jaringan / file et, seperti yang terjadi pada instalasi."
Joshua
@ Joshua minta maaf ... +1
maks
@ Max, system-config-networksepertinya juga membuka antarmuka ini.
Acumenus
2
@QiFan Cobalah perintah iniyum install system-config-network-tui
maks
1
@ QiFan Untuk mengetahui paket mana yang berisi perintah itu, coba iniyum whatprovides */system-config-network-tui
maks
4

Hapus file aturan persisten:

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

Edit ifcfg-eth0:

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

HAPUS HWADDRsama sekali baris (atau ubah untuk mencocokkan alamat MAC NIC baru Anda).

Mulai ulang sistem Anda:

reboot

Jika Anda mengubah NIC lagi, cukup ulangi langkah # 1 dan # 3.

Martin Anderson
sumber
Apakah Anda benar-benar perlu memulai ulang? Mengapa tidak me-restart layanan jaringan saja?
vgoff
Meskipun ini mungkin jawaban yang berguna bagi beberapa orang / kasus, tujuan dari ini adalah untuk skrip atau mengotomatisasi konfigurasi adapter jaringan. Dari posting asli: "Saya mencoba mencari cara untuk mendapatkan CentOS untuk secara otomatis menelusuri ulang & membuat ulang adapter jaringan / file et, seperti yang terjadi pada instalasi."
Yosua
@ vgoff ya, memulai kembali layanan jaringan jelas berfungsi dengan baik :) Mungkin dia merujuk untuk me-reboot perangkat jaringan itu sendiri, misalnya "ifup eth0" dll.
Joshua
Itu mungkin, tetapi dia mengatakan 'sistem' bukan 'perangkat'.
vgoff
Saya mungkin salah, tetapi saya pikir 'restart jaringan layanan' tidak akan menyebabkan adaptor Anda diganti namanya setelah Anda menghapus file aturan persisten, dan diperlukan reboot atau 'start_udev' untuk menyebabkannya diganti namanya.
doshea
4

Memodifikasi file setelah kloning tidak akan berfungsi untuk kasus penggunaan saya, jadi saya memecahkan masalah sebagai berikut.

Anda perlu mengedit dua file, menghapus referensi ke alamat Mac di masing-masing:

/etc/sysconfig/network-scripts/ifcfg-eth0 - hapus baris HWADDR =.

/etc/udev/rules.d/70-persistent-net.rules - hapus dari ATTR {address} == hingga dan termasuk koma berikutnya.

Sekarang ketika Anda mengkloning VM dan mengubah jaringan alamat mac akan berfungsi karena alamat Mac tidak pernah ditulis ke salah satu file.

Scot Inscore
sumber
Ini bekerja untuk saya - seperti yang disebutkan, alamat MAC tidak pernah ditulis kembali ke salah satu file, sehingga Anda dapat terus mengubahnya dan antarmuka Anda akan tetap "eth0" dengan konfigurasi yang sama. Ini tampaknya hanya berfungsi jika Anda memiliki satu adapter jaringan, meskipun, kalau tidak saya mendapat penundaan boot lama di "Starting udev:" dan perangkat kedua saya disebut "rename3", mungkin karena aturan yang menyarankan kedua perangkat harus disebut "eth0 ".
doshea
Solusi yang bisa diterapkan untuk 1 adaptor. Juga jangan lupa untuk membuat jenis koneksi sebagai Bridge di pengaturan net.
Cherry
3

Saya membuat dan menghapus begitu banyak mesin virtual CentOS 6 Saya menulis beberapa Bashfu untuk memperbaiki eth0 setelah kloning di 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
Dipilih
sumber
1

Jika satu-satunya masalah Anda adalah alamat mac, Anda dapat menjalankan sesuatu yang mirip

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

Untuk memperbarui entri HWADDR.

Sunting: Karena sepertinya masalahnya adalah perubahan aktual dalam perangkat keras virtual Anda dapat mencoba yang berikut ini. (belum diuji dan dirujuk dari sini )

edit /etc/sysconfig / hwconf dan hapus semua referensi ke NIC sebelumnya dan jalankan kembali kudzu untuk melihat apakah ia mendeteksi perangkat keras baru. Anda mungkin perlu me-reboot.

Serigala tua
sumber
Saya mencoba mengubah alamat MAC secara manual pada eth0 misalnya, tetapi masih tidak berhasil. Upaya selanjutnya pada "service network force-reload", "ifup eth0" dll akan selalu berakhir dengan "Device eth0 sepertinya tidak ada ..." Bantuan?
Joshua
Apa jenis virtualisasi yang Anda gunakan dan bagaimana Anda mengkloning sistem?
OldWolf
VirtualBox, tapi saya tidak berpikir masalah virtualisasi. Ini harus seperti mematikan kotak fisik, menghapus adapter jaringan yang ada, dan menambahkan yang berbeda.
Joshua
@Josh Di mana file ifcfg- * yang sedang Anda edit karena ada tiga set - periksa / etc / sysconfig / network-scripts dan / etc / sysconfig / networking / devices dan / etc / sysconfig / networking / profiles / default ( ya, saya tahu - sepertinya ada hubungannya dengan alat / s yang Anda gunakan untuk mengatur adaptor). Yang pertama haruslah yang membuat perbedaan, tetapi Anda mungkin harus berurusan dengan yang lain juga.
Linker3000
1
Alasan saya bertanya dan bahwa jenis virtualisasi penting adalah karena menentukan seperti apa proses kloning itu. Klon VMware pada host yang sama tidak akan mengubah perangkat keras jaringan virtual kecuali Anda menyuruhnya. Dalam kasus Anda, masalahnya bukan alamat mac atau proses kloning, itu adalah Anda mengubah perangkat keras virtual.
OldWolf
1

Saya tidak menggunakan Vmware tetapi KVM dengan virsh - inilah yang telah saya lakukan.

Dibuat gambar 'dasar' dengan CentOS 6.4, ini adalah sumber dari semua klon saya. Setelah boot pertama saya membuat skrip seperti ini

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

Menambahkannya ke init dengan

chkconfig --add manglemac

Menghapus semua referensi ke / etc / sysconfig / network-scripts / ifcfg-eth0 dari HWADDR atau UUID, juga menghapus aturan udev dari /etc/udev/rules.d/70-persistent-net.rules.

Pada titik ini saya mematikan mesin dan mulai mengkloning. Semua berfungsi dengan baik. Skrip yang saya buat sangat sederhana tetapi berfungsi dengan baik, namun membuat beberapa asumsi tentang pengaturan Anda untuk jaringan (hanya eth0).

Saya harap akan membantu.

silviud
sumber
0

Saya berurusan dengan beberapa NIC dan tidak ada yang berhasil untuk saya (VMware Fusion 7 / VMware 6 dan yang lebih baru), jadi saya menulis naskah. Tarbal ada di sini .

Inilah READMEyang menyertainya:

  • Tarball ini dan skrip terkait akan mengubah alamat MAC mesin VMware CentOS 6 Anda yang baru dikloning atau di bawah mesin (tidak ada sistemd.)
  • Yang perlu Anda lakukan di mesin yang akan dikloning dari satu kali saja:

    1. memasang lshw
    2. ganti alamat MAC di semua Anda /etc/sysconfig/network-scripts/ifcfg-eth?dengan MACDADDY num di mana num adalah jumlah antarmuka jaringan. Anda harus mengikuti pola penamaan untuk file tersebut.
    3. menjalankan:

      chckconfig change_mac_address on
      

      Ini harus menambahkan tautan sym pada level run yang ditentukan dalam file

    4. Kloning mesin seperti biasa dan nyalakan. Seharusnya mengubah alamat MAC di setiap ifcfg-eth?file Anda ,
      • hapus file udev,
      • pindai ulang perangkat e1000 Anda,
      • dan restart jaringan

Masalah:

  • Tidak yakin mengapa, tetapi kadang-kadang Anda perlu memulai ulang jaringan untuk yang kedua kalinya agar semua NIC dikenali:

    /etc/init.d/network restart
    

    Memperbaiki ini dengan meletakkan sleep 20di awal/etc/init.d/network

  • Ini bukan masalah bagi saya, tetapi skrip bergantung pada lshwmengembalikan NIC dalam urutan yang samaifcfg-eth?
  • Ini mengasumsikan perangkat NIC Anda adalah e1000. Standar VMware?
  • Mungkin ada baiknya menukar penomoran ifcfg-eth?file Anda sehingga mereka cocok dengan apa lshwyang memberi kembali jika tidak bekerja dan Anda melakukan banyak mesin dengan banyak NIC.
  • Dengan satu NIC itu seharusnya bekerja.
  • Setelah startup pertama /usr/bin/change_mac_address.pldipindahkan ke/usr/bin/change_mac_address.pl.old
  • Ini akan membuatnya tidak berjalan pada setiap reboot meskipun tidak akan melakukan apa-apa jika tidak ada MACDADDY? di Andaifcfg-eth?
  • Anda juga dapat dan mungkin harus menjalankan

    chkconfig change_mac_address off
    
FFQ
sumber