Thay đổi tên Giao diện mạng Ubuntu 16.04


55

Tôi đã cố gắng thay đổi tên giao diện mạng trên phiên bản Ubuntu 16.04 LTS mới này nhưng không có /etc/udev/rules.d/70-persistent-net.rules.

Vì vậy, tôi đã cố gắng sử dụng /lib/udev/write_net_rulesnhưng nó không tồn tại.

Tại sao tôi cần sửa đổi này? Bởi vì tôi đang sử dụng một công cụ để Mô phỏng các nền tảng ảo sử dụng cấp phép flex và xác thực cần phải có eth0tên giao diện.

Bất cứ đề nghị nào?

Lệnh ip linktrả về:

user@laptop:~$ ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether b8:2a:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: wlp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 5c:e0:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff

user@laptop:~$ ifconfig 
enp6s0    Link encap:Ethernet  HWaddr b8:2a:xx:yy:xx:yy  
lo        Link encap:Local Loopback  
wlp7s0    Link encap:Ethernet  HWaddr 5c:e0:xx:yy:xx:yy  

(Một số thông tin đã bị bỏ qua và bị loại bỏ)

Tôi đã thử một số liên kết:

Câu trả lời:


74

Có rất nhiều thông tin sai lệch về cách thay đổi tên mạng trong các phiên bản gần đây của Ubuntu. Một số thông tin trỏ đến systemd.link, điều này chỉ sai vì Ubuntu (kể từ ngày 16.04) không sử dụng phần này của systemd.

Trên thực tế, việc thay đổi tên giao diện hoạt động gần giống như trước đây, với hai điểm khác biệt nhỏ: Thứ nhất, tệp /etc/udev/rules.d/70-persistent-net.rulesbây giờ phải được tạo thủ công. Điều này có lợi thế là bạn không phải lo lắng về bất kỳ tập lệnh nào ghi đè lên tệp này và chỉ có thể thêm các dòng bạn cần (bạn cũng không cần bất kỳ nhận xét nào). Thứ hai - và đây là thay đổi khiến tôi mất rất nhiều thời gian để tìm ra nó - định dạng thay đổi một chút so với Ubuntu 14.04 LTS:

Dòng để sửa tên giao diện của NIC với địa chỉ MAC "02: 01: 02: 03: 04: 05" thành "eth0" hiện là:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="02:01:02:03:04:05", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"

Dòng này trông gần giống như trong Ubuntu 14.04 LTS với một điểm khác biệt nhỏ: Trong Ubuntu 14.04, có một điều kiện bổ sung KERNEL=="eth*". Vì một số lý do, điều này không hoạt động trong Ubuntu 16.04 LTS. Nếu có điều kiện bổ sung này, toàn bộ dòng sẽ bị bỏ qua và bạn quay lại hành vi mặc định (như được chỉ định trong 80-net-setup-link.rules).


2
Chơi lô tô! Bây giờ tôi có enusb01 cho NIC của Docking Station của tôi. Cảm ơn! # Trạm kết nối liên kết hiển thị USB SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {kiểu} == "1", NAME = "enusb1"
flickerfly

Làm thế nào tôi có thể đặt tên enp0s1từ enp0s17? Có phải là quá trình tương tự? Ngoài ra, tôi nên làm gì cho các giao diện mạng ảo như enp0s1:1hoặc enp0s2vv?
soufrk

2
Bạn không thực sự cần chỉ định tất cả điều đó trong 16.04. Tôi đã có thể thoát khỏiSUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds

4
@kbuilds, mỗi Linux từ đầu : DRIVERS == "? *" - Điều này tồn tại để Udev sẽ bỏ qua Vlan hoặc cầu giao diện phụ (vì các giao diện phụ này không có trình điều khiển). Các giao diện phụ này bị bỏ qua vì tên sẽ được gán sẽ va chạm với các thiết bị mẹ của chúng.
John Doe

1
Quan trọng: bạn cần chỉnh sửa / etc / mạng / giao diện để đảm bảo giao diện được đổi tên sẽ tự động bắt đầu. Mặt khác, nếu bạn đang sử dụng SSH - bạn sẽ mất quyền truy cập vào máy đó, chưa kể lãng phí thời gian cố gắng tìm hiểu tại sao nó không hoạt động.
dùng4551

65

Trên Ubuntu 16.04.1 LTS, Linux ploline 4.4.0-31-genericx86_64 MATE. bước một trong câu trả lời @Geancarlo Abich và nó đã hoạt động . Ubuntu đã tạo một tên mới trực tiếp sau khi khởi động lại:

Chỉnh sửa / 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:

$ sudo update-grub

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

$ sudo reboot
msa@plaptop:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 70:5a:0f:d7:03:38  
          inet addr:10.67.10.43  Bcast:10.67.10.255  Mask:255.255.255.0
          inet6 addr: fe80::8c03:edb5:a3d1:ba21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37788 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51115719 (51.1 MB)  TX bytes:5006758 (5.0 MB)
          Interrupt:16 Memory:f1200000-f1220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:255 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:21076 (21.0 KB)  TX bytes:21076 (21.0 KB)

wlan0     Link encap:Ethernet  HWaddr 44:85:00:62:c6:e5  
          inet addr:10.67.14.106  Bcast:10.67.14.255  Mask:255.255.255.0
          inet6 addr: fe80::5844:f9dd:32ff:9b45/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5320 (5.3 KB)  TX bytes:14611 (14.6 KB)

1
không làm việc cho tôi, sau khi cập nhật các bước này. ifcofig chỉ hiển thị thẻ "lo", nó không hiển thị eth và ske :(
vimal prakash

2
Điều này làm việc cho tôi. @vimalprakash Tôi cũng chỉ có 'lo' hiển thị trong đầu ra ifconfig sau khi thay đổi này. Tuy nhiên, đó là vì các giao diện khác không hoạt động (do ifconfig -a để xem tất cả các giao diện) do các cấu hình trong giao diện / etc / network / của tôi có trong các tên cũ hơn.
chitti

Nó làm việc cho tôi.
Paulo

các lệnh "net.ifnames = 0" && "biosdevname = 0" làm gì ??? Bài đăng ở đây là vàng nguyên chất .... làm việc trên 16.04 xubfox

2
Cũng hoạt động trên Ubuntu 18.04
Simon Warta

12

Ubuntu-16.04-máy chủ-amd64

Trong /etc/default/grub, thay đổi

GRUB_CMDLINE_LINUX=""

đến

GRUB_CMDLINE_LINUX="net.ifnames=0"

Sau đó, nhập vào:

sudo update-grub

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

sudo reboot

3
Tốt hơn làGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach

8

Tôi đã cố gắng trộn một số gợi ý và tôi đã tìm thấy giải pháp!

Bước 1 : Vô hiệu hóa tên kế thừa Firmware mặc định.

Chỉnh sửa /etc/default/grubthay đổi dòng của bạn từ

GRUB_CMDLINE_LINUX=""

đến

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

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

$ sudo update-grub

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

$ sudo reboot

Bước 2 : Tạo tập tin liên tục/etc/udev/rules.d/70-persistent-net.rulesvới quyền root và điền vào chúng.

$ sudo gedit /etc/udev/rules.d/70-persistent-net.rules

Thí dụ:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device lan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ethX"

# PCI device Wlan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wlanX"

(Sử dụng địa chỉ MAC của giao diện để chỉ giao diện mà bạn muốn đổi tên và thay đổi giá trị tên giao diện 'X' như bạn muốn)

Lưu các thay đổi và khởi động lại.

$ sudo reboot

Điều này làm việc cho tôi.


4
Bước hai là không cần thiết.
musbach

1
Vâng. Có thể xác nhận những gì @musbach đã nói vào ngày 16.04
kết hợp
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.