systemd-networkd to wbudowany menedżer sieci systemu systemd, służący do konfigurowania łączy Ethernet, adresów, tras, mostów, sieci VLAN i innych urządzeń sieciowych. W przypadku podstawowego połączenia przewodowego konfiguracja jest prosta: zidentyfikuj interfejs, utwórz plik .network, upewnij się, że żaden inny menedżer nie jest właścicielem tego samego interfejsu, uruchom program systemd-networkdi zweryfikuj wynik.
W tym przewodniku wykorzystano protokół DHCP na przewodowym interfejsie Ethernet. Jeśli łączysz się z komputerem przez SSH, przed zmianą menedżera sieci użyj konsoli lokalnej lub zarządzania poza pasmem, ponieważ przełączenie może tymczasowo zerwać połączenie.
1. Sprawdź swój interfejs Ethernet i obecnego menedżera sieci
Zacznij od wypisania linków, o których systemd wie:
networkctl list
Poszukaj interfejsu przewodowego, zazwyczaj nazywanego enp3s0, eno1lub eth0. Możesz również uruchomić ip link. Nie kopiuj nazwy przykładowego interfejsu bez powodu.

Następnie sprawdź, czy NetworkManager jest aktywny:
systemctl status NetworkManager
NetworkManager i systemd-networkd mogą współistnieć, jeśli zarządzają różnymi interfejsami, ale nie należy pozwalać obu na zarządzanie tym samym łączem Ethernet. Aktualna dokumentacja systemd.network wyjaśnia, jak .networkpliki dopasowują się do interfejsów i jak networkd określa właściciela.

2. Utwórz profil sieciowy DHCP
Profile administratorów lokalnych należą do /etc/systemd/network/. Utwórz katalog, jeśli jeszcze nie istnieje, a następnie edytuj plik, taki jak 20-wired.network:
sudo mkdir -p /etc/systemd/network
sudo nano /etc/systemd/network/20-wired.network
W przypadku normalnego połączenia Ethernet, które otrzymuje adres z routera lub serwera DHCP, należy użyć:
[Match]
Name=enp3s0
[Network]
DHCP=yes
Zastąp enp3s0rzeczywistym interfejsem. Pliki muszą kończyć się na .network. Gdy kilka plików pasuje do linku, systemd-networkd używa pierwszego pasującego pliku w kolejności alfanumerycznej, więc 20-wired.networkłatwiej jest wywnioskować konkretną nazwę, taką jak „nazwa ogólna”, niż ogólną.

Opcjonalnie: użyj statycznego adresu IPv4
Jeżeli maszyna wymaga stałego adresu, zastąp go DHCP=yeswartościami odpowiednimi dla Twojej sieci:
[Match]
Name=enp3s0
[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=1.1.1.1
DNS=9.9.9.9
Nie używaj ponownie tych przykładowych adresów, chyba że pasują do Twojej podsieci. Oficjalne dokumenty referencyjne systemd.networkDHCP= , Address=, Gateway=, DNS=i bardziej zaawansowane opcje routingu.
3. Włącz systemd-networkd
Gdy profil będzie gotowy, włącz networkd i uruchom go natychmiast:
sudo systemctl enable --now systemd-networkd
Jeśli inna usługa zarządza obecnie tym samym interfejsem Ethernet, przeprowadź przekazanie z konsoli lokalnej. W przypadku hosta całkowicie odłączającego się od NetworkManager, możesz zatrzymać i wyłączyć usługę za pomocą:
sudo systemctl disable --now NetworkManager
Nie wyłączaj NetworkManager, jeśli nadal potrzebujesz go do obsługi Wi-Fi lub innych interfejsów. systemd-networkdKonfiguruje sieć IP, ale uwierzytelnianie Wi-Fi zwykle wymaga osobnego komponentu, takiego jak iwd lub wpa_supplicant.

4. W razie potrzeby skonfiguruj DNS za pomocą systemd-resolved
systemd-resolvedNie jest to wymagane dla samego Networkd, ale dobrze integruje się z Networkd i może korzystać z serwerów DNS odczytanych przez DHCP. Jeśli Twoja dystrybucja nie korzysta jeszcze z innego resolvera, włącz go:
sudo systemctl enable --now systemd-resolved
Dokumentacja systemd -resolved zaleca linkowanie /etc/resolv.confdo pliku szczątkowego, gdy resolver jest systemem resolver. Sprawdź najpierw:
readlink -f /etc/resolv.conf
Jeżeli celowo chcesz, aby systemd-resolved udostępniał resolv.conf, użyj:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Nie należy dokonywać wymiany, /etc/resolv.confjeśli dystrybucja lub inne narzędzie DNS celowo nią zarządza.

5. Załaduj ponownie konfigurację i ponownie skonfiguruj interfejs
Po edycji .networkpliku przeładuj konfigurację networkd. Możesz wtedy jawnie zmienić konfigurację łącza docelowego:
sudo networkctl reload
sudo networkctl reconfigure enp3s0
Zastąp enp3s0nazwą swojego interfejsu. Oficjalny podręcznik networkctl dokumentuje oba polecenia. Pełne polecenie systemctl restart systemd-networkdrównież przeładowuje usługę, ale networkctlzazwyczaj jest to bardziej ukierunkowane rozwiązanie.

6. Sprawdź, czy systemd-networkd działa
Sprawdź status interfejsu:
networkctl status enp3s0
Aby połączenie DHCP działało prawidłowo, powinieneś zobaczyć skonfigurowane łącze zawierające adres IP, domyślną bramę i zazwyczaj informacje DNS.

Następnie potwierdź trasę i łączność:
ip route
ping -c 3 1.1.1.1
Jeśli ping IP działa, ale strony internetowe lub nazwy hostów nie są rozpoznawane, przetestuj DNS za resolvectl query example.compomocą systemd-resolved. Jeśli interfejs nie zniknie unmanaged, sprawdź ponownie [Match]nazwę i upewnij się, że inny menedżer sieci nie zgłasza tego samego urządzenia.

W przypadku zaawansowanych konfiguracji, takich jak mosty, połączenia, sieci VLAN, tunele lub urządzenia wirtualne, zapoznaj się z oficjalną dokumentacją usługi systemd-networkd oraz powiązanymi materiałami systemd.netdevi systemd.linkodniesieniami.