Зміна назви мережевих інтерфейсів Ubuntu 16.04


55

Я намагався змінити назву мережевих інтерфейсів у цій новій версії Ubuntu 16.04 LTS, але не має /etc/udev/rules.d/70-persistent-net.rules.

Отже, я намагався використовувати, /lib/udev/write_net_rulesале його не існує.

Навіщо мені потрібна ця модифікація? Оскільки я використовую інструмент для імітації віртуальних платформ, які використовують гнучкі ліцензування та автентифікацію, повинні бути в eth0назві інтерфейсу.

Будь-яка пропозиція?

Команда ip linkповертає:

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  

(Деяка інформація була проігнорована та придушена)

Я вже спробував кілька посилань:

Відповіді:


74

Існує багато оманливої ​​інформації про те, як змінити імена мереж в останніх версіях Ubuntu. Деякі відомості вказують на systemd.link, що просто неправильно, оскільки Ubuntu (станом на 16.04) не використовує цю частину systemd.

Насправді зміна імені інтерфейсу працює майже так, як раніше, з двома невеликими відмінностями: По-перше, файл /etc/udev/rules.d/70-persistent-net.rulesтепер потрібно створити вручну. Це має перевагу в тому, що вам не доведеться турбуватися про будь-який сценарій, що перезаписує цей файл, і ви можете просто додати потрібні рядки (вам також не потрібні коментарі). По-друге - і це зміна, яка коштувала мені багато часу, щоб зрозуміти це - формат трохи змінився порівняно з Ubuntu 14.04 LTS:

Рядок для закріплення назви інтерфейсу NIC з адресою MAC "02: 01: 02: 03: 04: 05" до "eth0" тепер:

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

Ця лінія виглядає майже так само, як і в Ubuntu 14.04 LTS з однією незначною різницею: в Ubuntu 14.04 була додаткова умова KERNEL=="eth*". Чомусь це не працює в Ubuntu 16.04 LTS. Якщо ця додаткова умова присутня, весь рядок ігнорується, і ви повертаєтесь до поведінки за замовчуванням (як зазначено в 80-net-setup-link.rules).


2
Бінго! Тепер у мене є enusb01 для NIC моєї док-станції USB. Дякую! # USB-док-станція для підключення дисплея USB SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NAME = "enusb1"
мерехтіння

Як я можу встановити ім'я enp0s1від enp0s17? Це той самий процес? Крім того , що я повинен зробити для віртуальних мережевих інтерфейсів , як enp0s1:1і enp0s2т.д.?
суфрк

2
Вам не потрібно вказувати все це 16.04. Мені вдалося пітиSUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds

4
@kbuilds, за Linux від Scratch : DRIVERS == "? *" - Це існує для того, що Udev ігнорує VLAN або мостові підінтерфейси (оскільки у цих підінтерфейсах немає драйверів). Ці підінтерфейси пропускаються, тому що ім'я, яке буде призначене, зіткнеться з їхніми батьківськими пристроями.
Джон Дой

1
Важливо: вам потрібно відредагувати / etc / network / інтерфейси, щоб переконатися, що перейменований інтерфейс автоматично запускається. В іншому випадку, якщо ви перебуваєте на SSH - ви втратите доступ до цієї машини, не кажучи вже про витрачений час, намагаючись з’ясувати, чому це не працює.
user4551

65

На Ubuntu 16.04.1 LTS, ноутбук Linux 4.4.0-31-genericx86_64 MATE. крок перший з відповіді @Geancarlo Abich, і це спрацювало . Ubuntu створив нові імена безпосередньо після перезавантаження:

Відредагуйте / etc / default / grub, змінивши рядок

GRUB_CMDLINE_LINUX=""

до

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

і, нарешті:

$ sudo update-grub

та перезавантажте систему:

$ 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
не працює для мене після оновлення цих кроків. ifcofig покажіть лише "lo" карту, вона не відображає eth і ens :(
vimal prakash

2
Це працювало для мене. @vimalprakash У мене також з'явилося лише "lo", яке відображається у виводі ifconfig після цієї зміни. Однак це тому, що інші інтерфейси були відключені (зробіть ifconfig -a, щоб побачити всі інтерфейси), оскільки конфігурації в моєму / etc / network / інтерфейсах були у старих іменах.
Чітті

Це працювало для мене.
Пауло

що роблять команди "net.ifnames = 0" && "biosdevname = 0" ??? Пост тут чисте золото все одно .... працював 16.04 xubuntu

2
Також працював на Ubuntu 18.04
Саймон Варта

12

Ubuntu-16.04-сервер-amd64

В /etc/default/grub, зміни

GRUB_CMDLINE_LINUX=""

до

GRUB_CMDLINE_LINUX="net.ifnames=0"

Потім введіть:

sudo update-grub

і перезавантажте систему

sudo reboot

3
КращеGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach

8

Я спробував змішати кілька пропозицій, і я знайшов рішення!

Крок 1. Вимкніть успадковані назви прошивки за замовчуванням.

Відредагуйте /etc/default/grubрядок, що змінюється

GRUB_CMDLINE_LINUX=""

до

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

і, нарешті, запустіть як root:

$ sudo update-grub

і перезавантажте систему.

$ sudo reboot

Крок 2. Створіть стійкий файл/etc/udev/rules.d/70-persistent-net.rulesяк корінь і заповніть їх.

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

Приклад:

# 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"

(Використовуйте MAC-адресу інтерфейсів для позначення інтерфейсу, який ви хочете перейменувати, та змініть значення імені 'X' як потрібно.)

Збережіть зміни та перезавантажте.

$ sudo reboot

Це працює для мене.


4
Крок другий не є необхідним.
musbach

1
Так. Можу підтвердити те, що @musbach сказав 16.04
menixator
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.