Bagaimana Anda mengatur ulang /etc/networking/interfaces
saat menggunakan "nama antarmuka jaringan yang dapat diprediksi"?
Versi Ubuntu yang lebih tua dari 15,10 menggunakan nama adaptor jaringan seperti:
eth0
eth1
eth2
Mengganti kartu jaringan, atau memindahkan vm ke hypervisor baru, akan menyebabkan Linux menambah nomor antarmuka. Menghapus /etc/udev/rules.d/70-peristent-net.rules
akan membuat Linux digunakan kembali eth0
.
Ubuntu 15.10 dan yang lebih baru menggunakan ' Nama Antarmuka Jaringan yang Dapat Diprediksi '. Nama adaptor jaringan berasal dari alamat mac.
ens3
ens32
ens192
Saat memigrasi vm, jaringan tidak akan mulai karena /etc/network/interfaces
masih referensi adaptor jaringan lama yang tidak ada.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep 2
Apa cara terbaik untuk mereset file / etc / network / interfaces?
Saya perlu melakukan tindakan ini sebelum mematikan vm dan bermigrasi ke hypervisor baru karena saya menggunakan packer untuk membuat gambar emas otomatis, berdasarkan gambar koki / emas bento .
Saya menemukan menghapus / etc / network / interfaces tidak berfungsi karena file tidak secara otomatis dibuat ulang pada boot berikutnya setelah migrasi.
Saya sudah mencoba mengedit file grub saya untuk kembali ke konvensi penamaan 'eth0'. Sementara / etc / network / interfaces merujuk ke nama lama (eth0), vm tidak akan mendapatkan ip, dan setiap reboot akan menyebabkan vm menggunakan konvensi penamaan yang baru. Saya juga menemukan systemd akan selalu diutamakan kecuali saya bisa menjamin biosdevname=0
secara permanen tetap di konfigurasi grub . Tidak yakin bagaimana cara menerapkan ini secara permanen
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0"
Jika memungkinkan, saya lebih suka tidak menggunakan cloud init atau menggunakan skrip startup posting karena saya lebih suka menjaga gambar emas sebersih mungkin.
Tentunya ini adalah masalah yang penyedia cloud (Azure, AWS, RackSpace, Openstack) telah dipecahkan ketika mereka mengimpor vms. Saya tidak mungkin menjadi orang pertama yang mencoba dan memigrasi vm menggunakan nama antarmuka jaringan yang dapat diprediksi.
Saya sudah mencoba menjalankan perintah ini sebelum mematikan dan memigrasi vm
apt-get remove biosdevname -y;
ln -s /dev/null /etc/systemd/network/99-default.link;
Saya menemukan ketika saya memigrasi vm, itu /etc/network/interfaces
dan ip address
masih merujukens32
Jawaban:
Saya pikir OpenStack menggunakan cloud-init, format ConfigDrive, dan menyediakan konfigurasi jaringan yang cocok dengan perangkat keras VM. Sumber:
Jika Anda mengesampingkan skrip boot pertama, ada satu jawaban yang jelas.
https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
Beralih kembali ke nama antarmuka persisten lama bukanlah salah satu opsi yang didokumentasikan.
Alternatif lainnya adalah pengaturan di mana antarmuka jaringan diaktifkan secara default, apa pun namanya. Saya pikir NetworkManager mendukung ini secara default. systemd-networkd juga dapat diberitahu untuk melakukan ini .
Segera setelah Anda memiliki lebih dari satu perangkat jaringan untuk VM, mereka mungkin memerlukan konfigurasi khusus ...
Di luar VM, ada satu keuntungan nyata dari pendekatan gaya NetworkManager: PC mungkin memiliki beberapa antarmuka jaringan, mungkin dari jenis yang berbeda, dengan hanya satu dari mereka yang terhubung. Misalnya ini dapat dilihat pada beberapa motherboard premium, atau pada sistem di mana antarmuka jaringan pertama tidak berfungsi seperti yang diinginkan dan antarmuka kedua dipasang di beberapa titik.
sumber
ln -s /dev/null /etc/systemd/network/99-default.link
tidak ada bedanya. VMS saya masih menggunakan konvensi penamaan baru.Saya menyerah untuk mencoba melakukan ini dengan bersih, dan muncul dengan retasan berikut. Dengan menjalankan skrip berikut tepat sebelum mematikan vm dan memigrasi, vm akan memiliki eth0 sebagai adaptor jaringan saat dinyalakan.
Sebenarnya,
apt-get remove biosdevname
tidak diperlukan karena paket itu tidak diinstal secara default di ubuntu 16.04. Juga, menambahkanbios.devname=0
keGRUB_CMDLINE_LINUX_DEFAULT
tidak diperlukan karena biosdevname tidak diinstal. Itu mencegah jaringan dari melanggar jika biosdevname pernah diinstal di masa depan.sumber
Apakah Anda memerlukan nama antarmuka jaringan yang dapat diprediksi?
Solusi saya adalah meng-uninstall
biosdevname
, dan yang andal mengakibatkan selalu memiliki antarmuka jaringan yang dinamai eth0, eth1, dan sebagainya. Saya belum menemukan alasan yang baik untuk menginstal nama antarmuka jaringan atau biosdevname yang dapat diprediksi.di
/etc/udev/rules.d/70-persistent-net.rules
sinilah Anda dapat mengubah alamat mac perangkat keras apa yang dinamai dengan eth0, eth1, dan sebagainya. Saya biasanya menghapus isi file ini, menyimpannya sebagai file kosong, reboot, lalu saya memiliki catatan bersih dengan adapter jaringan yang benar muncul ...^^ di mana xx: xx: xx: xx: xx: xx adalah alamat mac unik adapter jaringan Anda.
Saya tahu Anda menyebutkan menghapus file ini bukan solusinya, tetapi saya memposting contoh di atas karena setidaknya di Suse itu
/lib/udev/write_net_rules
yang membuat file ini. Jadi lihat apakah pelacakan kembali ke file ini membantu, jika ini berlaku untuk distribusi Anda, Anda mungkin dapat memodifikasinya untuk menyelesaikan masalah Anda.perhatikan ini yang saya tahu dari Suse versi 11 yang merupakan cara lama Init, sebelum systemd. Tidak yakin apakah ini telah berubah untuk versi terbaru linux di bawah systemd.
sumber
Berlari ke pembaruan Ubuntu 14.04 host ini menjadi 16.04.
biosdevname
paket tidak diinstal sehingga terpaksa"biosdevname=0 net.ifnames=0"
di/etc/default.grub
seperti yang dinyatakan oleh OP.Saya menjalankan skrip ini, dan jika output terlihat bagus, arahkan kembali output ke
/etc/udev/rules.d/70-persistent-net.rules
untuk membangun aturan udev baru jika seandainya kernel memutuskan untuk menyebutkan port ethernet dalam urutan yang berbeda.sumber