Używam bezgłowego serwera Ubuntu 16.04 LTS z dwiema fizycznymi kartami sieciowymi o nazwach enp5s0f0 i enp5s0f1.
Chciałbym zmienić nazwy tych interfejsów i poszedłem za tym przykładem . Dlatego utworzyłem plik /lib/systemd/network/70-myinterface.link
(wydaje się, że oryginalne źródło nie działa) w ten sposób (ustawiłem prawidłowy adres mac):
[Match]
MACAddress=12:34:56:78:9a:bc
[Link]
Name=dmz0
i ponownie uruchomiłem serwer. Niestety nazwa interfejsu nie została zmieniona, chociaż udevadm
pokazuje, że używany jest mój plik konfiguracyjny:
$ udevadm info /sys/class/net/enp5s0f1
P: /devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: DEVPATH=/devices/pci0000:00/0000:00:02.0/0000:01:00.0/0000:02:02.0/0000:05:00.1/net/enp5s0f1
E: ID_BUS=pci
E: ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
E: ID_MODEL_ID=0x1096
E: ID_NET_DRIVER=e1000e
E: ID_NET_LINK_FILE=/lib/systemd/network/70-myinterface.link <-- my file
E: ID_NET_NAME_MAC=enx123456789abc
E: ID_NET_NAME_PATH=enp5s0f1
E: ID_OUI_FROM_DATABASE=Intel Corporation
E: ID_PATH=pci-0000:05:00.1
E: ID_PATH_TAG=pci-0000_05_00_1
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_VENDOR_ID=0x8086
E: IFINDEX=3
E: INTERFACE=enp5s0f1
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp5s0f1
E: TAGS=:systemd:
E: USEC_INITIALIZED=1900192
Czy masz pojęcie, dlaczego zmiana nazwy nie zadziałała?
networking
server
16.04
tłumić
źródło
źródło
MACAddress=
[Match]
nie działa również dla mnie wlink
plikach, więc skończyło się na użyciuPath=
. Ty też powinieneś spróbować. Możesz także sprawdzić, którylink
plik pasuje do twojego urządzenia za pomocąudevadm test-builtin net_setup_link /sys/class/net/enp5s0f1
poleceniaOdpowiedzi:
To może, ale nie musi pomóc. Sprawdziłbym /etc/udev/rules.d i sprawdziłbym, czy masz 70-persistent-net.rules. Powinieneś być w stanie zmienić ich nazwy przy użyciu tego pliku
Mój wygląda następująco:
Jeśli masz wpisy dotyczące kart w tym pliku, możesz zmienić nazwę na dowolną, zmieniając „NAME = TheNameYouWant”
źródło
Opcją, która nie wymaga reguł udev (alternatywa dla plików .link systemd-networkd), która działa z Ubuntu 16.04, a także z wieloma innymi wersjami Linuksa, jest
Przykład:
W powyższym przykładzie peth0 to oryginalna nazwa interfejsu, a eth0 to pożądana nazwa. Podaj nazwę, którą aktualnie masz, gdzie jest peth0, i nazwę, którą chcesz, gdzie jest eth0. Ponowne uruchomienie nie jest wymagane ani sugerowane. Powtórz proces dla drugiej karty interfejsu
Testowany na Ubuntu 16.04 z jądrem 4.4.0-36-generic # 55-Ubuntu
Edycja: Jeśli szukasz trwałego rozwiązania, które przetrwa restart, zobacz Zmiana nazwy interfejsów sieciowych Ubuntu 16.04
Źródła: https://www.freedesktop.org/software/systemd/man/systemd.link.html
http://kernelpanik.net/rename-a-linux-network-interface-without-udev/
Testowanie.
Uwaga: ponieważ metoda @ antti-haapala działała wcześniej i nagle przestała działać, możesz być zainteresowany tym, że „W specjalnym przypadku pusty plik (rozmiar pliku 0) lub dowiązanie symboliczne o tej samej nazwie wskazujące na / dev / null wyłącza plik konfiguracyjny całkowicie (jest „zamaskowany”) ”. <-Źródło
źródło
Wszystkie trzy niestandardowe metody nazewnictwa, wyjaśnione systemd: Przewidywalne nazwy interfejsów sieciowych , są powiązane z regułami udev.
Systemd .link i udev mają priorytet folderów.
/etc
przesłania/run
przesłonięcia/lib
.Sprawdź bieżącą konfigurację.
Po każdej zmianie tych reguł udev (dodawanie / usuwanie plików zastępujących), aby były skuteczne, dysk RAM pamięci rozruchowej powinien zostać zaktualizowany:
Domyślnie są to jedyne pliki, jakie możesz znaleźć
Przetestowałem je wszystkie w instalacji VBox fresh 16.04, jak udokumentowano w poniższym linku, wszystkie metody działają zgodnie z oczekiwaniami:
Skomplikowane nazwy interfejsów Ubuntu 16.04
/etc/udev/rules.d/70-persistent-net-rules
pochodzi ze starszych wydań zastąpionych przez systemd .link (ale nie są tworzone automatycznie), dodałem go tutaj, aby sprawdzić jego istnienie pod kątem konkretnych problemów, ale nie w przypadku AnttiHaapala .źródło
Musisz zaktualizować
initrd
coś podobnegoupdate-initramfs -k all -c
, ponieważ udev stosuje te konfiguracje już podczas działaniainitrd
.Ubuntu 16.04 nie ma już pliku 70-persistent-net-rules.
źródło
Nie mam wystarczającej reputacji, aby komentować, ale aby dodać do zaznaczonej odpowiedzi, czyste instalacje Ubuntu 16.04 nie będą zawierały pliku /etc/udev/rules.d/70-persistent-net.rules. Jeśli jednak utworzysz go ręcznie, możesz dodać wiersz, jak pokazano w odpowiedzi tutaj, i powinien on działać tak samo jak w starszych wersjach, z jedną zauważalną różnicą - parametr KERNEL należy określić jako nazwę przypisaną do parametru interfejs domyślnie. Na przykład, jeśli system nazwał interfejs jako „ens160” i chcesz go zmienić na „eth0”, linia może wyglądać następująco:
Mówi to regule, że pasuje tylko na interfejsie pasującym do określonego MAC (w parametrze ATTR {adres}) i z nazwą jądra pasującą do parametru KERNEL. Alternatywnie możesz prawdopodobnie całkowicie pominąć parametr KERNEL i to też powinno działać.
EDYCJA: Jak już wspomniano, jeśli chcesz użyć metody pliku .link, musisz zaktualizować initramfs, aby zadziałało. Pamiętaj również, że niestandardowy plik .link powinien zostać utworzony w / etc / systemd / network, a nie w / lib / systemd / network (albo będzie działał, ale najlepszą praktyką jest użycie / etc / systemd / network, ponieważ po to jest - zezwalaj na niestandardowe pliki .link, które zastępują ustawienia domyślne w / lib / systemd / network).
źródło