Thay đổi tên giao diện mạng sau khi cập nhật lên 15.10 - udev thay đổi


55

Tôi đã cập nhật một máy ảo chạy máy chủ Ubuntu 15.04 lên bản ổn định mới phát hành 15.10.

Không có vấn đề rõ ràng, nhưng sau khi khởi động lại, máy bị mất kết nối mạng. lspciđưa ra thẻ chính xác và lsmodchứng minh rằng trình điều khiển đã được tải.

Gợi ý về chỉnh sửa hoặc xóa /etc/udev/rules.d/70-persistent-net.ruleskhông thành công (vẫn không có mạng, không có tệp mới), sự nổi tiếng /lib/udev/write_net_rulesthậm chí không tồn tại.

Tôi không có nhiều manh mối liên quan đến udev và systemd, vì vậy tôi phải mất một thời gian để tìm trong / sys / class / net mà tên giao diện mạng đã thay đổi. Nó đã trở thành ens32, được đổi tên từ eth0. Sau khi tôi thay đổi /etc/network/interfacesgiao tiếp mạng được kích hoạt lại.

Nhưng - tại sao điều này lại xảy ra? Và nếu nó xảy ra, không nên cập nhật tập tin giao diện?

Bây giờ tôi đã xóa card mạng ảo và tạo một cái khác, eth0trở thành eno16777728, điều đó không phải vậy, uhm, thật tuyệt.

Hành vi này (ít nhất là hành vi nâng cấp) có nên được báo cáo là lỗi không?

Hơn nữa, /etc/udev/rules.d/70-persistent-net.rulesđã lỗi thời? Và (mặc dù chỉ liên quan một phần) thì /etc/udev/rules.d/70-persistent-cd.rulessao?)

Chỉnh sửa - câu hỏi bổ sung (sau khi trả lời được chấp nhận) Sự phụ thuộc /etc/network/interfacestừ tên giao diện thực tế làm phiền tôi. Tôi đã thử cài đặt mới * ubfox trong một máy ảo khác. Thật ngạc nhiên, chỉ /etc/network/interfaceschứa một tham chiếu đến thiết bị loopback. Tuy nhiên, với VM gốc của tôi, sự thay đổi này đã ngăn mạng xuất hiện. Vì vậy, những gì tôi cần phải thay đổi?

Chỉnh sửa Vâng, từ một thử nghiệm khác, tôi thấy rằng một Máy chủ Ubuntu mới thẻ giao diện mạng /etc/network/interfaces, trong khi XUbfox thì không. Có lẽ nó đang sử dụng network-managerhoặc cái gì khác.


Lỗi tương tự xuất hiện trở lại vào 17.04. Hy vọng chỉ trong giai đoạn tiền phát hành.
avtomaton

Câu trả lời:


56

Trong Ubuntu 15.10 (Wily Werewolf), bắt đầu với systemd / udev sẽ tự động gán tên giao diện mạng ổn định, có thể dự đoán cho tất cả các giao diện Ethernet, Wlan và Wwan cục bộ ( nguồn ).

Các lược đồ đặt tên khác nhau sau đây cho giao diện mạng hiện được hỗ trợ bởi udev:

  1. Tên kết hợp Firmware / BIOS cung cấp số chỉ mục cho các thiết bị trên máy bay (ví dụ eno1:)
  2. Các tên kết hợp Firmware / BIOS được cung cấp số chỉ mục khe cắm cắm nóng PCI Express (ví dụ ens1:)
  3. Tên kết hợp vị trí vật lý / địa lý của đầu nối của phần cứng (ví dụ enp2s0:)
  4. Tên kết hợp địa chỉ MAC của giao diện (ví dụ enx78e7d1ea46da:)
  5. Đặt tên ethX gốc nhân, không thể đoán trước (ví dụ eth0:) - không dùng nữa

Theo mặc định, systemd sẽ đặt tên cho các giao diện theo chính sách sau:

  1. nếu thông tin từ phần sụn có thể áp dụng và có sẵn, hãy quay lại
  2. nếu thông tin từ phần sụn có thể áp dụng và có sẵn, hãy quay lại
  3. nếu có thể, rơi trở lại
  4. không được sử dụng theo mặc định, nhưng có sẵn nếu người dùng chọn như vậy.
  5. trong tất cả các trường hợp khác.

Làm thế nào để bạn vô hiệu hóa điều này?

Về cơ bản, bạn có các tùy chọn sau:

  • Tạo sơ đồ đặt tên thủ công của riêng bạn, ví dụ bằng cách đặt tên giao diện của bạn internet0 hoặc lan0. Vì vậy, hãy tạo tệp quy tắc udev của riêng bạn và đặt thuộc tính tên cho thiết bị. Đảm bảo đặt hàng trước tệp chính sách mặc định, ví dụ bằng cách đặt tên cho nó/etc/udev/rules.d/70-my-net-names.rules
  • Thay đổi tệp chính sách mặc định, để chọn một lược đồ đặt tên khác, ví dụ để đặt tên tất cả các tên giao diện theo địa chỉ MAC của chúng theo mặc định : cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules, sau đó chỉnh sửa tệp ở đó và thay đổi các dòng nếu cần.
  • Truyền net.ifnames=0dòng lệnh kernel.

6
này là nguồn gốc? Bạn có thể thêm một liên kết đến trang ghi chú phát hành chính thức cho Ubuntu không (tôi chắc chắn nó ở đâu đó, không thể tìm thấy nó!)
Rmano

2
Vâng, đây là nguồn.
kyodake

4
Điều không có ý nghĩa gì cả là anh ta đã nâng cấp, không phải là bản cài đặt mới. Điều này nghe có vẻ như là một lỗi Ubuntu thực sự, vì việc nâng cấp sẽ khiến hệ thống ở trạng thái hoạt động.
Sẽ

1
@kyodake không có thư mục / usr / lib / udev trong ubfox 15.10, có / lib / udev
EdiD

1
@EdiD: ok, đã sửa lỗi.
kyodake

39

Có một cách dễ dàng hơn được nói bởi ArchWiki Beginnersguide .

Trước tiên hãy lấy địa chỉ MAC của thiết bị của bạn bằng cách

$ ip link

Sản lượng hiển thị bằng cách thích

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

Địa chỉ MAC của thiết bị của bạn là

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

Chỉ cần tạo tệp (chỉ cần mở bằng quyền sudo trong trình soạn thảo văn bản)

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

Thêm dòng sau

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

Thay thế tên bằng tên bạn muốn và aa: bb: cc: dd: ee: ff bằng địa chỉ MAC của thiết bị.

Bây giờ chỉ cần khởi động lại máy tính của bạn và tên thiết bị đã thay đổi.


Giải pháp trực tiếp và đơn giản nhất! Cảm ơn rất nhiều!
3bdalla

1
Để đảm bảo quy tắc KHÔNG áp dụng cho vlan và giao diện cầu nối của bạn thêm DRIVERS=="?*",sau ACTION=="add",. Xem thêm Askubfox.com/questions/767786/ Mạnh
Donn Lee

16

Hãy thử điều này: Chỉnh sửa của bạn /etc/default/grub. Thay đổi dòng từ

GRUB_CMDLINE_LINUX=""

đến

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

và, cuối cùng chạy:

# update-grub

là root và khởi động lại hệ thống của bạn.


Điều này cũng hoạt động cho netboot. Tôi đã thành công khi thêm phần sau vào câu lệnh chắp thêm trong tệp syslinux.cfg của mình: append (...) net.ifnames=0 (...)
carestad

Giải pháp này cũng hoạt động hoàn hảo trong Ubuntu 16.04!
Nullldata

Tôi đã phải thêm các tham số GRUB ở trên (net.ifnames = 0) và xóa các quy tắc đổi tên udev để làm cho vlans hoạt động, nhưng bây giờ mọi thứ đều ổn. Cảm ơn giải pháp.
Albert Veli

CẢM ƠN BẠN. Tôi đang cài đặt Ubuntu Server 16.04 trên một máy chủ không đầu và không biết nó được đặt tên giao diện mạng là gì và kết quả là máy chủ không có trên mạng. Tôi đã làm điều này và chắc chắn rằng / etc / mạng / giao diện có "eth0" làm tên giao diện và đặt ổ đĩa trở lại máy chủ. Nó hiện đang trực tuyến. Hướng dẫn cài đặt Ubuntu trên Acer Aspire H340 đã hết hạn, vì vậy tôi sẽ viết một cái gì đó với hy vọng rằng những người khác đang cố gắng sẽ không lãng phí nhiều thời gian như tôi đã làm.
MetalMikester

5

Tôi biết điều này có thể hơi muộn và việc thêm 10 mạng.rules dường như đã giúp nhưng không hoàn toàn. Tôi đã phải thêm tên kernel của thiết bị để đổi tên. Đây là cách tôi có /etc/udev/rules.d/10-network.rules để hoạt động ...

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

và thay đổi KernEL == "" thành hạt nhân của bạn đặt tên cho thiết bị khi khởi động.

HTH

KC


3

Nếu bạn có một cài đặt mới

apt-get remove biosdevname

Sau đó

update-initramfs -u

Kiểm tra xem nếu bạn có tập tin ruels net udev. Nếu vậy, loại bỏ nó.

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

Bây giờ chỉnh sửa / etc / mạng / giao diện, đổi tên các giao diện thành eth0, eth1, ... vv.

Khởi động lại


2

Tôi đã làm việc này bằng cách tạo tập tin:

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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.