przewidywalne nazwy interfejsów sieciowych w systemd

15

Najnowsza wersja Ubuntu i Debian (stretch) wprowadza nowy schemat nazewnictwa interfejsu sieciowego.

Teraz, podczas aktualizacji z systemu, który używa nazw w starym stylu, takich jak „eth0”, chciałbym wiedzieć przed uruchomieniem, jaka będzie nowa nazwa.

W jaki sposób mogę to zrobić? Czy istnieje magiczne wywołanie „systemd”, którego mogę użyć do edycji / etc / network / interface przed uruchomieniem (a następnie utratą łączności z siecią)?

Ralf Hildebrandt
źródło
1
Natknąłem się na to i jest to najlepsze wytłumaczenie tego, jak działa, jakie do tej pory znalazłem
Neil

Odpowiedzi:

7

Dostępne są dwa różne schematy: nazwa-biosdevname vs przewidywalna nazwa interfejsu sieciowego.

nazwa biologiczna

Biosdevname wydaje się być domyślnym w Ubuntu. Jest on aktywowany przez zainstalowanie pakietu biosdevname.

Biosdevname interfejsu można znaleźć za pomocą:

biosdevname -i eth0

Przewidywalne nazwy interfejsów sieciowych

Sądzę, że jest to domyślne ustawienie w wersji Debian, ale należy je wyraźnie włączyć podczas aktualizacji z poprzednich wersji.

Przewidywalną nazwę eth0 można znaleźć za pomocą:

udevadm test-builtin net_id /sys/class/net/eth0 | grep '^ID_NET_NAME_'
GnP
źródło
Chociaż rzeczywista odpowiedź na pytanie, jak przewidzieć „przed uruchomieniem, jaka będzie nowa nazwa” (zgodnie z linkiem podanym przez @Neil), nowa nazwa będzie taka sama jak stara nazwa , ponieważ nadal istnieją reguły udev, które konfigurują stare nazwiska w /etc/udev/rules.d/70-persistent-net.rules. Link zapewni przewodnik migracji, jeśli chcesz przejść do nowego schematu nazewnictwa.
Tuomas,
2

Nowy schemat jest najwyraźniej nazywany „przewidywalnymi nazwami interfejsów sieciowych”, ale nie znajduję dużo dokumentacji na temat tego, jak właściwie przewidzieć nazwę. Wszystko, co znalazłem na ten temat, zasadniczo wskazuje na komentarz do kodu źródłowego (który sam wskazuje na pierwszy link). Z komentarza nie jest wcale jasne, jak się dowiedzieć, jakiego schematu adresowania użyje Udev dla nazwy urządzenia sieciowego.

Przy pierwszym łączu możesz go wyłączyć i używać tradycyjnych nazw, dodając net.ifnames=0wiersz poleceń jądra w Grub. Zgodnie z tym komentarzem może być konieczne, jeśli planujesz utworzenie interfejsu oznaczonego VLAN, ponieważ dodane rozszerzenie spowoduje, że nazwa interfejsu będzie zbyt długa.

W przeciwnym razie może być lepiej ponownie zadać pytanie, aby wyjaśnić, co próbujesz zrobić z nazwą (np. Skonfiguruj interfejs przez ansible lub coś podobnego)

DerfK
źródło
2

Nie jestem pewien, czy nadal tak jest w przypadku zaktualizowanych wersji, ale na moich starych systemach byłem w stanie utworzyć pusty plik /etc/udev/rules.d/80-net-name-slot.rulesi wyłączałoby to funkcję „przewidywalnego” nazewnictwa. Możesz także stworzyć własną regułę i nazwać interfejsy samodzielnie na podstawie adresu mac lub połączeń PCI / USB.

użytkownik143311
źródło
0

Ta dokumentacja może trochę pomóc. Zobacz sekcję „Co dokładnie zmieniło się w wersji 197?”. Tak, zdaję sobie sprawę, że ma to nieco ograniczoną wartość, ale może dać ci drogę do dalszych badań.

Charles Burge
źródło