Jak mogę zmienić domyślne urządzenie sieciowe „ens33” na stare „eth0” na Fedorze 19?

22

Właśnie zainstalowałem Fedorę 19 na stacji roboczej VMware 9. Domyślnym urządzeniem sieciowym jest „ens33” zamiast „eth0” na RHEL.

Powodem, dla którego muszę używać „eth0”, jest to, że składnik licencji jednego z naszych produktów musi być powiązany z „eth0”.

Istnieje kilka postów omawiających podobne problemy, z których większość dotyczy starszych systemów operacyjnych. Nie znalazłem takiego, który pasowałby dokładnie do mojej sytuacji.

YM Jiang
źródło
Fedora 19 znacznie różni się od RHEL 5.5, ponieważ w pytaniu oznaczono to jako duplikat , a odpowiedź nie jest taka sama.
mattdm

Odpowiedzi:

31

Najprostszym sposobem na przywrócenie starej nazwy Kernela / modułów / udev na interfejsy Ethernet jest dostarczenie tych parametrów jądra do Fedory 19 :

  1. net.ifnames = 0
  2. biosdevname = 0

Aby to zrobić, wykonaj następujące kroki:

  1. Edytuj / etc / default / grub
  2. Pod koniec GRUB_CMDLINE_LINUX linii append " net.ifnames = 0 biosdevname = 0 "
  3. Zapisz plik
  4. Wpisz „ grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Wpisz „ restart

Jeśli nie podałeś tych parametrów podczas instalacji, prawdopodobnie będziesz musiał dostosować i / lub zmienić nazwę plików interfejsu w / etc / sysconfig / network-scripts / ifcfg- * .

Aż do Fedory 18 wystarczyło tylko biosdevname = 0 .

Jako przykład, w pewnej maszynie, w wyczerpujących badaniach, otrzymałem:

-Brak parametrów: karta sieciowa zidentyfikowana jako „ enp5s2 ”.
-Parameter biosdevname = 0: NIC zidentyfikowany jako „ enp5s2 ”.
-Parameter net.ifnames = 0: Karta sieciowa zidentyfikowana jako „ em1 ”.
-Parameter net.ifnames = 0 ORAZ nazwa-bios = 0: NIC zidentyfikowany jako „ eth0 ”.

Guilsson
źródło
Dziękuję bardzo za szczegółowe kroki! Wszystko, co dostarczał mi MathWorks, dotyczyło znacznie starszych wersji Fedory.
Dr Watson,
@ dr-watson: Aż do Fedory 14, ethX było domyślną nazwą dla interfejsów ethernetowych. W Fedorze 15 zaimplementowano spójne nazewnictwo urządzeń sieciowych . Od Fedory 15 do 18, wystarczy nazwa-biosdevname = 0 , aby zachować nazwę ethX. Zapraszamy.
Guilsson,
3
To rozwiązanie działa również w Fedorze 20. Dzięki.
heuristicus
Pracował także nad Fedorą 21
Eric Grunzke,
ubuntu 14.04 również.
sjas,
9

Możesz to zrobić za pomocą reguły udev:

cat > /etc/udev/rules.d/99-rename-to-eth0.rules << EOF
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$(cat /sys/class/net/ens33/address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
EOF
Chris Down
źródło
Dzięki za przykład. Dla innych warto zauważyć, że /sys/class/net/ens33mogą się różnić w zależności od wartości zwracanych przez bios i znalezionych w wynikach lspci -vv | grep -A25 Ethernet. Ponadto, jeśli intencją jest użycie eth0jako nazwy, bardziej odpowiednie może być po prostu określenie flag rozruchowych jądra, aby wyłączyć „przewidywalne” nazewnictwo urządzenia.
Mark Edington
7

W Fedorze 20 wydaje się, że nieco się zmieniło.

1) Argumenty jądra grub
Tak, zarówno „net.ifnames = 0”, jak i „biodevame = 0” wydają się konieczne.

2) / etc / sysconfig / network-scripts / ifcfg-ethX
Tak, one również są konieczne.

3) /etc/udev/rules.d/60-net.rules
Jeśli masz wiele interfejsów i chcesz kontrolować nazewnictwo każdego urządzenia, a nie pozwolić jąderowi na swój własny sposób, /etc/udev/rules.d/60 -net.rules wydaje się konieczne, aby zastąpić /usr/lib/udev/rules.d/60-net.rules w następujący sposób.

# PCI device 0x1011:0x0019 (tulip) {SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:f5:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="60:a4:4c:b5:26:48", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

4) yum remove biosdevnamewydaje się niepotrzebny.

Hiro
źródło
1
Dzięki za podzielenie różnych czynników. Wygląda na to, że masz literówkę w punkcie nr 1, powinna to być „nazwa biologiczna”, a nie „nazwa biologiczna”.
Mark Edington,
2

W Fedorze 19 jest inaczej niż w poprzednich wersjach. Są dwie rzeczy do rozwiązania:

  1. Usuń nazwę biologiczną, jeśli jest zainstalowana. ( yum remove biosdevnamelub -biosdevnameuruchom kickstart.
  2. Wyłącz regułę udev: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Więcej informacji można znaleźć na stronie http://fedoraproject.org/wiki/Features/SystemdPredictableNetworkInterfaceNames

mattdm
źródło
2

Chociaż zaakceptowana odpowiedź zapewnia rozwiązanie, które działa, nie wyjaśnia, dlaczego ens33jest używana. Poniższe linki dostarczają informacji o tym, dlaczego urządzenie sieciowe nosi nazwę inną niż eth0i jak teraz jest nazywane w wariantach RHEL 7:

Warto również zauważyć, że pojawiające się wartości, takie jak „33”, ens33pochodzą z wartości gniazda adaptera PCI zwróconej przez system BIOS. Użyj tego polecenia, aby zobaczyć, jakie wartości system ma w polu „Fizyczne gniazdo”:

lspci -vv | grep -A20 Ethernet

Dodatkowe informacje na temat części „ens” nazwy można znaleźć w kodzie źródłowym udev .

Mark Edington
źródło
1

W przypadku Fedory-24:

  1. Edytować /etc/default/grub

  2. Dołącz na końcu GRUB_CMDLINE_LINUXliniinet.ifnames=0 biosdevname=0

  3. Zapisz plik

  4. Rodzaj

    grub2-mkconfig -o /boot/grub2/grub.cfg"
    

    lub wpisz

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. Rodzaj reboot

Hafiz
źródło
Dlaczego urządzenie sieciowe całkowicie znika z systemu, jeśli zastosuję tę metodę do Fedory 26? ifconfigpowraca loi virbr0, ale pierwotnie enp4s0już go nie ma.
ajeh
Aby odpowiedzieć sobie: należy zachować ostrożność, aby zmienić wszystkie skrypty sieciowe używane z ethNnazewnictwem, aby zastosować tę konwencję. Zostawiłem enp4s0w jednym skrypcie.
ajeh