Làm cách nào để bật Tên giao diện mạng có thể dự đoán được


12

Tôi đã quyết định kiểm tra xem tên thiết bị ethernet của tôi sẽ kết thúc với cái tên nào, nhưng trái với các bản phát hành khác , Debian dường như không kích hoạt thay đổi này (hoặc đang giữ nó lại?),

  • Giữ sơ đồ đặt tên giao diện mạng liên tục cũ cho đến bây giờ và thực hiện chọn tham gia mới thông qua net.ifnames = 1 trên dòng lệnh kernel.

Vấn đề là tôi phải chỉnh sửa các dòng kernel grub và có vẻ như quá mức cần thiết cho một cái gì đó có thể bị vô hiệu hóa bằng cách sửa đổi một tập tin . Có cách nào khác không?


Có lẽ bạn muốn kiểm tra liên kết này: science.uva.nl/research/air/wiki/LogicalInterfaceNames Bạn có thể tìm thấy một công việc xung quanh như nameif và tập tin khởi động cập nhật ... @Braiam
user1527227

@ user1527227 đó chính xác là những gì tôi không muốn làm.
Braiam

Trên jesse, bạn chỉ cần sửa đổi một dòng trong / etc / default / grub. Khi bị khò khè, thực sự không có cách nào để kích hoạt AFAIK này. Tôi thực sự thích sơ đồ đặt tên mới, vì vậy tôi thiết lập các quy tắc udev của riêng mình trên các máy chủ khò khè.
GnP

Câu trả lời:


11

Phiên bản 220-7 trên Debian đã bỏ bản vá tạo ra lựa chọn này:

* Switch to net.ifnames persistent network interfaces (on new
  installations/for new hardware), and deprecate the old
  75-persistent-net-generator.rules.

Điều này xuất phát từ một đề xuất trong danh sách debian-devel . Các hệ thống đang sử dụng cách đặt tên cũ sẽ không được đổi tên cho đến khi người dùng di chuyển. Đọc README.Debian để biết hướng dẫn di chuyển.

Tên mới có thể được dự đoán bằng cách sử dụng:

sudo udevadm test /sys/class/net/eth0 2>/dev/null |grep ID_NET_NAME_

nơi eth0là tên hiện tại của thiết bị.


5

Tôi giả sử bạn đang nói về sid hoặc jessie. Đối với khò khè, bạn có thể muốn thử backport của v204 .

Có thể có một số quan niệm sai lầm khi chơi ở đây: như có thể thấy từ các quy tắc udev ở đây (đối với v208 hiện đang ở bên cạnh), các nhà phát triển udev đã chọn rõ ràng cmdline kernel làm cách mặc định cho phép chức năng này.
Tôi không thấy bất cứ điều gì vốn đã "quá mức" với việc sử dụng giao diện đã chọn cho nó và chỉ cần đưa GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"vào /etc/default/grub. Có bất kỳ tác dụng phụ cụ thể mà bạn lo lắng?

Thực tế là câu trả lời mà bạn đề cập đề xuất xóa một tệp để vô hiệu hóa nó là một hack (ít nhất là trong trường hợp của Debian) sẽ không hoạt động lâu dài bởi vì trong debian, các quy tắc đó được lưu trữ /lib/udev/rules.d, tức là: chúng sẽ bị ghi đè một bản nâng cấp (bên cạnh đó, vô hiệu hóa chức năng bằng cách loại bỏ hiệu quả tệp mô tả nó có ý nghĩa, nhưng cho phép nó khác về cơ bản, vì vậy tôi nghĩ rằng đây là một so sánh không công bằng).

OTOH, nếu bạn có lý do cụ thể cho việc không sử dụng cmdline kernel, bạn có thể báo cáo lỗi đối với gói debian và yêu cầu người bảo trì chuyển các quy tắc này sang /etc/udev/. Sau đó, về mặt lý thuyết bạn có thể chuyển đổi giữa các quy tắc "liên tục" hiện tại và quy tắc "dự đoán" mới.

Nhưng chỉ cần FYI: nhìn vào các nguồn cho phiên bản 209, nó dường như loại bỏ net.if_nameshoàn toàn việc kiểm tra, vì vậy câu hỏi của bạn có thể cần một số lần tái lập trong tương lai gần.


1
"rõ ràng đã chọn cmdline kernel làm cách mặc định cho phép chức năng này." thực ra nó là một bản vá Debian thực hiện điều này chứ không phải các nhà phát triển udev. Họ chỉ bao gồm một phương thức để từ chối khởi động, Debian đã thay đổi phương thức đó thành chọn tham gia và cho phép nó dễ dàng vì nó được bật theo mặc định.
Braiam

@Braiam: Bắt đẹp quá! Nhưng tôi nghĩ rằng đối số chính vẫn là một lựa chọn udev sử dụng cmdline kernel làm giao diện, cho dù để bật hay tắt nó.
Leo Antunes

Tôi đã chỉnh sửa dòng lệnh kernel để bao gồm net.ifname=1tham số, nhưng tính năng này không được kích hoạt trên Linux Mint. Những bản phân phối Linux nào được biết là có hỗ trợ cho tính năng này?
sherrellbc

0

Trên Debian / Ubuntu, bắt đầu với udev 220, bạn có thể bật tên mới bằng cách đổi tên tệp này:

sudo mv -T /etc/udev/rules.d/70-persistent-net.rules{,.old}

Theo đề xuất /usr/share/doc/udev/README.Debian.gz, tiếp theo là

sudo update-initramfs -u

Sau đó khởi động lại (hoặc rmmod + insmod của mô-đun điều khiển card mạng của bạn).


-1

Ubuntu 15.10 sử dụng biosdevnamekhông cung cấp tên giao diện mạng có thể dự đoán được. Ngay cả khi bạn xóa nó (apt-get remove biosdevname) và chỉnh sửa grub ( GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1") và các quy tắc liên tục, bạn vẫn không nhận được các giao diện mạng dự đoán.

Lý do chính dường như là khả năng tương thích ngược. Tôi đã thử nghiệm nó ngay bây giờ với 2 thiết bị USB băng thông rộng di động và tên giao diện mạng được đặt tên không nhất quán trên mỗi lần khởi động (ví dụ: giao diện thứ nhất usb0, usb1 thứ hai và ngược lại). Lý do chính có vẻ tương thích ngược.

Có một số lỗi mở trên launchpad (ví dụ: cái này ) nhưng câu trả lời ngắn gọn là nếu bạn đang tìm kiếm tên giao diện mạng có thể dự đoán được, bạn nên tìm một bản phân phối khác.


Hiểu rồi! Tôi thực sự sẽ cập nhật câu trả lời vì tôi nghĩ rằng tôi đã nhận được nó.
Anthony Hunt

@roalma Tôi đã cập nhật câu trả lời! Xin lỗi cho bài viết "giống như bình luận" trước đây.
Anthony Hunt

Debian mặc định hỗ trợ chức năng này kể từ phiên bản 220-7 khi họ bỏ bản vá khắc phục hành vi đó. Bây giờ các hệ thống được cài đặt mới sẽ sử dụng các tên dự đoán theo mặc định.
Braiam
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.