Jak zawsze, wśród Linuksów można wskazać wiele sposobów na konfigurację jednego rzeczy. W przypadku konfigurowania interfejsów sieciowych natomiast jest to dość podobne w większości systemów operacyjnych z tej rodziny.
W tej notatce znajdują się trzy sposoby konfiguracji:
- "klasyczny" - użycie pliku
/etc/network/interfaces
, - "konsolowy", polecany w dzisiejszym świecie - użycie polecenia
ip
, - oraz graficzny.
Najczęstszym dziś sposobem jest jednak konfiguracja sieci z wykorzystaniem netplanu. Został on omówiony w tym wpisie: Konfiguracja interfejsów sieciowych w Linuksie z wykorzystaniem netplanu.
Wariant "klasyczny": plik /etc/network/interfaces
Plik /etc/network/interfaces
służy do konfiguracji interfejsów sieciowych zainstalowanych w systemie komputerowym. Zwrócić należy jednak uwagę na to, że plik ten jest coraz rzadziej wykorzystywany. Zastępują go menedżery sieciowe, jak na przykład NetworkManager w systemie Ubuntu.
Nazewnictwo interfejsów sieciowych
W systemie Linux każdy interfejs sieciowy ma swoją nazwę (w Windowsach też). Musimy tutaj wskazać pewną zmianę, która nastała w ich nazewnictwie. W latach 90. XX w. interfejsy otrzymywały nazwy eth0
, eth1
itd. przydzielane przez jądro systemu. Wraz z rozwojem systemu proces uruchamiania staje się coraz bardziej zrównoleglony (tzn. kilka "etapów"/"zadań" zostaje wykonanych w tym samym czasie). Zwiększyło się więc prawdopodobieństwo, że w przypadku, gdy mamy w systemie komputerowym więcej niż jeden interfejs, nie otrzymają one tych samych nazw.
W związku z tym [wraz z wersją 197 pakietu systemd - ciekawostka] wprowadzono system przewidywalnych nazw. Nazwy pochodzą od miejsca instalacji karty sieciowej w systemie w następującej kolejności:
- na podstawie indeksu interfejsu podanego przez firmware / BIOS, np.
eno1
, - na podstawie numeru slotu PCI Express podanego przez firmware / BIOS, np.
ens1
, - na podstawie fizycznej lokalizacji złącza w systemie komputerowym, np.
enp2s0
, - na podstawie adresu MAC interfejsu, np.
enx0c8bfd9cb409
(przy czym ta reguła nie jest domyślnie używana, ale może być, jeśli użytkownik ją skonfiguruje), - klasyczne, nieprzewidywalne nazewnictwo kernela, np.
eth0
.
Konfiguracja pliku
Przykładowa konfiguracja pliku /etc/network/interfaces jest następująca.
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eno1
allow-hotplug eno1
iface eno1 inet dhcp
Charakterystyczne linijki powyższej konfiguracji:
auto lo
- dyrektywaauto
oznacza, że interfejs zostanie podniesiony (uruchomiony) podczas startu systemu,allow-hotplug eno1
- dyrektywa ta oznacza, że system będzie zezwalać na hotplugging przewodu sieciowego podłączanego do interfejsueno1
(tak, nie jest to oczywiste, że możemy sobie przewód odłączać i podłączać, kiedyś trzeba było komputer wyłączyć, zmienić przewód i włączyć na nowo).iface eno1 inet dhcp
- dyrektywa ta oznacza, że interfejseno1
będzie pobierać konfigurację z serwera DHCP.
Nic nie stoi na przeszkodzie, aby konfigurację interfejsu wskazać ręcznie - wykonać konfigurację statyczną.
auto eno1
allow-hotplug eno1
iface eno1 inet static
address 192.168.1.1/24
gateway 192.168.1.254
W ten sposób skonfigurowaliśmy statyczną adresację interfejsu eno1, podając adres IP 192.168.1.1, maskę 24-bitową (255.255.255.0) i bramę domyślną 192.168.1.254.
Możemy także wskazać maskę w osobnej linijce.
auto eno1
allow-hotplug eno1
iface eno1 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
A co z DNSami?
Plik /etc/network/interfaces
służy do konfiguracji interfejsu sieciowego. Nie zawiera zatem konfiguracji adresów serwerów DNS, ponieważ nie są one obowiązkowe.
Do konfiguracji serwerów DNS używamy pliku /etc/resolv.conf
(uwaga: nie mylić z programem resolvconf
, który ma, niestety, praktycznie identyczną nazwę). Jego przykładowa treść jest następująca:
# This file is managed by man:systemd-resolved(8). Do not edit.
# Fragment pominięto
nameserver 192.168.1.254
nameserver 8.8.8.8
nameserver 8.8.4.4
Dyrektywa nameserver
pozwoli zatem ręcznie dopisać adresy serwerów DNS, z których chcemy skorzystać.
Szczególnie ważna informacja została zawarta w pierwszej linii: ten plik jest zarządzany przez systemd-resolved(8). Nie edytuj. Jak wskazałem, wiele elementów (jeśli nie wszystkie) konfiguracji sieci zostają zastąpione przez automaty. W tym przypadku zmiany wprowadzone przez użytkownika do tego pliku mogą (i będą) zostać zmienione, np. usunięte. Szczegóły - ósma strona podręcznika dot. systemd-resolved.
Wariant "konsolowy": ip
Dawne polecenia pakietów ifup
/ ifdown
zostały zastąpione większym pakietem o nazwie ip
. Możemy z niego skorzystać, aby konfigurować interfejsy sieciowe. I tak:
- polecenie
ip a
(skrót odip address show
) wypisze aktualne adresy interfejsów sieciowych,
- polecenie
ip a add 192.168.1.1/24 peer 192.168.1.254 dev enp0s3
doda do intefejsuenp0s3
adres192.168.1.1
z maską24
-bitową i bramą domyślną192.168.1.254
; uwaga: wymaga uprawnień roota
- polecenie
ip a del 192.168.1.1 dev enp0s3
usunie adres192.168.1.1
przypisany do interfejsuenp0s3
(uwaga: składnia tego polecenia zmieni się w przyszłości, proszę przeczytać komunikat ze zrzutu ekranowego)
Wariant "graficzny": NetworkManager
W systemach Ubuntu czy Debian znajdziemy możliwość konfiguracji profilów sieciowych przy użyciu środowiska graficznego. To ważne: tutaj edytujemy profile powiązane z interfejsami sieciowymi.
Najprostszym sposobem jest wybór ikony połączenia sieciowego z zasobnika systemowego i wejście do edycji połączeń.
W tym miejscu znajdziemy utworzone profile sieciowe. Dwuklik na profil pozwoli na przejście do jego konfiguracji.
Domyślnym ekranem konfiguracji jest karta Ethernet zawierająca opcje konfiguracji sprzętu jako takiego. Konfiguracja IPv4 znajduje się na karcie IPv4 Settings.
Jedną z ważniejszych opcji jest metoda konfiguracji protokołu internetowego w wersji 4. Do wyboru mamy korzystanie z serwera DHCP (pełne lub tylko adres interfejsu, bez DNS czy innych opcji), ręczne ustawienie, korzystanie tylko z adresu link-local, udostępnianie innym komputerom lub wyłączenie protokołu.
Wybór opcji Manual pozwoli na dodanie adresów. I tak, klikając przycisk Add możemy dodać odpowiedni adres.
Do skonfigurowania pozostały jeszcze adresy serwerów DNS oraz domeny poszukiwań. Te pierwsze zwykle konfigurujemy, te drugie - już rzadziej. Adresy serwerów DNS oddzielamy przecinkami.
Kliknięcie w Save automatycznie zastosuje całą konfigurację.
Źródła
- systemd.net-naming-scheme — Network device naming schemes: https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html
- Debian Wiki - NetworkConfiguration: https://wiki.debian.org/NetworkConfiguration
man ip
(dostęp online: https://linux.die.net/man/8/ip)man ip-address
(dostęp online: pod powyższym linkiem)
Odnośniki do podstawy programowej
Ucząc się tego zagadnienia, realizujesz następujące punkty podstawy programowej:
- podstawa programowa 2017 (Dz.U.2017.860)
- EE.08.2.10 stosuje adresację protokołu internetowego (IP),
- EE.08.5.2 konfiguruje interfejsy sieciowe,
- EE.08.5.3 stosuje polecenia systemów operacyjnych,
- PKZ(EE.b).8 posługuje się terminologią dotyczącą sieci komputerowych;
- podstawa programowa 2019 (Dz.U.2019.991)
- INF.02.3.7.1 określa właściwości interfejsu sieciowego w różnych systemach operacyjnych,
- INF.02.3.7.2 konfiguruje interfejsy sieciowe komputerów osobistych i urządzeń mobilnych,
- INF.02.3.7.5 podłącza system komputerowy lub urządzenie mobilne do sieci,
- INF.02.3.9.4 konfiguruje system operacyjny z poziomu konsoli,
- INF.02.6.6.5 stosuje adresację IPv4 i IPv6
- INF.02.8.4.5 uruchamia usługę klient DHCP,
- INF.02.8.4.6 konfiguruje statyczną adresację IP na kartach sieciowych.