ชื่อเน็ตเวิร์กอินเตอร์เฟสเปลี่ยนหลังจากอัพเดตเป็น 15.10 - การเปลี่ยนแปลง udev


55

ฉันอัปเดตเครื่องเสมือนที่ใช้เซิร์ฟเวอร์ Ubuntu 15.04 เป็นรุ่นใหม่ที่เสถียร 15.10

ไม่มีปัญหาชัดเจน แต่หลังจากรีบูตเครื่องขาดการเชื่อมต่อเครือข่าย lspciแสดงการ์ดที่ถูกต้องและlsmodพิสูจน์ว่าได้โหลดไดรเวอร์แล้ว

คำแนะนำเกี่ยวกับการแก้ไขหรือลบ/etc/udev/rules.d/70-persistent-net.rulesไม่ประสบความสำเร็จ (ยังไม่มีเครือข่ายไม่มีไฟล์ใหม่) ที่มีชื่อเสียง/lib/udev/write_net_rulesไม่ได้อยู่

ฉันไม่ค่อยรู้เรื่องเกี่ยวกับ udev และ systemd ดังนั้นฉันต้องใช้เวลาพอสมควรในการค้นหาใน / sys / class / net ว่าชื่อเครือข่ายอินเทอร์เฟซเปลี่ยนไป มันก็กลายเป็นที่ถูกเปลี่ยนชื่อจากens32 eth0หลังจากฉันเปลี่ยน/etc/network/interfacesการสื่อสารเครือข่ายถูกเปิดใช้งานอีกครั้ง

แต่ - ทำไมสิ่งนี้ถึงเกิดขึ้นได้ทั้งหมด? และถ้าเกิดขึ้นไฟล์อินเทอร์เฟซไม่ควรอัปเดตโดยอัตโนมัติหรือไม่

ตอนนี้ฉันลบการ์ดเครือข่ายเสมือนและสร้างอีกอันeth0กลายเป็นeno16777728ซึ่งก็ไม่เป็นเช่นนั้นอืมดี

ควรรายงานพฤติกรรมนี้ (อย่างน้อยขั้นตอนการอัปเกรด) เป็นข้อผิดพลาดหรือไม่?

นอกจากนี้/etc/udev/rules.d/70-persistent-net.rulesล้าสมัยแล้วหรือยัง และ (แม้ว่าจะเกี่ยวข้องเพียงบางส่วนเท่านั้น) จะเป็น/etc/udev/rules.d/70-persistent-cd.rulesอย่างไร)

แก้ไข - คำถามเพิ่มเติม (หลังจากคำตอบที่ยอมรับ) การพึ่งพา/etc/network/interfacesจากชื่ออินเทอร์เฟซที่แท้จริงรบกวนฉัน ฉันลองติดตั้ง * ubuntu ใหม่ในเครื่องเสมือนอื่น ฉันประหลาดใจที่/etc/network/interfacesมีการอ้างอิงถึงอุปกรณ์ลูปแบ็คเท่านั้น อย่างไรก็ตามด้วย VM ดั้งเดิมของฉันการเปลี่ยนแปลงนี้ป้องกันเครือข่ายที่จะเกิดขึ้น ดังนั้นฉันต้องเปลี่ยนอะไรอีก

แก้ไข ดีจากการทดสอบอื่นฉันพบว่าเซิร์ฟเวอร์ Ubuntu ใหม่มีการ์ดเชื่อมต่อเครือข่ายใน/etc/network/interfacesขณะที่ XUbuntu ไม่มี อาจจะใช้network-managerหรืออย่างอื่น


ข้อผิดพลาดเดียวกันปรากฏขึ้นอีกครั้งใน 17.04 หวังว่าในช่วงเปิดตัวล่วงหน้าเท่านั้น
avtomaton

คำตอบ:


56

ใน Ubuntu 15.10 (Wily Werewolf) การเริ่มต้นด้วย systemd / udev จะกำหนดชื่ออินเทอร์เฟซเครือข่ายที่เสถียรและคาดการณ์ได้โดยอัตโนมัติสำหรับอีเธอร์เน็ตท้องถิ่น, Wlan และ Wwan อินเตอร์เฟส ( แหล่งที่มา )

โครงร่างการตั้งชื่อที่แตกต่างกันต่อไปนี้สำหรับอินเตอร์เฟสเครือข่ายได้รับการสนับสนุนโดย udev

  1. ชื่อผสมผสานเฟิร์มแว / BIOS ที่จัดไว้ให้สำหรับตัวเลขดัชนี on-board อุปกรณ์ (ตัวอย่าง: eno1)
  2. ชื่อผสมผสาน / BIOS มีให้เฟิร์มแวตัวเลขดัชนี PCI Express สล็อต hotplug (ตัวอย่าง: ens1)
  3. ชื่อผสมผสานตำแหน่งทางกายภาพ / ทางภูมิศาสตร์ของตัวเชื่อมต่อของฮาร์ดแวร์ (ตัวอย่าง: enp2s0)
  4. ชื่อผสมผสานอินเตอร์เฟซที่อยู่ MAC (ตัวอย่าง: enx78e7d1ea46da)
  5. คลาสสิกการตั้งชื่อ ethx เคอร์เนลพื้นเมืองที่คาดเดาไม่ได้ (ตัวอย่าง:) eth0- เลิกใช้แล้ว

ตามค่าเริ่มต้น systemd จะตั้งชื่ออินเทอร์เฟซตามนโยบายต่อไปนี้:

  1. หากข้อมูลจากเฟิร์มแวร์นั้นสามารถใช้งานได้และพร้อมใช้งานให้กลับไปที่
  2. หากข้อมูลจากเฟิร์มแวร์นั้นสามารถใช้งานได้และพร้อมใช้งานให้กลับไปที่
  3. หากทำได้ให้กลับไปใช้
  4. ไม่ได้ใช้เป็นค่าเริ่มต้น แต่จะใช้ได้หากผู้ใช้เลือก
  5. ในกรณีอื่น ๆ ทั้งหมด

คุณจะปิดการใช้งานนี้ได้อย่างไร

โดยทั่วไปคุณมีตัวเลือกดังต่อไปนี้:

  • สร้างรูปแบบการตั้งชื่อด้วยตนเองของคุณเองเช่นโดยตั้งชื่ออินเทอร์เฟซ internet0 หรือ lan0 สำหรับการสร้างไฟล์กฎ udev ของคุณเองและตั้งค่าคุณสมบัติชื่อสำหรับอุปกรณ์ ตรวจสอบให้แน่ใจว่าได้สั่งซื้อก่อนไฟล์นโยบายเริ่มต้นตัวอย่างเช่นโดยการตั้งชื่อ/etc/udev/rules.d/70-my-net-names.rules
  • เปลี่ยนไฟล์นโยบายเริ่มต้นสำหรับการเลือกรูปแบบการตั้งชื่อที่แตกต่างกันตัวอย่างเช่นสำหรับการตั้งชื่ออินเทอร์เฟซทั้งหมดหลังจากที่อยู่ MAC ของพวกเขาตามค่าเริ่มต้น: cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rulesจากนั้นแก้ไขไฟล์ที่นั่นและเปลี่ยนบรรทัดตามความจำเป็น
  • ส่งผ่านnet.ifnames=0บนบรรทัดคำสั่งเคอร์เนล

6
คือนี้แหล่งที่มา? คุณสามารถเพิ่มลิงก์ไปยังหน้าบันทึกประจำรุ่นอย่างเป็นทางการสำหรับ Ubuntu (ฉันแน่ใจว่ามันอยู่ที่ไหนสักแห่งไม่สามารถหาได้!)
Rmano

2
ใช่นี่คือแหล่งที่มา
kyodake

4
สิ่งที่ไม่สมเหตุสมผลเลยก็คือเขาได้ทำการอัพเกรดไม่ใช่การติดตั้งใหม่ สิ่งนี้ฟังดูเหมือนข้อผิดพลาดของ Ubuntu เนื่องจากการอัปเกรดควรปล่อยให้ระบบอยู่ในสถานะใช้งาน
จะ

1
@kyodake ไม่มีโฟลเดอร์ / usr / lib / udev ใน ubuntu 15.10, มี / lib / udev อยู่
EdiD

1
@EdiD: ตกลงแก้ไขข้อผิดพลาด
kyodake

39

มีวิธีที่ง่ายกว่าที่ArchWiki Beginnersguideบอก

ก่อนรับอุปกรณ์ของคุณที่อยู่ MAC โดย

$ ip link

เอาท์พุทแสดงโดยชอบ

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

ที่อยู่ MAC ของคุณคือ

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

เพียงสร้างไฟล์ (เพียงเปิดด้วยสิทธิ์ sudo ในโปรแกรมแก้ไขข้อความ)

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

เพิ่มบรรทัดต่อไปนี้

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

แทนที่ชื่อด้วยชื่อที่คุณต้องการและ aa: bb: cc: dd: ee: ff ด้วยอุปกรณ์ของคุณที่อยู่ MAC

ตอนนี้เพียงรีคอมพิวเตอร์ของคุณและชื่ออุปกรณ์ควรมีการเปลี่ยนแปลง


ทางออกที่ง่ายและตรงที่สุด! ขอบคุณมาก!
3bdalla

1
เพื่อให้แน่ใจว่ากฎใช้ไม่ได้กับ VLAN และสะพานอินเตอร์เฟซของคุณเพิ่มหลังDRIVERS=="?*", ACTION=="add",ดูเพิ่มเติมได้ที่askubuntu.com/questions/767786/…
Donn Lee

16

ลองนี้ แก้ไข/etc/default/grubของคุณ เปลี่ยนสายจาก

GRUB_CMDLINE_LINUX=""

ไปยัง

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

และในที่สุดก็ทำงาน:

# update-grub

เป็น root และรีบูทระบบของคุณ


นอกจากนี้ยังใช้งานได้กับ netboot ฉันประสบความสำเร็จในการเพิ่มคำสั่งต่อไปนี้ในไฟล์ syslinux.cfg ของฉัน: append (...) net.ifnames=0 (...)
carestad

โซลูชั่นนี้ใช้งานได้ดีใน Ubuntu 16.04 เช่นกัน!
Nullldata

ฉันต้องเพิ่มพารามิเตอร์ GRUB ด้านบน (net.ifnames = 0) และลบกฎการเปลี่ยนชื่อ udev เพื่อให้ vlans ทำงาน แต่ตอนนี้ทุกอย่างเรียบร้อย ขอบคุณสำหรับการแก้ปัญหา
Albert Veli

ขอขอบคุณ. ฉันกำลังติดตั้ง Ubuntu Server 16.04 บนเซิร์ฟเวอร์ที่ไม่มีหัวและไม่รู้ว่าชื่ออะไรที่ให้อินเทอร์เฟซเครือข่ายและทำให้เซิร์ฟเวอร์ไม่ได้อยู่ในเครือข่าย ฉันทำสิ่งนี้และทำให้แน่ใจว่า / etc / network / interfaces มี "eth0" เป็นชื่ออินเตอร์เฟสและใส่ไดรฟ์กลับเข้าไปในเซิร์ฟเวอร์ ออนไลน์แล้ว คำแนะนำในการติดตั้ง Ubuntu บน Acer Aspire H340 ล้าสมัยไปแล้วเท่าที่เกี่ยวข้องดังนั้นฉันจะเขียนอะไรบางอย่างด้วยความหวังว่าคนอื่น ๆ ที่พยายามทำแบบเดียวกันจะไม่เสียเวลามากเท่าที่ฉันทำ
MetalMikester

5

ฉันรู้ว่ามันอาจจะช้าไปหน่อยและการเพิ่ม 10-network.rules ดูเหมือนว่าจะช่วยได้ แต่ก็ไม่สมบูรณ์ ฉันต้องเพิ่มชื่อเคอร์เนลของอุปกรณ์เพื่อเปลี่ยนชื่อ นี่คือวิธีที่ฉันได้รับ /etc/udev/rules.d/10-network.rules เพื่อทำงาน ...

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

และเปลี่ยน KERNEL == "" เป็นสิ่งที่เคอร์เนลของคุณตั้งชื่ออุปกรณ์เมื่อบูท

HTH

KC


3

หากคุณมีการติดตั้งใหม่

apt-get remove biosdevname

แล้วก็

update-initramfs -u

ตรวจสอบว่าคุณมีไฟล์ udev net ruels หรือไม่ ถ้าเป็นเช่นนั้นลบออก

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

ตอนนี้แก้ไข / etc / network / interfaces เปลี่ยนชื่ออินเตอร์เฟสเป็น eth0, eth1, ... ฯลฯ

Reboot


2

ฉันได้รับการทำงานโดยการสร้างไฟล์:

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"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.