Nama antarmuka jaringan berubah setelah pembaruan ke 15.10 - perubahan udev

55

Saya memperbarui mesin virtual yang menjalankan server Ubuntu 15,04 ke 15.10 stabil baru yang baru dirilis.

Tidak ada masalah nyata, tetapi setelah reboot mesin kehilangan koneksi jaringannya. lspcimenunjukkan kartu yang benar dan lsmodmembuktikan bahwa pengemudi telah dimuat.

Petunjuk tentang mengedit atau menghapus /etc/udev/rules.d/70-persistent-net.rulestidak berhasil (masih tidak ada jaringan, tidak ada file baru), yang terkenal /lib/udev/write_net_rulesbahkan tidak ada.

Saya tidak memiliki banyak petunjuk tentang udev dan systemd, jadi butuh beberapa waktu untuk menemukan di / sys / class / net bahwa nama antarmuka jaringan berubah. Menjadi ens32, yang diubah namanya dari eth0. Setelah saya mengubah /etc/network/interfaceskomunikasi jaringan diaktifkan kembali.

Tetapi - mengapa ini terjadi sama sekali? Dan jika itu terjadi, bukankah file antarmuka diperbarui secara otomatis?

Sekarang saya menghapus kartu jaringan virtual dan membuat yang lain, eth0menjadi eno16777728, yang tidak begitu, uhm, bagus.

Haruskah perilaku ini (setidaknya seperti prosedur peningkatan) dilaporkan sebagai bug?

Selanjutnya, apakah /etc/udev/rules.d/70-persistent-net.rulessudah usang sekarang? Dan (meskipun hanya sebagian terkait) bagaimana /etc/udev/rules.d/70-persistent-cd.rules?)

Sunting - pertanyaan tambahan (setelah jawaban diterima) Ketergantungan dari /etc/network/interfacesnama antarmuka yang sebenarnya mengganggu saya. Saya mencoba instalasi baru * ubuntu di mesin virtual lain. Yang mengejutkan saya, /etc/network/interfacesberisi referensi ke perangkat loopback saja. Namun, dengan VM asli saya, perubahan ini mencegah jaringan untuk muncul. Jadi apa lagi yang perlu saya ubah?

Sunting Nah, dari tes lain saya menemukan bahwa Ubuntu Server baru memiliki kartu antarmuka jaringan /etc/network/interfaces, sedangkan XUbuntu belum. Mungkin itu menggunakan network-manageratau sesuatu yang lain.

JeffRSon
sumber
Bug yang sama muncul lagi di 17.04. Harapan hanya selama tahap pra-rilis.
avtomaton

Jawaban:

56

Di Ubuntu 15.10 (Wily Werewolf), dimulai dengan systemd / udev akan secara otomatis menetapkan nama antarmuka jaringan yang dapat diprediksi dan stabil untuk semua antarmuka ( sumber ) Ethernet, Wlan, dan Wwan lokal .

Skema penamaan yang berbeda berikut untuk antarmuka jaringan sekarang didukung oleh secara native:

  1. Nama yang memasukkan nomor indeks yang disediakan Firmware / BIOS untuk perangkat terpasang (contoh eno1:)
  2. Nama menggabungkan Firmware / BIOS disediakan PCI Express angka indeks Slot hotplug (contoh: ens1)
  3. Nama yang memasukkan lokasi fisik / geografis dari konektor perangkat keras (contoh enp2s0:)
  4. Nama yang memasukkan alamat MAC antarmuka (contoh enx78e7d1ea46da:)
  5. Klasik, penamaan ethX kernel-asli yang tidak dapat diprediksi (contoh:) eth0- usang

Secara default, systemd sekarang akan menamai antarmuka dengan kebijakan berikut:

  1. jika informasi dari firmware tersebut berlaku dan tersedia, kembali ke
  2. jika informasi dari firmware tersebut berlaku dan tersedia, kembali ke
  3. jika berlaku, kembali ke
  4. tidak digunakan secara default, tetapi tersedia jika pengguna memilihnya.
  5. dalam semua kasus lainnya.

Bagaimana Anda menonaktifkan ini?

Pada dasarnya Anda memiliki opsi berikut:

  • Buat skema penamaan manual Anda sendiri, misalnya dengan memberi nama antarmuka Anda internet0, atau lan0. Untuk itu buat file aturan udev Anda sendiri dan tetapkan properti nama untuk perangkat. Pastikan untuk memesannya sebelum file kebijakan default, misalnya dengan memberi nama/etc/udev/rules.d/70-my-net-names.rules
  • Ubah file kebijakan default, untuk memilih skema penamaan yang berbeda, misalnya untuk menamai semua nama antarmuka setelah alamat MAC mereka secara default cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules:, lalu edit file di sana dan ubah baris seperlunya.
  • Lewati net.ifnames=0baris perintah kernel.
Kyodake
sumber
6
Apakah ini sumbernya? Bisakah Anda menambahkan tautan ke halaman catatan rilis resmi untuk Ubuntu (saya yakin itu ada di suatu tempat, tidak dapat menemukannya!)
Rmano
2
Ya, ini sumbernya.
Kyodake
4
Yang tidak masuk akal sama sekali adalah bahwa dia melakukan upgrade, bukan instalasi baru. Ini kedengarannya seperti bug Ubuntu yang sebenarnya, karena pemutakhiran harus meninggalkan sistem dalam kondisi kerja.
Will
1
@kyodake tidak ada folder / usr / lib / udev di ubuntu 15.10, ada / lib / udev
EdiD
1
@ End: ok, bug diperbaiki.
Kyodake
39

Ada cara yang lebih mudah diceritakan oleh ArchWiki Beginnersguide .

Pertama-tama dapatkan alamat MAC perangkat Anda

$ ip link

Output ditunjukkan oleh like

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

Alamat MAC perangkat Anda adalah

20:68:9d:xx:xx:xx

Cukup buat file (cukup buka dengan hak sudo di editor teks)

$ nano /etc/udev/rules.d/10-network.rules    

Tambahkan baris berikut

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

Ganti nama dengan nama yang Anda inginkan dan aa: bb: cc: dd: ee: ff dengan alamat MAC perangkat Anda.

Sekarang cukup reboot komputer Anda dan nama perangkat seharusnya sudah berubah.

JonnyTischbein
sumber
Solusi paling langsung dan sederhana! Terima kasih besar!
3bdalla
1
Untuk memastikan aturan TIDAK berlaku untuk antarmuka vlan dan jembatan Anda tambahkan DRIVERS=="?*",setelah ACTION=="add",. Lihat juga askubuntu.com/questions/767786/…
Donn Lee
16

Coba ini: Sunting Anda /etc/default/grub. Ubah jalur dari

GRUB_CMDLINE_LINUX=""

untuk

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

dan, akhirnya jalankan:

# update-grub

sebagai root, dan reboot sistem Anda.

Dênio Robson
sumber
Ini juga berfungsi untuk netboot. Saya berhasil menambahkan yang berikut ini ke pernyataan append dalam file syslinux.cfg saya: append (...) net.ifnames=0 (...)
carestad
Solusi ini juga berfungsi sempurna di Ubuntu 16.04!
Nullldata
Saya harus menambahkan parameter GRUB di atas (net.ifnames = 0) dan menghapus aturan penggantian nama udev agar vlan berfungsi, tetapi sekarang semuanya baik-baik saja. Terima kasih atas solusinya.
Albert Veli
TERIMA KASIH. Saya menginstal Ubuntu Server 16.04 pada server tanpa kepala dan tidak tahu nama apa yang diberikan antarmuka jaringan dan, akibatnya, server tidak ada di jaringan. Saya melakukan ini dan memastikan / etc / network / interfaces memiliki "eth0" sebagai nama antarmuka dan mengembalikan drive ke server. Sekarang online. Petunjuk untuk menginstal Ubuntu pada Acer Aspire H340 sudah ketinggalan zaman sejauh ini, jadi saya akan menulis sesuatu dengan harapan bahwa orang lain yang mencoba hal yang sama tidak akan membuang waktu sebanyak yang saya lakukan.
MetalMikester
5

Saya tahu ini mungkin sedikit terlambat dan penambahan 10-network.rules tampaknya telah membantu tetapi tidak sepenuhnya. Saya harus menambahkan nama kernel perangkat untuk mengubah nama. Inilah cara saya menjalankan /etc/udev/rules.d/10-network.rules agar berfungsi ...

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"

dan ubah KERNEL == "" menjadi apa yang disebut oleh penamaan perangkat Anda saat boot.

HTH

KC

Keith Clinton
sumber
3

Jika Anda memiliki instalasi baru

apt-get remove biosdevname

Kemudian

update-initramfs -u

Periksa untuk melihat apakah Anda memiliki file rud udev net. Jika demikian, hapus.

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

Sekarang edit / etc / network / interfaces, ganti nama interface ke eth0, eth1, ... dll.

Mulai ulang

RJ
sumber
2

Saya mendapatkan ini berfungsi dengan membuat file:

root@odroid:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
Mikael Lepistö
sumber