đổi tên giao diện mạng trong Ubuntu 16.04 với systemd không thành công


14

Tôi đang sử dụng Máy chủ Ubuntu 16.04 LTS không đầu với hai card mạng vật lý, được đặt tên là enp5s0f0 và enp5s0f1.

Tôi muốn đổi tên các giao diện này, và làm theo ví dụ này . Do đó, tôi đã tạo tệp /lib/systemd/network/70-myinterface.link(nguồn gốc dường như không hoạt động) như thế này (tôi đặt địa chỉ mac chính xác):

[Match]
MACAddress=12:34:56:78:9a:bc

[Link]
Name=dmz0

và khởi động lại máy chủ. Thật không may, giao diện không được đổi tên, mặc dù udevadmcho thấy tệp cấu hình của tôi được sử dụng:

$ udevadm info /sys/class/net/enp5s0f1
P: /devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: ID_BUS=pci
E: ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
E: ID_MODEL_ID=0x1096
E: ID_NET_DRIVER=e1000e
E: ID_NET_LINK_FILE=/lib/systemd/network/70-myinterface.link  <-- my file
E: ID_NET_NAME_MAC=enx123456789abc
E: ID_NET_NAME_PATH=enp5s0f1
E: ID_OUI_FROM_DATABASE=Intel Corporation
E: ID_PATH=pci-0000:05:00.1
E: ID_PATH_TAG=pci-0000_05_00_1
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_VENDOR_ID=0x8086
E: IFINDEX=3
E: INTERFACE=enp5s0f1
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp5s0f1
E: TAGS=:systemd:
E: USEC_INITIALIZED=1900192

Bạn có biết tại sao việc đổi tên không hoạt động không?


1
Tôi nghĩ rằng / etc / systemd / network sẽ là vị trí tốt nhất để tạo tập tin này.
NGRhodes

@NGRhodes Tôi đã giả sử một lỗi đánh máy dựa trên ví dụ được trích dẫn, nhưng ai biết được?
Anh Cả Geek

Ngoài ra, kiểm tra người quản trị mạng không chạy, superuser.com/a/948996/127393 đề nghị người quản trị mạng có quyền ưu tiên
NGRhodes

Sau khi tôi đã đặt tiền thưởng, tôi nhận thấy rằng có một tệp quy tắc udev mới trong 16.04 luôn buộc đặt tên loại địa chỉ MAC cho bộ điều hợp USB trước khi tham khảo mạng (/lib/udev/rules.d/73-usb-net-by -mac.rules). Điều này hoàn toàn không đúng ... Tôi đã phải vô hiệu hóa hoàn toàn quy tắc của nó, điều này làm cho tệp .link hoạt động trở lại. Tuy nhiên, tôi không chắc đó là lựa chọn chính xác nhất. '
Antti Haapala

Việc sử dụng MACAddress= [Match]không hiệu quả với tôi trong linkcác tập tin, vì vậy tôi đã kết thúc việc sử dụng Path=thay thế. Bạn cũng nên thử. Ngoài ra, bạn có thể kiểm tra linktệp nào khớp với thiết bị của mình bằng udevadm test-builtin net_setup_link /sys/class/net/enp5s0f1lệnh
webKnjaZ

Câu trả lời:


8

Điều này có thể hoặc không thể giúp đỡ .. Tôi sẽ kiểm tra /etc/udev/rules.d và xem bạn có 70-kiên trì-net.rules không. Bạn có thể đổi tên chúng bằng tập tin đó

Của tôi trông như thế này:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="e0:cb:ee:d7:ff:9a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Nếu bạn có các mục nhập cho thẻ của mình trong tệp này, bạn có thể thay đổi tên thành tên bạn muốn bằng cách thay đổi "NAME = TheNameYouWant"


Ngay trên. Tôi chuẩn bị đăng một câu trả lời trong đó tôi đã đề cập một cách thú vị, có một vài người sử dụng Ubuntu đã nói rằng phương pháp của @muffel để thay đổi tên mạng của họ không hiệu quả. Đây là những gì tôi sẽ đề xuất ... +1
nặc

Ở đây nên tiền thưởng đi.
EKons

5

Một tùy chọn không yêu cầu các quy tắc udev (thay thế cho các tệp .link của systemd-networkd) hoạt động với Ubuntu 16.04 cũng như nhiều phiên bản Linux khác là

Thí dụ:

ifconfig peth0 down  
ip link set peth0 name eth0  
ifconfig eth0 up 

Trong ví dụ trên, peth0 là tên giao diện gốc và eth0 là tên mong muốn. Cắm tên bạn hiện có peth0 ở đâu và tên bạn muốn ở đâu eth0. Không cần khởi động lại hoặc đề nghị. Lặp lại quy trình cho thẻ giao diện thứ hai

Đã thử nghiệm trên Ubuntu 16.04 với kernel 4.4.0-36-generic # 55-Ubuntu

Chỉnh sửa: Nếu bạn đang tìm kiếm một giải pháp bền bỉ để khởi động lại, hãy xem Thay đổi tên Giao diện mạng Ubuntu 16.04

Nguồn: https://www.freedesktop.org/software/systemd/man/systemd.link.html

http://kernelpanik.net/rename-a-linux-network-interface-without-udev/

Kiểm tra.

Lưu ý: vì phương pháp @ antti-haapala đã hoạt động trước đó và đột nhiên dừng lại, bạn có thể muốn biết rằng "Trong trường hợp đặc biệt, một tệp trống (kích thước tệp 0) hoặc liên kết tượng trưng có cùng tên trỏ đến / dev / null sẽ vô hiệu hóa tệp cấu hình hoàn toàn (nó là "mặt nạ") ". <-Nguồn


Tôi đã rất hữu ích phản hồi của bạn, cảm ơn bạn + 1 @ElderGeek

1
@Alberto Tôi rất vui vì nó đã giúp!
Anh Cả Geek

thật đáng buồn là nó không bền bỉ nhưng vẫn + 1
delfiler

@delfiler Cảm ơn bạn đã bình luận của bạn. Nếu tôi hiểu bạn một cách chính xác, bạn đang tìm kiếm một giải pháp sống sót khi khởi động lại. Tôi có rõ ràng về điều đó?
Anh Cả Geek


3
  • Tất cả ba phương pháp đặt tên tùy chỉnh, được giải thích systemd: Tên giao diện mạng có thể dự đoán được, có liên quan đến các quy tắc udev.

    Các quy tắc & udev của systemd .link có ưu tiên thư mục. /etcghi đè ghi /runđè /lib.

    Vì vậy, kiểm tra các thiết lập hiện tại.

    # links
    ls -l /*/systemd/network/
    
    # rule that read links
    ls -l /*/udev/rules.d/80-net-setup-link.rules
    
    # rule that check for /etc/.../80-net-setup-link.rules & net.ifnames
    ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    

    Sau khi có bất kỳ thay đổi nào trong các quy tắc udev này (thêm / xóa tệp ghi đè) để có hiệu lực, đĩa RAM khởi động phải được cập nhật:

    sudo update-initramfs -u
    

    Theo mặc định, đây là những tệp duy nhất bạn có thể tìm thấy

    ~$ ls -l /*/systemd/network/
    /etc/systemd/network/:
    total 0
    
    /lib/systemd/network/:
    total 12
    -rw-r--r-- 1 root root 404 Jul 12 17:28 80-container-host0.network ##(virtual-interface)
    -rw-r--r-- 1 root root 482 Jul 12 17:28 80-container-ve.network ##(virtual-interface)
    -rw-r--r-- 1 root root  80 Jul 12 17:28 99-default.link
    
    
    ~$ ls -l /*/udev/rules.d/80-net-setup-link.rules
    -rw-r--r-- 1 root root 292 Jul 12 17:28 /lib/udev/rules.d/80-net-setup-link.rules
    
    ~$ ls -l /*/udev/rules.d/73-usb-net-by-mac.rules
    -rw-r--r-- 1 root root 551 Jul 12 16:37 /lib/udev/rules.d/73-usb-net-by-mac.rules
    

    Tôi đã thử nghiệm tất cả chúng trong VBox mới cài đặt 16.04 như tài liệu trong liên kết bên dưới, tất cả các phương pháp hoạt động như mong đợi:

    Tên giao diện phức tạp Ubuntu 16.04

  • /etc/udev/rules.d/70-persistent-net-ruleslà từ các bản phát hành cũ được thay thế bởi systemd .link (nhưng chúng không được tạo tự động), tôi đã thêm nó vào đây để kiểm tra sự tồn tại của nó cho các vấn đề cụ thể nhưng không phải cho trường hợp của AnttiHaapala .


1

Bạn cần cập nhật thông tin của mình initrdvới nội dung tương tự update-initramfs -k all -c, vì udev áp dụng các cấu hình đó trong khi chạy initrd.

Ubuntu 16.04 không có tệp quy tắc mạng 70 liên tục nữa.


1
Thật kỳ lạ, hệ thống 16.04 này thì có. Ahh nhưng đó là một hệ thống nâng cấp. Bạn đúng là nó không có trong bản cài đặt mới.
Anh Cả Geek

0

Tôi không đủ danh tiếng để bình luận, nhưng chỉ cần thêm vào câu trả lời đã được đánh dấu, các bản cài đặt sạch của Ubuntu 16.04 sẽ không có tệp /etc/udev/rules.d/70-persistent-net.rules. Tuy nhiên, nếu bạn tạo thủ công, bạn có thể thêm một dòng như trong câu trả lời ở đây và nó sẽ hoạt động giống như trong các phiên bản cũ hơn, với một sự khác biệt đáng chú ý - tham số KERNEL phải được chỉ định làm tên được gán cho giao diện theo mặc định. Ví dụ: nếu hệ thống đặt tên giao diện là "ske160" và bạn muốn thay đổi nó thành "eth0", dòng có thể trông như sau:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="ens160", NAME="eth0"

Điều này cho biết quy tắc chỉ khớp trên một giao diện khớp với MAC được chỉ định (trong tham số ATTR {address}) và với tên kernel khớp với tham số KERNEL. Ngoài ra, bạn có thể bỏ qua tham số KernEL hoàn toàn và nó cũng hoạt động.

EDIT: Và như đã đề cập, nếu bạn muốn sử dụng phương thức tệp .link thì bạn sẽ cần cập nhật initramfs để nó có hiệu lực. Cũng lưu ý rằng tệp .link tùy chỉnh phải được tạo trong / etc / systemd / network chứ không phải trong / lib / systemd / network (sẽ hoạt động nhưng cách tốt nhất là sử dụng / etc / systemd / network vì đó là những gì nó có - cho phép các tệp .link tùy chỉnh ghi đè mặc định trong / lib / systemd / network).

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.