Zmiana nazwy interfejsów sieciowych Ubuntu 16.04

55

Próbowałem zmienić nazwę interfejsów sieciowych w tej nowej wersji Ubuntu 16.04 LTS, ale nie mam /etc/udev/rules.d/70-persistent-net.rules.

Próbowałem więc użyć, /lib/udev/write_net_rulesale nie istnieje.

Dlaczego potrzebuję tej modyfikacji? Ponieważ używam narzędzia do symulacji platform wirtualnych korzystających z elastycznego licencjonowania, a uwierzytelnianie musi być w eth0nazwie interfejsu.

Jakieś sugestie?

Polecenie ip linkzwraca:

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  

(Niektóre informacje zostały zignorowane i pominięte)

Próbowałem już kilka linków:

Geancarlo Abich
źródło

Odpowiedzi:

74

Istnieje wiele mylących informacji na temat zmiany nazw sieci w najnowszych wersjach Ubuntu. Niektóre informacje wskazują na systemd.link, co jest po prostu błędne, ponieważ Ubuntu (od 16.04) nie korzysta z tej części systemd.

W rzeczywistości zmiana nazwy interfejsu działa prawie tak, jak kiedyś, z dwiema niewielkimi różnicami: po pierwsze, plik należy /etc/udev/rules.d/70-persistent-net.rulesteraz utworzyć ręcznie. Ma to tę zaletę, że nie musisz się martwić, że skrypt nadpisze ten plik i możesz po prostu dodać potrzebne linie (nie potrzebujesz też komentarzy). Po drugie - i ta zmiana kosztowała mnie dużo czasu, żeby to rozgryźć - format zmienił się nieznacznie w porównaniu z Ubuntu 14.04 LTS:

Linia do naprawy nazwy interfejsu karty sieciowej z adresem MAC „02: 01: 02: 03: 04: 05” na „eth0” to teraz:

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

Ta linia wygląda prawie tak samo jak w Ubuntu 14.04 LTS z jedną niewielką różnicą: w Ubuntu 14.04 istniał dodatkowy warunek KERNEL=="eth*". Z jakiegoś powodu nie działa to w Ubuntu 16.04 LTS. Jeśli ten dodatkowy warunek jest obecny, cała linia jest ignorowana i wracasz do domyślnego zachowania (jak określono w 80-net-setup-link.rules).

Sebastian Marsching
źródło
2
Bingo! Mam teraz enusb01 dla karty sieciowej mojej stacji dokującej USB. Dzięki! # Stacja dokująca USB Display Link SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {adres} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0" ATTR {type} == "1", name = "enusb1"
flickerfly
W jaki sposób można ustawić nazwę enp0s1od enp0s17? Czy to ten sam proces? Ponadto, co należy zrobić dla wirtualnych sieci interfejsy, jak enp0s1:1i enp0s2itp?
soufrk
2
Tak naprawdę nie trzeba tego wszystkiego określać w 16.04. Udało mi się uciecSUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds
4
@kbuilds, dla systemu Linux od podstaw : DRIVERS == "? *" - Istnieje, więc Udev zignoruje VLAN lub przełączy interfejsy podrzędne (ponieważ te pod-interfejsy nie mają sterowników). Te interfejsy podrzędne są pomijane, ponieważ nazwa, która zostanie przypisana, koliduje z ich urządzeniami nadrzędnymi.
John Doe,
1
Ważne: musisz edytować / etc / network / interfaces, aby upewnić się, że interfejs o zmienionej nazwie zostanie automatycznie uruchomiony. W przeciwnym razie, jeśli korzystasz z SSH - stracisz dostęp do tego komputera, nie mówiąc już o marnowaniu czasu na próbę ustalenia, dlaczego to nie działa.
user4551
65

Na Ubuntu 16.04.1 LTS, Linux w wersji 4.4.0-31-genericx86_64 MATE. krok pierwszy odpowiedzi @Geancarlo Abich i zadziałało . Ubuntu utworzyło nowe nazwy bezpośrednio po ponownym uruchomieniu:

Edytuj / etc / default / grub zmieniając linię z

GRUB_CMDLINE_LINUX=""

do

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

i w końcu:

$ sudo update-grub

i uruchom ponownie system:

$ 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)
floorripper
źródło
1
nie działa dla mnie po aktualizacji tych kroków. ifcofig pokazuje tylko kartę „lo”, nie pokazuje eth i ens :(
vimal prakash
2
To zadziałało dla mnie. @vimalprakash Miałem też tylko „lo” pokazujące się w wynikach ifconfig po tej zmianie. Jest tak, ponieważ inne interfejsy były wyłączone (wykonaj ifconfig -a, aby zobaczyć wszystkie interfejsy), ponieważ konfiguracje w moim / etc / network / interfaces były w starszych nazwach.
chitti
To zadziałało dla mnie.
Paulo
co robią polecenia „net.ifnames = 0” && „biosdevname = 0”? W każdym razie post tutaj jest czystym złotem .... pracował nad 16.04
2
Pracowałem również nad Ubuntu 18.04
Simon Warta
12

Ubuntu-16.04-server-amd64

W /etc/default/grub, zmień

GRUB_CMDLINE_LINUX=""

do

GRUB_CMDLINE_LINUX="net.ifnames=0"

Następnie wpisz:

sudo update-grub

i uruchom ponownie system

sudo reboot
Syed-anwar Syed-bueraheng Al-I
źródło
3
Lepiej jestGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach,
8

Próbowałem wymieszać kilka sugestii i znalazłem rozwiązanie!

Krok 1 : Wyłącz domyślne odziedziczone nazwy oprogramowania wewnętrznego.

Edytuj swoją /etc/default/grubzmianę linii z

GRUB_CMDLINE_LINUX=""

do

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

i wreszcie uruchom jako root:

$ sudo update-grub

i uruchom ponownie system.

$ sudo reboot

Krok 2 : Utwórz trwały plik/etc/udev/rules.d/70-persistent-net.rulesjako root i wypełnij go.

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

Przykład:

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

(Użyj adresu MAC interfejsów, aby odnieść się do interfejsu, którego nazwę chcesz zmienić, i zmień wartości nazwy interfejsu „X”, jak chcesz)

Zapisz zmiany i uruchom ponownie.

$ sudo reboot

To działa dla mnie.

Geancarlo Abich
źródło
4
Krok drugi nie jest konieczny.
musbach
1
Tak. Potwierdza to, co @musbach powiedział 16.04
menixator 20.02.17