ไม่สามารถเริ่มยกอินเทอร์เฟซเครือข่ายหลังจากอัปเกรดเป็น 16.04


28

ฉันเพิ่งอัพเกรดเครื่องเซิร์ฟเวอร์เสมือน 14.04 เป็น 16.04 หลังจากรีบูตเครื่อง VM ฉันเห็นข้อผิดพลาดต่อไปนี้:

[FAILED] Failed to start Raise network interfaces.
 See 'systemctl status networking.service' for details

หลังจากเข้าสู่ระบบฉันสามารถเรียกใช้คำสั่งดังกล่าวและรับเอาท์พุทต่อไปนี้ (ภาพที่ฉันไม่สามารถเชื่อมต่อ):

ป้อนคำอธิบายรูปภาพที่นี่

การกำหนดค่าที่/etc/network/interfacesดูดี - มีการกำหนดค่าด้วยตนเอง eth0 (ไม่ได้ใช้ dhcp ที่นี่)

สิ่งที่ทำให้ฉันสงสัยว่าเป็นifconfig -aรายการ

  • ens160
  • ดูเถิด

ที่ฉันคาดหวัง

  • eth0
  • ดูเถิด

พยายามเพิ่มอุปกรณ์ eth0 ผ่าน

sudo ifup -v eth0 

เอาท์พุท:

...
Cannot find device "eth0"
Failed to bring up eth0.

อุปกรณ์เครือข่ายแบบใช้สายเสมือนนั้นยังคงตั้งค่าไว้ใน VM เหมือนเดิม

ip linkแสดงให้เห็นเช่นกันloและens160- ที่ens160มีที่อยู่ mac ที่กำหนดค่าใน vmware สำหรับอุปกรณ์เครือข่ายเสมือนเดียวที่กำหนดค่า

UPDATE

ฉันสามารถแก้ไขปัญหาได้หากฉันเปลี่ยนการอ้างอิงทั้งหมดของ eth0 /etc/network/interfacesเป็น ens160

แต่ - ฉันรู้สึกผิดด้วยเหตุผลหลายประการ:

  1. ฉันต้องการที่จะเข้าใจปัญหานี้
  2. ฉันต้องการติดกับ eth0 แทน ens160

ดังนั้นใครบางคนสามารถอธิบายการเปลี่ยนแปลงนี้ได้ซึ่งไม่ได้เกิดขึ้นกับเครื่อง 14.04 เครื่องอื่น ๆ ในเซิร์ฟเวอร์เดียวกันซึ่งฉันอัพเกรดเป็น 16.04 ด้วย


1
อาจซ้ำกับ: askubuntu.com/questions/704361/…
dufte

คำอธิบายที่คล้ายกันของการแก้ไขอยู่ที่นี่: askubuntu.com/a/830163/543586
theINtoy

คำตอบ:


15

เหตุผล

ปัญหาเกิดจาก Predictable-Network-Interface-Names จาก systemd / udev

ทางออกที่เป็นไปได้

ตามแหล่งที่มานี้คุณสามารถ:

  • คุณปิดใช้งานการมอบหมายชื่อคงที่ดังนั้นชื่อเคอร์เนลที่ไม่แน่นอนจะถูกใช้อีกครั้ง สำหรับสิ่งนี้เพียงแค่ปกปิดไฟล์กฎของ udev สำหรับนโยบายเริ่มต้น: ln -s / dev / null /etc/udev/rules.d/80-net-setup-link.rules
  • คุณสร้างรูปแบบการตั้งชื่อด้วยตนเองของคุณเองตัวอย่างเช่นโดยการตั้งชื่ออินเทอร์เฟซ "internet0", "dmz0" หรือ "lan0" สำหรับการสร้างไฟล์. link ของคุณเองใน / etc / systemd / network / ที่เลือกชื่อที่ชัดเจนหรือรูปแบบการตั้งชื่อที่ดีขึ้นสำหรับอินเทอร์เฟซของคุณบางส่วนหรือทั้งหมด ดู systemd.link (5) สำหรับข้อมูลเพิ่มเติม
  • คุณผ่าน net.ifnames = 0 บนบรรทัดคำสั่งเคอร์เนล

โซลูชั่นที่ประยุกต์

ฉันไม่สร้างไฟล์ใหม่10-rename-network.rulesใน/etc/udev/rules.d/และเพิ่มเนื้อหาต่อไปนี้เพื่อมัน

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ff:ff:ff:ff:ff", NAME="eth0"

ที่ไหน

  • eth0 = ชื่ออินเตอร์เฟสเครือข่ายที่ต้องการซึ่งใช้ใน /etc/network/interfaces
  • ff:ff:ff:ff:ff:ff = ที่อยู่ mac ของฮาร์ดแวร์ของอุปกรณ์เครือข่าย

ฉันขอแนะนำให้บูตเครื่องใหม่หลังจากเสร็จสิ้นเพื่อให้แน่ใจว่าการเปลี่ยนแปลงนั้นเหนียว


ฉันค้นพบว่าฉันต้องวิ่งupdate-initramfs -uเพื่อให้การเปลี่ยนแปลงของฉันมีผล
Aneel

ในระบบ Debian ของฉันไฟล์คือ '/etc/udev/rules.d/70-persistent-net.rules'
jeremiah

6

แก้ไขโดยการเปลี่ยนไฟล์ /etc/network/interfaces.d/setup จาก:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

ไปที่:

auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp

1

br0ในกรณีของปัญหานี้เกี่ยวข้องกับความพยายามที่จะนำมาขึ้นสะพานของฉัน ฉันลืมที่จะทำสิ่งนี้:

sudo apt-get install bridge-utils

ก่อนและเพื่อให้อะแดปเตอร์ของฉันไม่สามารถเริ่มต้นได้


2
สิ่งนี้แตกต่างจากปัญหาของ OP ฉันไม่แน่ใจว่าคำตอบนี้เป็นของคำถามนี้!
Zanna

0

คุณอาจต้องการลบ / แก้ไขแคช udev สำหรับชื่อเครือข่ายอินเทอร์เฟซแบบต่อเนื่อง / คงที่ซึ่งอยู่ที่นี่: /etc/udev/rules.d/70-persistent-net.rules

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