Sistem Linux yang dikloning dan /etc/udev/rules.d/70-persistent-net.rules

9

Saya mendirikan sebuah sistem Ubuntu dan dikonfigurasi dengan benar, termasuk menentukan eth0di /etc/network/interfaces. Saya kemudian mencitrakan sistem itu dan mengkloningnya pada sistem baru.

Ketika saya mem-boot sistem, pertama kali semuanya baik, tetapi beberapa reboot kemudian saya disambut dengan waktu konfigurasi jaringan habis. Ketika saya login saya menemukan bahwa eth0itu tidak tersedia.

Penelitian awal saya memungkinkan saya untuk mencoba ifdown -adan ifup -ayang saya lakukan beberapa kali tanpa efek yang jelas.

Penelitian akhirnya mengarahkan saya ke /etc/udev/rules.d/70-persistent-net.rules, di mana saya menemukan bahwa alamat MAC untuk sistem baru telah menciptakan eth1. Gagasan bagus, tetapi bukan yang saya inginkan terjadi.

Ketika saya boot sekarang, saya menemukan bahwa /etc/udev/rules.d/70-persistent-net.rulessekarang memiliki enam entri untuk enam Alamat HW yang berbeda, yang menurut saya aneh karena hanya ada satu antarmuka.

Pertanyaan saya adalah: apakah penggunaan saya ifup -aentah bagaimana membuat alamat MAC baru yang akan dibuat? Jika tidak, apakah ada pemikiran tentang bagaimana ini terjadi? Saya mengubah /etc/udev/rules.d/70-persistent-net.rulesuntuk memberi nama Alamat HW saat ini eth0dan tampaknya berfungsi, tetapi dapatkah saya yakin bahwa alamat itu tidak akan berubah lagi saat reboot?

Zobal
sumber
Pengunjung masa depan dari T ini: Ini bukan VM, ini adalah sistem fisik yang OP kloning ke perangkat keras baru!
slm

Jawaban:

7

Saya telah mengalami masalah yang sama persis di bawah CentOS ini dari waktu ke waktu ketika saya mengkloning mesin virtual (VM). Masalahnya berasal dari VM asli yang memasukkan entri ke dalam file ini untuk mengatur perangkat Ethernet eth0.

Contoh file .rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:dd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Masalahnya adalah kepala jelek ketika Anda mengkloning VM pertama, ini menyebabkan alamat MAC baru dibuat, di bawah beberapa teknologi virtualisasi seperti KVM untuk satu. Alamat MAC baru ini terdeteksi secara otomatis ketika VM hasil kloning di-boot dan dilihat sebagai perangkat Ethernet baru /lib/udev/write_net_rules, sehingga entri kedua ditambahkan ke file di atas.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Saya biasanya membuka file ini 70-persistent-net.rules,, dalam editor dan cukup mengkonsolidasikan baris sehingga alamat MAC baru ditugaskan ke eth0perangkat dan reboot.

...
# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

EDIT # 1

OP menindaklanjuti pertanyaan dengan informasi baru berikut.

Item # 1: Hmmm. Itu tidak akan berfungsi dalam kasus saya karena saya menjalankan perangkat lunak dengan lisensi fleksibel yang terkait dengan alamat mac. Terus mengubah alamat yang membuat perangkat lunak tidak berguna ..

@Zobal - Saya kenal dengan Flex. Karena ini adalah VM, Anda dapat mengubah MAC VM (dalam perangkat lunak VM - VirtualBox, KVM, dll.).

CATATAN: Flex adalah teknologi lisensi yang disediakan oleh Flexera . Mereka dulu disebut Software GlobeTrotter. Teknologi ini memungkinkan perangkat lunak diikat ke host fisik, atau dapat memiliki lisensi yang dikelola dari server pusat sebagai "token" di mana klien dapat memeriksa token untuk jangka waktu tertentu. Lisensi biasanya diikat ke host, dan host ini biasanya diidentifikasi dengan nomor unik yang dapat Anda temukan menggunakan perintah hostid.

Sebagai contoh:

$ hostid
a8c0c801

Item # 2: Dalam kasus saya ini bukan VM. Saya telah mengkloning satu sistem fisik ke sistem fisik lain.

Yang saya jawab: Baiklah, satu-satunya pilihan Anda adalah mengubah alamat MAC sistem yang baru menjadi sama dengan MAC sistem lainnya. Sadarilah bahwa 2 sistem ini tidak dapat ada di jaringan yang sama, jika tidak mereka akan saling bertentangan. Juga lisensi Flex biasanya tidak menggunakan MAC, mereka menggunakan nomor yang dapat diidentifikasi menggunakan perintah hostid!

Referensi

slm
sumber
Hmmm. Itu tidak akan berfungsi dalam kasus saya karena saya menjalankan perangkat lunak dengan lisensi fleksibel yang terkait dengan alamat mac. Mengubah alamat secara konstan membuat perangkat lunak tidak berguna ...
Zobal
@Zobal - Saya kenal dengan Flex. Karena ini adalah VM, Anda dapat mengubah MAC VM (dalam perangkat lunak VM - VirtualBox, KVM, dll.).
slm
Dalam kasus saya itu bukan VM. Saya telah mengkloning satu sistem fisik ke sistem fisik lain.
Zobal
@Zobal - yah maka satu-satunya pilihan Anda adalah mengubah alamat MAC sistem yang baru menjadi sama dengan MAC sistem lainnya. Sadarilah bahwa 2 sistem ini tidak dapat ada di jaringan yang sama, jika tidak mereka akan saling bertentangan. Juga lisensi Flex biasanya tidak menggunakan MAC, mereka menggunakan nomor yang dapat diidentifikasi menggunakan perintah hostid!
slm
lisensi flex adalah lisensi yang kami buat untuk mengikat perangkat lunak kami ke mesin tertentu, dan dalam hal ini memang menggunakan MAC. Perkembangan Baru: Saya menginstal ulang UBUNTU dari awal (bukan dari dan gambar) dan mendapatkan perilaku yang sama. Ini sebenarnya hanya muncul di shutdowns kotor (daya akan ditarik kembali). Adakah pikiran?
Zobal
0

hostid sama uniknya dengan alamat ip server Anda.
Dalam contoh Anda hostid adalah a8c0c801, apakah alamat ip server Anda adalah 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Chris
sumber