Konfiguracja sieci w Linuxie to jedna z tych rzeczy, które prędzej czy później trzeba ogarnąć. Nieważne, czy stawiasz serwer, uczysz się do egzaminu, budujesz domowy lab, czy po prostu chcesz zrozumieć, co oznacza tajemnicze enp0s3 – bez podstaw sieci daleko nie zajedziesz. To właśnie od poprawnie skonfigurowanych interfejsów zależy, czy system będzie widział inne maszyny, internet, serwery DNS i całą resztę świata. Przed przystąpieniem do czytania tego poradnika warto zaznajomić się z podstawami sieci, do których odsyłam tu.
Środowisko testowe do nauki sieci
Najłatwiej uczyć się sieci na praktycznym przykładzie, dlatego ten poradnik opiera się na prostym środowisku testowym złożonym z 5 maszyn wirtualnych. Trzy z nich działają pod kontrolą Linuksa, a dwie to Windows. Taki układ dobrze oddaje realne środowisko, w którym różne systemy muszą się ze sobą komunikować.
Do wirtualizacji wykorzystuję VirtualBox, ale równie dobrze możesz użyć VMware albo innego rozwiązania. Najważniejsze nie jest samo narzędzie, tylko to, żebyś rozumiał, jak połączone są maszyny i które interfejsy trafiają do których sieci. Trzeba też pamiętać, że w zależności od środowiska mogą się różnić nazwy interfejsów sieciowych. U mnie będzie to na przykład enp0s3, enp0s8 i enp0s9, ale u Ciebie oznaczenia mogą wyglądać inaczej.

To środowisko nie zostało zbudowane tylko na potrzeby jednego ćwiczenia. Będzie ono bazą dla całej serii artykułów: w tym wpisie zajmiemy się adresacją i konfiguracją interfejsów, w kolejnym przejdziemy do nazw hostów, pliku hosts i DNS, a w trzecim pokażę, jak uruchomić routing pomiędzy podsieciami. Właśnie dlatego już na tym etapie warto skonfigurować wszystkie maszyny zgodnie z topologią, a nie tylko tę, na której aktualnie ćwiczysz. Jeśli jedna z nich zostanie pominięta, późniejsze testy komunikacji, rozwiązywania nazw i trasowania po prostu nie będą dawały pełnego obrazu.
Jak ustawić karty sieciowe w VirtualBox

Zanim uruchomisz maszyny wirtualne, trzeba najpierw poprawnie skonfigurować ich interfejsy sieciowe w VirtualBoxie.
W tym laboratorium każda maszyna dostaje odpowiednią liczbę kart sieciowych w zależności od swojej roli. Jedne systemy mają tylko po jednym interfejsie do komunikacji z lokalną siecią, a inne mają ich więcej, bo pełnią rolę hostów pośredniczących pomiędzy segmentami. To bardzo ważne przy późniejszym routingu. Jeżeli maszyna ma łączyć dwie sieci, musi być fizycznie lub logicznie obecna w obu.
W każdej z maszyn wirtualnych dodałem takie interfejsy, jak rozpisałem w topologii na wstępie. Zwróć uwagę aby każda z maszyn miała odpowiednie nazwy sieci wewnętrznej, dzięki temu poszczególne podsieci będą mogły się ze sobą komunikować. Więcej o konfiguracji wirtualnych maszyn oraz o tym jak je tworzyć możesz poczytać tu.
Wstęp do konfiguracji sieci
Zanim przejdziesz do ustawiania adresów IP, warto uporządkować kilka podstawowych pojęć. Dzięki temu dalsza część poradnika będzie po prostu bardziej zrozumiała.
Czym jest interfejs sieciowy?
Linux potrafi obsługiwać wiele urządzeń sieciowych jednocześnie. Każda karta sieciowa, fizyczna albo wirtualna, jest widoczna w systemie jako osobny interfejs sieciowy. To właśnie na interfejsach ustawiasz adresy IP, włączasz lub wyłączasz łączność i sprawdzasz, czy wszystko działa tak, jak powinno.
Nazwy interfejsów zależą od dystrybucji, sprzętu i środowiska wirtualizacyjnego. Najczęściej spotkasz oznaczenia w stylu:
- enp0s3
- enp0s8
- enp0s9
Każdy interfejs może być w jednym z dwóch podstawowych stanów:
- podniesiony (UP) – interfejs jest aktywny i bierze udział w komunikacji sieciowej,
- opuszczony (DOWN) – interfejs jest wyłączony i nie przesyła ruchu.
Mówiąc prościej: jeśli interfejs jest „UP”, system może z niego korzystać; jeśli jest „DOWN”, to tak jakby karta była odłączona.
Metody uzyskania adresów w Linuxie
Kolejna ważna sprawa to sposób nadawania adresów IP. W Linuxie możemy to zrobić na kilka sposobów:
- Ręcznie (statycznie) – czyli wpisujemy adres IP sami: albo za pomocą poleceń w terminalu, albo przez edycję plików konfiguracyjnych. To podejście jest częste na serwerach i w infrastrukturze, gdzie chcemy mieć pełną kontrolę nad adresacją. Jeśli system ma zawsze być osiągalny pod tym samym adresem, konfiguracja statyczna zwykle jest najlepszym wyborem.
- Automatycznie (dynamicznie) przez DHCP – wtedy system pobiera adres IP, bramę i DNS automatycznie z serwera DHCP, z wcześniej przygotowanej puli adresów. To metoda szybka i wygodna, szczególnie na komputerach użytkowników albo w sieciach, gdzie adres nie musi być stały.
W praktyce bardzo często przyjmuje się zasadę, że elementy infrastruktury (serwery, routery, ważne urządzenia) powinny mieć adresy statyczne, bo daje to większą kontrolę i przewidywalność. DHCP też jest poprawnym rozwiązaniem, ale trzeba pamiętać, że adres może się zmienić, jeśli nie ustawimy rezerwacji.
Jak sprawdzić interfejsy sieciowe w Linuxie?
Niezależnie od tego, czy planujesz konfigurację statyczną czy DHCP, pierwszym krokiem zawsze jest sprawdzenie jakie interfejsy sieciowe widzi system i jak się nazywają. Do tego przydają się poniższe polecenia:
- ip a – podstawowe i najczęściej używane narzędzie w nowoczesnych systemach Linux,
- ifconfig -a – starsze narzędzie, nadal spotykane, ale w wielu dystrybucjach wymaga doinstalowania pakietu net-tools.
Dzięki tym poleceniom szybko zobaczysz listę interfejsów, ich stan (UP/DOWN) oraz przypisane adresy IP, jeśli już jakieś mają.

Tymczasowa konfiguracja adresu IP w Linuxie
Przypisanie adresu IP za pomocą poleceń ip jest bardzo proste i świetnie sprawdza się do szybkich testów. W praktyce wystarczy znać dwa polecenia: jedno do dodania adresu, drugie do podniesienia interfejsu (czyli włączenia go).
Najpierw dodajemy adres IPv4 do wybranego interfejsu, np. enp0s8:
ip addr add 192.168.0.10/24 dev enp0s8
Następnie aktywujemy interfejs:
ip link set dev enp0s8 up
Jeśli teraz sprawdzimy stan interfejsów (np. poleceniem ip a), zobaczymy, że interfejs enp0s8 ma przypisany adres 192.168.0.10/24 oraz jest w stanie UP. Od tego momentu karta jest gotowa do komunikacji w sieci – może wysyłać i odbierać pakiety.
Jeśli chcesz cofnąć zmiany, możesz usunąć przypisany adres i wyłączyć interfejs.
ip addr del 192.168.0.10/24 dev enp0s8
ip link set dev enp0s8 down
Dlaczego ta metoda nie wystarcza na serwerze?
Najważniejszą wadą tej metody jest to, że konfiguracja nie jest trwała. Ustawienia wprowadzone poleceniami ip żyją tylko w działającym systemie. Po restarcie komputera albo przeładowaniu konfiguracji sieci adres IP zniknie i trzeba będzie ustawiać go od nowa. W laboratorium to nie problem. Na serwerze – już zdecydowanie tak.
To podejście jest więc idealne do szybkich testów i labów, ale jeśli zależy nam na konfiguracji “na stałe”, musimy skorzystać z mechanizmów konfiguracyjnych konkretnej dystrybucji.
Trwała konfiguracja sieci w Linuxie
W tej części pokazuję konfigurację na konkretnych przykładach dla poszczególnych dystrybucji, ale pamiętaj, że w praktyce musisz wprowadzić odpowiednie ustawienia na wszystkich maszynach z laboratorium. Samo poprawne ustawienie jednego hosta nie wystarczy, bo kolejne artykuły będą opierały się na komunikacji pomiędzy Debianem, CentOS-em, Ubuntu oraz dwoma hostami Windows.
Konfiguracja sieci w Debianie
W dystrybucjach opartych o Debiana konfiguracja sieci znajduje się w pliku:
/etc/network/interfaces
To właśnie tam określasz, jakie interfejsy mają się uruchamiać, czy mają działać przez DHCP, czy ze statycznym adresem IP.
Przykładowo: jeśli nasza maszyna ma jedną kartę sieciową w trybie NAT, to interfejs enp0s3 zwykle dostaje adres z DHCP. Taki wpis może wyglądać tak:
allow-hotplug enp0s3
iface enp0s3 inet dhcp
- allow-hotplug oznacza, że interfejs może być podnoszony automatycznie, gdy zostanie wykryty,
- iface … inet dhcp mówi, że adres IP ma być pobrany dynamicznie z DHCP.
Teraz skonfiguruje interfejsy zgodnie z założeniami. W moim laboratorium dodatkowe interfejsy to enp0s8 i enp0s9. U Ciebie nazwy mogą się różnić, dlatego najpierw sprawdź je poleceniem ip a.
Następnie dodaj odpowiednie wpisy do pliku /etc/network/interfaces:

W ten sposób skonfigurowałeś dwa interfejsy tak, aby:
- startowały automatycznie razem z systemem
- miały statyczne adresy IP
Po zapisaniu zmian zrestartuj usługę sieciową poleceniem:
systemctl restart networking.service
Na końcu sprawdź wynik poleceniem ip a. Jak widać, adresy zostały przypisane prawidłowo.

W praktyce warto też znać dodatkowe parametry, które mogą pojawić się w tym pliku, takie jak:

Konfiguracja sieci w Ubuntu
W nowszych wersjach Ubuntu sieć konfiguruje się zwykle przez Netplan. Pliki konfiguracyjne znajdują się w katalogu:
/etc/netplan/
Najczęściej spotkasz tam plik taki jak 00-installer-config.yaml. Sama konfiguracja pliku jest podoba do poprzednich dystrybucji. Najpierw określamy interfejs a następnie dodajemy do niego adresacje. W przypadku interfejsu enp0s3 została wybrana dynamiczna metoda uzyskiwania adresu, wystarczy więc sam argument dhcp4: true.
Skonfiguruj drugi interfejs enp0s8 dodając odpowiednie wpisy. Zgodnie z tabelką ustaw statyczny adres 172.16.20.11, bramę 172.16.20.1. Dodaj również dwa serwery DNS.

WAŻNE!
Netplan używa składni YAML, a YAML jest bardzo wrażliwy na formatowanie. W praktyce oznacza to, że:
- wcięcia są kluczowe,
- nie wolno używać tabulatorów (tylko spacje),
- czasem jedna dodatkowa spacja potrafi wywołać błąd.
Dlatego po edycji pliku zawsze warto go dokładnie przejrzeć.
Po zapisaniu pliku, należy zastosować wprowadzone zmiany wywołując polecenie netplan apply na prawach administratora. Ubuntu w odróżnieniu od innych dystrybucji nie pracuje domyślnie na koncie roota.
sudo netplan apply
Konfiguracja sieci w CentOS
W CentOS-ie oraz w wielu systemach z rodziny RHEL/Fedora standardem jest NetworkManager. Najwygodniejszym narzędziem do zarządzania siecią w terminalu jest nmcli. Dzięki niemu można konfigurować interfejsy bez ręcznego edytowania plików.
Najpierw sprawdź stan urządzeń poleceniem poleceniem nmcli -p dev.

Na screenie widać, że interfejsy enp0s8 i enp0s9 są nieaktywne. Zanim przypiszemy im adresy, musimy je “podłączyć”.
nmcli device connect enp0s8
nmcli device connect enp0s9
Jeśli pojawi się błąd związany z DHCP, nie panikuj. W labie bez serwera DHCP to dość normalne. Najważniejsze, żeby interfejs przeszedł w stan aktywny. Możesz to zweryfikować ponownie poleceniem nmcli -p dev.
Teraz przypisz adresy IP i ustaw metodę adresacji na statyczną (manual). W CentOS możemy to zrobić poleceniami:
nmcli connection modify enp0s8 ipv4.addresses 192.16.0.20/24
nmcli connection modify enp0s8 ipv4.method manual
nmcli connection up enp0s8
nmcli connection modify enp0s9 ipv4.addresses 172.16.20.1/24
nmcli connection modify enp0s9 ipv4.method manual
nmcli connection up enp0s9
nmcli connection reload
Co robią te polecenia?
- connection modify ustawia parametry (adres, metoda),
- connection up podnosi połączenie i stosuje zmiany,
- connection reload przeładowuje konfigurację.
W Centosie pliki odpowiedzialne za konfiguracje sieci znajdują się w katalogu
/etc/NetworkManager/system-connections
Każdy aktywowany interfejs/connection dostaje tam plik w stylu: enp0s9.nmconnection. W pliku znajdziesz mnóstwo parametrów w formacie opcja=wartość. To alternatywny sposób konfiguracji, ale w tym poradniku skupiamy się na nmcli.

Aby sprawdzić poprawność przypisanych danych adresowych należy zrestartować usługę sieci oraz wpisać nmcli.

Konfiguracja sieci w Windowsach
Konfiguracja sieci w Windowsie nie jest głównym tematem tego artykułu, ale w naszym laboratorium warto ją wykonać poprawnie, żeby wszystkie maszyny mogły brać udział w testach. Jeśli jedna część środowiska działa pod Linuxem, a druga pod Windowsem, to dobrze jest zadbać o spójność adresacji po obu stronach.
Na obu maszynach z Windows należy przypisać adresy IP zgodnie z diagramem sieci pokazanym na początku artykułu. Oznacza to, że dla każdej stacji trzeba ustawić odpowiedni:
- adres IPv4
- maskę podsieci
- bramę domyślną
W praktyce jest to zwykła, ręczna konfiguracja karty sieciowej w ustawieniach systemu Windows. Sam mechanizm nie różni się specjalnie od tego, co robiliśmy wcześniej w Linuxie – nadal chodzi o przypisanie właściwych parametrów do właściwego interfejsu. Różni się tylko sposób kliknięcia do tego samego celu.

Po zapisaniu ustawień warto od razu sprawdzić, czy system przyjął konfigurację poprawnie. Najprościej zrobić to poleceniem ipconfig w wierszu poleceń. Sprawdź również czy komunikuje się z bramą domyślną poleceniem ping. Jak widać na poniższym screenie komunikacja przebiega pomyślnie.

Zezwolenie na ruch ICMPv4 w Windowsie
Po samej konfiguracji adresu IP może się okazać, że host Windows nadal nie odpowiada na ping, mimo że adresacja wygląda poprawnie. Windows Firewall domyślnie często blokuje przychodzące żądania ICMP Echo Request, czyli właśnie to, czego używa polecenie ping.
Najprościej byłoby zezwolić na ping z każdego miejsca, ale w praktyce lepiej tego nie robić. W laboratorium chcemy tylko umożliwić diagnostykę z konkretnej podsieci, a nie otwierać hosta szerzej, niż to potrzebne. To dobra praktyka bezpieczeństwa: zezwalamy dokładnie na tyle, ile jest potrzebne do testów, i nic więcej.
Konfiguracja sieci w Windowsie nie jest częścią tego artykułu, jednak jeśli nie wiesz jak to zrobić, to poniżej umieszczam screen pokazujący to krok po kroku. Na obu Windowsach należy przypisać adresy według pokazanego na początku artykułu diagramu.
W naszym laboratorium wygląda to tak:
- na Windowsie CL1 zezwalamy na ping z sieci 172.16.20.0/24
- na Windowsie CL2 zezwalamy na ping z sieci 172.16.10.0/24
Zanim dodasz regułę zapory, warto sprawdzić, z jakim profilem sieciowym pracuje interfejs. W Windowsie reguły mogą obowiązywać osobno dla profilu:
- Private
- Public
- Domain
W laboratorium najczęściej spotkasz profil Private albo Public. Żeby to sprawdzić, uruchom PowerShell jako administrator i wpisz:
Get-NetConnectionProfile
To polecenie pokaże, który interfejs korzysta z jakiego profilu. Jest to ważne, ponieważ jeśli dodasz regułę tylko dla profilu Private, a interfejs działa jako Public, to reguła nie zadziała tak, jak oczekujesz.

Po sprawdzeniu profilu możesz dodać regułę zapory. Robimy to w PowerShellu uruchomionym z uprawnieniami administratora. Przykład dla CL1, który ma odpowiadać na ping z sieci 172.16.20.0/24:
New-NetFirewallRule `
-DisplayName "Allow ICMPv4 Echo from 172.16.20.0/24" `
-Direction Inbound `
-Protocol ICMPv4 `
-IcmpType 8 `
-Action Allow `
-RemoteAddress 172.16.20.0/24 `
-Profile Private
Na Windowsie CL2 pamiętaj, aby podmienić sieć zdalną zgodnie z topologią, czyli użyć właściwego adresu IPv4 dla tej części laboratorium.
Podsumowanie
Od tego momentu mamy przygotowany fundament pod całą serię: wszystkie hosty powinny mieć poprawnie ustawione interfejsy, adresy IP, maski oraz tam gdzie to potrzebne bramy domyślne. To bardzo ważne, bo bez spójnej konfiguracji całego laboratorium nie da się sensownie przejść do kolejnych tematów. W następnym artykule wykorzystamy tę samą topologię i tę samą adresację, ale zamiast pracować na samych adresach IP, zaczniemy porządkować nazwy hostów, plik hosts, DNS i resolver.
Konfiguracja sieci w Linuxie może wyglądać trochę inaczej w zależności od dystrybucji, ale ogólny schemat działania jest bardzo podobny. Najpierw sprawdzasz, jakie interfejsy sieciowe widzi system, później decydujesz, czy chcesz użyć DHCP, czy statycznego adresu IP, a na końcu konfigurujesz wszystko w sposób trwały.
W praktyce warto znać zarówno szybkie komendy do testów, jak i „właściwe” metody konfiguracji dla konkretnej dystrybucji. Dzięki temu nie tylko uruchomisz sieć, ale też dużo szybciej zrozumiesz, dlaczego coś działa albo dlaczego właśnie przestało działać.
W kolejnym artykule pokażę Ci, jak w Linuxie działają hosts, DNS, resolver i hostname, czyli wszystko to, dzięki czemu system potrafi odnajdywać inne maszyny nie tylko po adresach IP, ale też po nazwach.