Jak zmienić nazwę karty sieciowej Linux? Bezpieczna instrukcja
Zmiana nazwy interfejsu sieciowego w Linuxie może być potrzebna po wymianie sprzętu, przy porządkowaniu konfiguracji albo wtedy, gdy skrypty odwołują się do konkretnej nazwy, na przykład eth0. Najbezpieczniej zacząć od sprawdzenia aktualnego oznaczenia i wykonać zmianę tymczasową, bez restartu systemu. Dopiero po udanym teście warto zapisać ustawienie na stałe.
W tym poradniku skupiam się wyłącznie na nazwie interfejsu. Nie jest to zmiana adresu IP, adresu MAC ani nazwy hosta. Te ustawienia mogą być powiązane z interfejsem, ale rozwiązują inne problemy.
Dlaczego nazwa karty sieciowej w Linuxie ma znaczenie
Nazwa interfejsu sieciowego to identyfikator używany przez system i narzędzia administracyjne. Przykładami są eth0, enp0s3, ens160, wlan0 czy wlp2s0. Nazwa nie opisuje fizycznej karty w sposób użyteczny dla człowieka, ale pozwala wskazać konkretne urządzenie w poleceniach, konfiguracji sieci, zaporze i skryptach.
Współczesne dystrybucje często stosują predictable network interface names, czyli przewidywalne nazwy interfejsów. Dlatego po instalacji systemu zamiast znanego eth0 możesz zobaczyć na przykład enp0s3. Sama nazwa nie oznacza błędu. Zmiana ma sens dopiero wtedy, gdy rzeczywiście ułatwia konfigurację lub jest wymagana przez istniejące zależności.
| Element | Przykład | Do czego służy | Czy zmienia się przy zmianie nazwy? |
|---|---|---|---|
| Nazwa interfejsu | enp0s3 |
Wskazuje urządzenie w poleceniach i konfiguracji | Tak |
| Adres IP | 192.168.1.20 |
Identyfikuje hosta w sieci IP | Nie, chyba że zmienisz go osobno |
| Adres MAC | 52:54:00:12:34:56 |
Identyfikuje urządzenie w warstwie łącza | Nie |
Jak sprawdzić aktualną nazwę interfejsu sieciowego
Zanim zmienisz nazwę, ustal, który interfejs jest właściwy. Na serwerze zdalnym jest to szczególnie ważne: pomylenie urządzenia może przerwać połączenie SSH. Najprostsze polecenie to:
ip link show
Wynik może wyglądać podobnie do tego:
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
3: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
Interesuje Cię nazwa znajdująca się po numerze interfejsu i dwukropku. lo to interfejs pętli zwrotnej, więc nie należy go zmieniać w ramach tej procedury. Dodatkowe informacje, w tym adres IP, pokaże:
ip address show
Możesz też użyć krótszego wariantu:
ip -br link
ip -br address
Starsze poradniki często proponują ifconfig -a. To narzędzie może nie być zainstalowane, ponieważ zostało zastąpione przez pakiet iproute2. Do samej identyfikacji interfejsu lepiej użyć polecenia ip. Adres MAC sprawdzisz tak:
cat /sys/class/net/enp0s3/address
Podmień enp0s3 na faktyczną nazwę urządzenia. MAC jest dobrym kryterium dopasowania przy trwałej zmianie, bo zwykle jednoznacznie wskazuje konkretną kartę.
Tymczasowa zmiana nazwy karty sieciowej
Tymczasowa zmiana jest najlepszym pierwszym testem. Nie wymaga edycji plików systemowych i przestaje obowiązywać po restarcie albo ponownym wykryciu urządzenia. Potrzebujesz uprawnień administratora, a interfejs musi być wyłączony.
- Sprawdź nazwę i adres MAC interfejsu poleceniem
ip link show. - Wyłącz urządzenie:
sudo ip link set dev enp0s3 down. - Zmień nazwę:
sudo ip link set dev enp0s3 name lan0. - Włącz interfejs pod nową nazwą:
sudo ip link set dev lan0 up. - Zweryfikuj wynik poleceniem
ip link show lan0oraz sprawdź połączenie.
W skróconej formie najważniejsza składnia wygląda następująco:
sudo ip link set dev STARA_NAZWA down
sudo ip link set dev STARA_NAZWA name NOWA_NAZWA
sudo ip link set dev NOWA_NAZWA up
Nie używaj nazwy, która już istnieje. Sprawdź to przed zmianą:
ip link show
Jeżeli polecenie zwróci błąd RTNETLINK answers: Device or resource busy, interfejs prawdopodobnie nadal jest aktywny albo korzysta z niego menedżer sieci. W takim przypadku zatrzymanie usługi NetworkManager lub systemd-networkd na działającym serwerze może zerwać połączenie, dlatego nie rób tego bez lokalnego dostępu lub planu awaryjnego.
Ważne: zmiana przez ip link nie jest trwała. To test, a nie docelowa konfiguracja. Jeśli po zmianie działa ping, DNS i dostęp do usług, dopiero wtedy zapisz regułę odpowiednią dla używanej dystrybucji.
Trwała zmiana nazwy interfejsu w nowoczesnym Linuxie
W systemach korzystających z systemd preferowaną metodą jest plik .link w katalogu /etc/systemd/network. Reguła może dopasować kartę po adresie MAC lub ścieżce sprzętowej, a następnie nadać jej określoną nazwę.
Przed edycją utwórz kopię konfiguracji, jeśli w systemie istnieją już pliki sieciowe. Przykładowo:
sudo cp -a /etc/systemd/network /etc/systemd/network.backup
Plik systemd .link jako standard
Utwórz plik o nazwie sortującej się przed ogólnymi regułami, na przykład 10-lan0.link:
sudo nano /etc/systemd/network/10-lan0.link
Wpisz:
[Match]
MACAddress=52:54:00:12:34:56
[Link]
Name=lan0
Adres MAC zamień na adres odczytany z własnego systemu. Sekcja [Match] jest kluczowa. Nie dopasowuj urządzenia wyłącznie przez zbyt ogólną regułę, jeśli komputer ma kilka kart sieciowych. Można też użyć ścieżki sprzętowej, ale MAC jest zwykle prostszy do jednoznacznego sprawdzenia.
Nazwa pliku ma znaczenie, ponieważ reguły są przetwarzane w kolejności leksykograficznej. Unikaj przypadkowego powielania reguł dotyczących tej samej karty. Po zapisaniu pliku najpewniejszym sposobem zastosowania zmiany jest restart systemu. Na maszynie z lokalnym dostępem możesz wcześniej przeładować reguły i ponownie podłączyć urządzenie, ale zachowanie zależy od dystrybucji i menedżera sieci.
sudo reboot
Samo systemctl restart systemd-networkd nie zawsze zmieni nazwę już wykrytego interfejsu. Usługa zarządza konfiguracją sieci, natomiast pliki .link są stosowane na etapie obsługi urządzenia przez systemd-udev. Dlatego nie traktuj restartu usługi jako uniwersalnego zamiennika restartu systemu.
Po uruchomieniu sprawdź:
ip link show
networkctl status lan0
Drugie polecenie ma sens wtedy, gdy system korzysta z systemd-networkd. Przy NetworkManagerze użyj:
nmcli device status
nmcli connection show
Reguły udev dla starszych systemów
Starsze systemy wykorzystywały reguły udev, na przykład plik w /etc/udev/rules.d/70-persistent-net.rules z wpisem:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="52:54:00:12:34:56", NAME="lan0"
To rozwiązanie może nadal działać w określonych środowiskach, ale nie powinno być pierwszym wyborem w nowych instalacjach. Współczesny system może ignorować dawny plik, nadpisywać nazwę przez mechanizm predictable names albo stosować własne reguły dystrybucji. Jeśli używasz starszej wersji Linuxa, sprawdź dokumentację konkretnego wydania i kolejność ładowania reguł.
Zmiana nazwy w wybranych dystrybucjach
Podstawowa komenda ip link set jest podobna w większości dystrybucji. Różnica pojawia się przy trwałej konfiguracji, ponieważ system może używać NetworkManagera, systemd-networkd, netplana albo starszych plików konfiguracyjnych.
Ubuntu i Debian
W Ubuntu z netplanem nazwa może być określona bezpośrednio w pliku YAML. Przykład dopasowania po MAC:
network:
version: 2
ethernets:
lan0:
match:
macaddress: 52:54:00:12:34:56
set-name: lan0
Pliki netplana znajdziesz zwykle w /etc/netplan/. Po zmianie konfiguracji wykonaj:
sudo netplan generate
sudo netplan try
sudo netplan apply
Na serwerze zdalnym netplan try jest bezpieczniejszym wyborem niż natychmiastowe zatwierdzenie, ponieważ pozwala wycofać konfigurację po utracie łączności. Nie edytuj jednocześnie netplana i pliku .link bez powodu. Dwie reguły nadające nazwę temu samemu urządzeniu mogą utrudnić diagnozę.
W Debianie konfiguracja może znajdować się w /etc/network/interfaces, w netplanie albo w profilach NetworkManagera. Jeśli plik zawiera wpisy typu auto enp0s3 lub iface enp0s3, po zmianie musisz zastąpić starą nazwę nową.
CentOS, RHEL i AlmaLinux
W starszych wydaniach spotkasz pliki ifcfg-*, na przykład /etc/sysconfig/network-scripts/ifcfg-enp0s3. Po zmianie nazwy trzeba sprawdzić zarówno nazwę pliku, jak i wartości DEVICE oraz ewentualne odwołania w konfiguracji.
W nowszych wydaniach RHEL i pochodnych głównym narzędziem jest zwykle NetworkManager. Profil połączenia może zawierać starą nazwę interfejsu. Sprawdzisz go poleceniem:
nmcli connection show
nmcli device status
Jeśli profil jest przypisany do starego urządzenia, zaktualizuj jego właściwość, przykładowo:
sudo nmcli connection modify "NAZWA_PROFILU" connection.interface-name lan0
sudo nmcli connection down "NAZWA_PROFILU"
sudo nmcli connection up "NAZWA_PROFILU"
Dokładna ścieżka zależy od wersji systemu. Na maszynie produkcyjnej nie zakładaj, że plik .link sam naprawi profil NetworkManagera. Najpierw sprawdź, jak połączenie jest zarządzane.
Arch Linux i NetworkManager
W Arch Linux możesz użyć pliku .link, jeśli system działa z systemd, albo skonfigurować nazwę w profilu NetworkManagera. Przy korzystaniu z NetworkManagera przydatne są:
nmcli device status
nmcli connection show
sudo nmcli connection modify "NAZWA_PROFILU" connection.interface-name lan0
Nie zmieniaj nazwy urządzenia wyłącznie w profilu, jeśli potrzebujesz również przewidywalnej nazwy na poziomie systemu. Profil mówi menedżerowi, z jakim interfejsem ma pracować, ale nie zawsze jest mechanizmem nadawania nazwy urządzeniu.
Co zrobić po zmianie nazwy interfejsu
Sama nazwa może zmienić się poprawnie, a mimo to sieć przestanie działać. Dzieje się tak wtedy, gdy inne elementy systemu nadal wskazują poprzednie oznaczenie. Przejrzyj konfigurację i wyszukaj starą nazwę, na przykład:
sudo grep -R "enp0s3" /etc 2>/dev/null
Nie każdy znaleziony wynik wymaga zmiany. Szczególną uwagę zwróć na /etc/network/interfaces, pliki netplana, profile NetworkManagera oraz konfigurację systemd-networkd. Jeśli interfejs jest używany w regułach zapory, trzeba zaktualizować odwołania w nftables, iptables, firewalld lub własnych skryptach.
Sprawdź też skrypty startowe, zadania cron i usługi, które mają warunki zależne od nazwy interfejsu. Dotyczy to między innymi skryptów ustawiających routing, reguł przekierowania portów i monitoringu stanu połączenia. Zmiana nazwy nie modyfikuje adresu IP ani MAC, ale może sprawić, że usługa przestanie znajdować urządzenie.
Po restarcie zweryfikuj kolejno:
- czy nowa nazwa pojawia się w
ip link show; - czy interfejs ma oczekiwany adres IP w
ip address show; - czy działa trasa domyślna w
ip route; - czy zapora i usługi używają nowej nazwy;
- czy działa połączenie lokalne, DNS oraz wymagane usługi.
Na serwerze zdalnym nie kończ testu na samym poleceniu ip link. Interfejs może być aktywny, ale pozbawiony adresu, trasy lub właściwego profilu połączenia.
Najczęstsze błędy i jak ich unikać
Zmiana aktywnego interfejsu. Polecenie może zakończyć się błędem albo przerwaniem ruchu. Najpierw wyłącz urządzenie, a na serwerze zdalnym zaplanuj dostęp przez konsolę lokalną, KVM lub inne niezależne połączenie.
Brak uprawnień root. Operacje na interfejsach i katalogach systemowych wymagają sudo. Komenda odczytująca nazwę może działać bez uprawnień, ale zmiana już nie.
Konflikt nazw. Nie możesz nadać interfejsowi nazwy, którą ma już inne urządzenie. Sprawdź wszystkie wpisy w ip link show, także interfejsy wirtualne, mosty i tunele.
Zmiana znika po restarcie. To normalne dla ip link set. Jeśli chcesz uzyskać trwałą zmianę nazwy karty sieciowej, użyj właściwej konfiguracji systemd, netplana lub NetworkManagera. Sama komenda testowa nie zapisuje ustawienia w systemie.
Plik .link nie działa. Powodem może być błędny MAC, niewłaściwa nazwa sekcji, konflikt z inną regułą albo zbyt późne zastosowanie konfiguracji. Sprawdź adres poleceniem ip link, nazwę pliku i logi:
journalctl -b | grep -Ei 'link|rename|network'
Sieć działa, ale usługa nie. Najczęściej oznacza to odwołanie do starej nazwy w zaporze, skrypcie lub profilu sieciowym. Wyszukaj ją w konfiguracji i sprawdź status konkretnej usługi.
Najrozsądniejsza kolejność to: rozpoznanie interfejsu, kopia konfiguracji, test tymczasowy, aktualizacja zależności i dopiero trwałe wdrożenie. Jeżeli nie masz pewności, czy system używa netplana, NetworkManagera czy systemd-networkd, najpierw ustal to poleceniami systemctl i nmcli, zamiast stosować kilka metod jednocześnie.
Zmiana nazwy interfejsu w Linuxie jest prosta, ale jej skutki zależą od całego stosu sieciowego. Do jednorazowego testu wystarczy ip link set dev. Do konfiguracji stałej najlepiej użyć jednoznacznej reguły dopasowanej do konkretnej karty, najczęściej pliku systemd .link, a następnie zaktualizować profile sieciowe, zaporę i skrypty.
Przed wykonaniem zmiany zapisz starą konfigurację i przygotuj sposób cofnięcia ustawień. Dzięki temu nawet na serwerze nie zamienisz niewielkiej korekty nazwy w dłuższą przerwę w dostępie do sieci.

Komentarze