Dlaczego mój interfejs sieciowy nosi nazwę enp0s25 zamiast eth0?

109

Wiele moich skryptów przestało działać po zainstalowaniu Ubuntu 15.10 i mam problem z zapamiętaniem tej nowej nazwy, ponieważ od lat byłem przyzwyczajony do ethx i wlanx. Czy istnieje powód tej zmiany? Czy muszę się do tego przyzwyczaić, czy mogę po prostu zmienić jego nazwę i wrócić do starego, dobrego eth0?

$ ifconfig

enp0s25   Link encap:Ethernet  HWaddr 77:5a:5e:a6:86:d5  
      inet addr:192.168.31.239  Bcast:192.168.31.255  Mask:255.255.255.0
      inet6 addr: fe80::725a:b6ff:fea6:86d7/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:4833 errors:1332 dropped:0 overruns:0 frame:666
      TX packets:5589 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3266446 (3.2 MB)  TX bytes:1046654 (1.0 MB)
      Interrupt:20 Memory:d3500000-d3520000
Mikrofon
źródło
2
zobacz to, które zawiera także dodatkowy link do bardziej szczegółowych informacji.
Doug Smythies,
4
Ooooooooooooooor napraw swoje skrypty raz na zawsze i usuń odniesienie (i zmień je dla polecenia określającego nazwę urządzenia) ;-) (oto kilka wskazówek: askubuntu.com/questions/396837/… )
Rinzwind
@Rinzwind To świetny pomysł.
Mike
@Mike mój szef (= główny koder) też zawsze się ze mną zgadza, ale potem zawsze używa ścieżek i urządzeń zakodowanych na
stałe

Odpowiedzi:

105

Nazywa się to przewidywalnym nazewnictwem interfejsu sieciowego i jest częścią systemd , do której Ubuntu przechodzi od wersji 15.04.

Podstawową ideą jest to, że w przeciwieństwie do poprzedniego schematu nazewnictwa * nix, w którym sondowanie sprzętu nie odbywa się w określonej kolejności i może się zmieniać między restartami, tutaj nazwa interfejsu zależy od fizycznej lokalizacji sprzętu i można go przewidzieć / odgadnąć , patrząc na lspcilub lshwwyjściowo . I odwrotnie, możemy odgadnąć informacje o jego fizycznej pozycji w systemie pci. W twoim przypadku będzie to pci bus 0, slot 2. Według artykułu freedesktop.org istnieją 3 sposoby przypisania nazwy interfejsu: w oparciu o BIOS / Firmware dla kart pokładowych, w oparciu o informacje PCI i w oparciu o MAC adres interfejsu. Zobacz tutaj inne przykłady .

Według strony freedesktop.org jednym z powodów przejścia na przewidywalne nazewnictwo jest to, że klasyczna konwencja nazewnictwa może prowadzić do zagrożeń bezpieczeństwa oprogramowania w systemach wieloplatformowych, gdy urządzenia są dodawane i usuwane podczas rozruchu. Ponadto, zgodnie z komentarzem przez Sam Hanes „na dużym serwerze z wieloma portami Ethernet to bezcenne: można od razu powiedzieć, która idzie do interfejsu, który port i dodanie lub usunięcie sprzętu nie zmieni nazwy innych portów.”

Zobacz Jak zmienić nazwę interfejsu sieciowego w 15.10 na wypadek, gdybyś zdecydował się wrócić do innej wersji nazewnictwa.

Sergiy Kolodyazhnyy
źródło
40
Widzę trochę ironii w słowie „przewidywalne” :), dziękuję za wskazówki.
Mike
11
„przewidywalne”, tak, jasne. Mam rozłączenia Ethernet po aktualizacji do 15.10 (czysta instalacja, stary / domowy). Po co łamać interfejsy API i konwencje? Teraz muszę dowiedzieć się, co się nie udaje. Jestem bardzo zdenerwowany tym :(
gorlok
13
chyba porażka jest przewidywalna;)
Anwar,
6
eh, powiedz to systemddeweloperom, chłopaki.
Sergiy Kolodyazhnyy
22
Przewidywalne nazewnictwo nie jest szczególnie przydatne w systemach stacjonarnych z tylko jednym interfejsem, w takim przypadku jest to trochę wstrętne. Na dużym serwerze z wieloma portami Ethernet jest to bezcenne: możesz od razu stwierdzić, który interfejs idzie do którego portu, a dodanie lub usunięcie sprzętu nie zmienia nazw innych portów. Właśnie w tym przypadku jest przeznaczony.
Sam Hanes,
1

FWIW plik Freedesktop.org PredictableNetworkInterfaceNames odwołuje się do komentarzy do pliku źródłowego jako kanoniczny, ale plik ten został zmieniony w celu usunięcia komentarzy - patrz https://github.com/systemd/systemd/pull/12518 .

pbhj
źródło