Jak włączyć „Przewidywalne nazwy interfejsów sieciowych”?

12

Postanowiłem sprawdzić, z jaką nazwą skończy się moje urządzenie Ethernet, ale w przeciwieństwie do innych dystrybucji , Debian nie wydaje się aktywować tej zmiany (czy ją powstrzymuje?),

  • Zachowaj na razie stary, trwały schemat nazewnictwa interfejsu sieciowego i włącz nowy, używając net.ifnames = 1 w wierszu poleceń jądra.

Problem polega na tym, że muszę edytować wiersze jądra gruba i wydaje się to przesadą w przypadku czegoś, co można wyłączyć, modyfikując plik . Czy jest inny sposób?

Braiam
źródło
Może chcesz sprawdzić ten link: science.uva.nl/research/air/wiki/LogicalInterfaceNames Możesz znaleźć rozwiązanie takie jak nameif i aktualizacja pliku startowego ... @Braiam
user1527227
@ user1527227 dokładnie tego nie chcę robić.
Braiam
W jesse powinieneś zmodyfikować tylko jedną linię w / etc / default / grub. Na wheezy naprawdę nie ma możliwości włączenia tego AFAIK. Naprawdę podoba mi się nowy schemat nazewnictwa, więc konfiguruję własne reguły udev na moich serwerach.
GnP

Odpowiedzi:

11

Wersja 220-7 na Debianie usunęła łatkę, która spowodowała tę zgodę:

* Switch to net.ifnames persistent network interfaces (on new
  installations/for new hardware), and deprecate the old
  75-persistent-net-generator.rules.

Wynikało to z propozycji z listy debian-devel . Nazwy systemów korzystających ze starej nazwy nie zostaną zmienione, dopóki użytkownik nie przeprowadzi migracji. Przeczytaj README.Debian, aby uzyskać przewodnik migracji.

Nową nazwę można przewidzieć za pomocą:

sudo udevadm test /sys/class/net/eth0 2>/dev/null |grep ID_NET_NAME_

gdzie eth0jest obecna nazwa urządzenia.

Braiam
źródło
5

Zakładam, że mówisz o sid lub jessie. W przypadku wheezy możesz wypróbować backport v204 .

W grze mogą występować pewne nieporozumienia: jak widać z reguł udev tutaj (dla v208 obecnie w sid), programiści udev wyraźnie wybrali cmdline jądra jako domyślny sposób włączenia tej funkcjonalności.
Nie widzę nic z natury „Overkill” z pomocą wybranego interfejsu dla niego i po prostu oddanie GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"się /etc/default/grub. Czy martwisz się o jakiś konkretny efekt uboczny?

Fakt, że wspomniana odpowiedź sugeruje usunięcie pliku, aby go wyłączyć, to hack (przynajmniej w przypadku Debiana), który nie działałby w dłuższej perspektywie, ponieważ w debianie te reguły są przechowywane /lib/udev/rules.d, tj .: zostaną nadpisane w aktualizacja (poza tym wyłączenie funkcji przez skuteczne usunięcie pliku, który opisuje, ma sens, ale włączenie jest zasadniczo inne, więc myślę, że jest to niesprawiedliwe porównanie).

OTOH, jeśli masz konkretny powód, dla którego nie używasz cmdline jądra, możesz zgłosić błąd dotyczący pakietu debian i poprosić opiekuna o przeniesienie tych reguł /etc/udev/. Następnie teoretycznie możesz przełączać się między obecnymi „trwałymi” i nowymi „przewidywalnymi” regułami.

Ale po prostu FYI: patrząc na źródła dla wersji 209, wydaje się, że net.if_namescałkowicie pozbyłem się czeku, więc twoje pytanie może wymagać ponownego rozpatrzenia w najbliższej przyszłości.

Leo Antunes
źródło
1
„jawnie wybrał cmdline jądra jako domyślny sposób włączenia tej funkcji.” w rzeczywistości robi to łatka Debiana , a nie deweloperzy udev. Zawarli tylko metodę rezygnacji z rozruchu, Debian zmienił ją na opt-in, a włączenie powinno być łatwe, ponieważ jest domyślnie włączone.
Braiam
@Braiam: Nice catch! Ale myślę, że głównym argumentem pozostaje to, że był to udev wybór użycia cmdline jądra jako interfejsu, czy to do włączenia, czy wyłączenia.
Leo Antunes,
Edytowałem wiersz polecenia jądra, aby uwzględnić net.ifname=1parametr, ale ta funkcja nie była włączona w Linux Mint. Które dystrybucje systemu Linux obsługują tę funkcję?
sherrellbc
0

W systemie Debian / Ubuntu, zaczynając od udev 220, możesz włączyć nowe nazwy, zmieniając nazwę tego pliku:

sudo mv -T /etc/udev/rules.d/70-persistent-net.rules{,.old}

Zgodnie z sugestią /usr/share/doc/udev/README.Debian.gz, a następnie

sudo update-initramfs -u

Następnie uruchom ponownie komputer (lub rmmod + insmod modułu sterującego kartą sieciową).

Tobu
źródło
-1

Używa Ubuntu 15.10, biosdevnamektóry nie zapewnia przewidywalnych nazw interfejsów sieciowych. Nawet jeśli go usuniesz (apt-get remove biosdevname) i edytujesz grub ( GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1") oraz trwałe reguły, nadal nie uzyskasz przewidywalnych interfejsów sieciowych.

Głównym powodem wydaje się być kompatybilność wsteczna. Właśnie przetestowałem to na 2 mobilnych szerokopasmowych urządzeniach USB, a nazwa interfejsu sieciowego jest niespójnie na każdym rozruchu (np. Pierwszy interfejs usb0, drugi usb1 i odwrotnie). Głównym powodem wydaje się być kompatybilność wsteczna.

Istnieją pewne błędy otwarte na starterze (np. Ten ), ale krótka odpowiedź jest taka, że ​​jeśli szukasz przewidywalnych nazw interfejsów sieciowych, powinieneś poszukać innej dystrybucji.

Anthony Hunt
źródło
Rozumiem! Naprawdę zaktualizuję odpowiedź tak, jak mi się wydaje.
Anthony Hunt
@roalma Zaktualizowałem odpowiedź! Przepraszamy za poprzednio „podobny do komentarza” post.
Anthony Hunt
Debian domyślnie obsługuje tę funkcję od wersji 220-7, kiedy upuściła łatkę, która spowodowała takie zachowanie. Teraz nowe zainstalowane systemy będą domyślnie używać przewidywalnych nazw.
Braiam