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,
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-6.png)
- 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
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-7.png)
- 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)
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-8.png)
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ń.
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image.png)
W tym miejscu znajdziemy utworzone profile sieciowe. Dwuklik na profil pozwoli na przejście do jego konfiguracji.
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-1.png)
Domyślnym ekranem konfiguracji jest karta Ethernet zawierająca opcje konfiguracji sprzętu jako takiego. Konfiguracja IPv4 znajduje się na karcie IPv4 Settings.
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-2.png)
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.
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-3.png)
Wybór opcji Manual pozwoli na dodanie adresów. I tak, klikając przycisk Add możemy dodać odpowiedni adres.
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-4.png)
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.
![](https://zeszyt.jedlikowski.com/wp-content/uploads/2020/05/image-5.png)
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.