1/28 Basic IP – podstawowa konfiguracja IP w systemie Linux

Adresacja, maska, brama, DNS, duplex i prędkość interfejsu

Praktyczny przewodnik konfiguracji sieci w systemie Linux

Prezentacja obejmuje kompleksową konfigurację sieci w systemie Linux – od przypisania adresu IP, maski i bramy, przez konfigurację, aż po zaawansowane ustawienia warstwy fizycznej: duplex, autonegocjację i prędkość interfejsu.

Wszystkie przykłady są oparte na rzeczywistych dystrybucjach: Debian/Ubuntu (interfaces, netplan) oraz RHEL/Fedora (nmcli, ifcfg).

Każde polecenie i plik konfiguracyjny są szczegółowo opisane i opatrzone komentarzami.

Prezentacja zawiera diagramy ASCII topologii, tabele porównawcze narzędzi oraz praktyczne scenariusze diagnostyczne.

Administrator systemów Linux musi rozumieć, że konfiguracja sieci to nie tylko przypisanie adresu IP, ale cały zestaw parametrów wpływających na komunikację. W praktyce inżynierskiej kluczowe znaczenie ma umiejętność odróżnienia konfiguracji tymczasowej od trwałej – pierwsza służy do diagnostyki i awaryjnego przywracania łączności, druga zapewnia powtarzalność po restarcie. Współczesne dystrybucje Linux oferują kilka równoległych systemów konfiguracji sieci, co bywa źródłem frustracji początkujących administratorów.

Należy pamiętać, że narzędzia takie jak netplan, systemd-networkd i NetworkManager często konkurują ze sobą o zarządzanie interfejsami. W praktyce produkcyjnej najlepiej wybrać jeden system i konsekwentnie go stosować, wyłączając pozostałe. Zrozumienie różnic między tymi rozwiązaniami oraz umiejętność przełączania się między nimi to cecha zaawansowanego administratora. Warto również zwrócić uwagę na aspekty bezpieczeństwa – nieprawidłowo skonfigurowany interfejs sieciowy może stanowić lukę w zabezpieczeniach całego systemu.

2/28 Streszczenie

DNS: plik /etc/resolv.conf.

System Linux oferuje wiele narzędzi do konfiguracji sieci. iproute2 (polecenie ip) jest aktualnym standardem – zastępuje przestarzałe ifconfig i route.

Konfiguracja adresu IP: ip addr add 192.168.1.100/24 dev eth0.

Brama: ip route add default via 192.168.1.1.

Trwała konfiguracja zależy od dystrybucji: Debian/Ubuntu – /etc/network/interfaces lub netplan (YAML), RHEL/Fedora – /etc/sysconfig/network-scripts/ifcfg-* lub nmcli.

Narzędzie ethtool służy do odczytu i zmiany parametrów warstwy fizycznej: duplex, prędkość, autonegocjacja.

Do diagnostyki służą: ping, ip (adresy MAC i trasy), ss (sockety), traceroute (trasa pakietów), mtr (ciągły traceroute), dig/nslookup, tcpdump (analiza ruchu).

Każde narzędzie ma określone zastosowanie w konkretnym scenariuszu awaryjnym.

Znajomość ekosystemu narzędzi sieciowych w systemie Linux jest niezbędna do efektywnego rozwiązywania problemów z łącznością. W praktyce inżynierskiej warto zapamiętać, że polecenie ip z pakietu iproute2 jest uniwersalne i dostępne na każdej dystrybucji, podczas gdy starsze narzędzia z net-tools mogą wymagać dodatkowej instalacji. Dobry administrator powinien znać co najmniej jedno narzędzie z każdej kategorii: konfiguracji adresów, routingu, diagnostyki warstwy fizycznej oraz analizy DNS.

Współczesne środowiska produkcyjne coraz częściej wykorzystują automatyzację konfiguracji sieci za pomocą narzędzi takich jak Ansible czy Puppet. Mimo to ręczna umiejętność konfiguracji pozostaje kluczowa podczas awarii, gdy system automatyzacji jest niedostępny. Warto również zwrócić uwagę na narzędzie ss, które zastąpiło przestarzały netstat i oferuje znacznie więcej informacji o gniazdach sieciowych, w tym szczegóły dotyczące buforowania i okien TCP.

3/28 Literatura i źródła
  • Linux Network Administrator's Guide – O'Reilly (darmowa online)
  • TCP/IP Illustrated, Vol. 1 – W. Richard Stevens
  • Strony manual: man ip, man ethtool, man netplan, man nmcli, man resolv.conf
  • Linux. Biblia administratora – Evi Nemeth i in., Helion
  • Ubuntu Netplan documentation – netplan.io
  • Red Hat Enterprise Linux Networking Guide – access.redhat.com

Wybór odpowiednich źródeł wiedzy ma kluczowe znaczenie dla skutecznego uczenia się administracji sieciami w systemie Linux. Książka TCP/IP Illustrated W. Richarda Stevensa to pozycja obowiązkowa dla każdego inżyniera sieciowego – mimo upływu lat wciąż stanowi najlepsze źródło wiedzy o protokołach TCP/IP od warstwy fizycznej aż po aplikacyjną. Z kolei Linux Network Administrator's Guide to darmowy podręcznik dostępny online, który doskonale uzupełnia wiedzę praktyczną o aspekty konfiguracyjne specyficzne dla Linuksa.

Strony podręcznika systemowego (man) są często niedocenianym źródłem wiedzy, a zawierają wyczerpujące informacje o każdym narzędziu, łącznie z przykładami użycia i opisem wszystkich opcji. Warto również regularnie śledzić oficjalne dokumentacje dystrybucji – Ubuntu Netplan documentation oraz Red Hat Enterprise Linux Networking Guide zawierają aktualne informacje o narzędziach i konwencjach specyficznych dla danej dystrybucji. Ponadto społecznościowe fora i blogi techniczne, choć nie zawsze w pełni wiarygodne, często dostarczają praktycznych rozwiązań rzeczywistych problemów konfiguracyjnych.

4/28 Interfejsy sieciowe w systemie Linux – nazewnictwo
NazwaZnaczenie
eth0Starszy schemat (zastąpiony przez systemd, wciąż spotykany w maszynach wirtualnych)
enp0s3en=Ethernet, p0=PCI bus 0, s3=slot 3
ens33en=Ethernet, s33=slot 33 (PCI Express)
eno1en=Ethernet, o1=embedded (płyta główna) nr 1
wlp2s0wl=WLAN, p2=PCI bus 2, s0=slot 0
loLoopback (127.0.0.1) – zawsze obecny

Wyświetlenie wszystkich interfejsów:

ip link show
# 1: lo: <LOOPBACK,UP,LOWER_UP> ...
# 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> ...

Szczegóły konkretnego interfejsu:

ip addr show enp0s3
ip -s link show enp0s3  # ze statystykami

Współczesny Linux używa predictable network interface names – nazwy interfejsów zależą od położenia sprzętu:

Przejście na przewidywalne nazwy interfejsów sieciowych (predictable network interface names) było jedną z ważniejszych zmian wprowadzonych przez systemd w wersji 197. Dawny schemat eth0, eth1, eth2 powodował chaos w konfiguracji – po dodaniu nowej karty sieciowej nazwy mogły się zmienić, co łamało reguły firewalla i konfigurację usług. Nowy system nazewnictwa opiera się na informacjach z BIOS-u lub magistrali PCI, dzięki czemu nazwy są stabilne nawet po zmianie sprzętu.

W środowiskach wirtualizacyjnych, takich jak VirtualBox czy VMware, często spotyka się starsze nazwy eth0, ponieważ maszyny wirtualne emulują starsze karty sieciowe. Administrator może świadomie wyłączyć przewidywalne nazwy parametrem jądra net.ifnames=0, ale nie jest to zalecane w środowisku produkcyjnym. Warto też pamiętać, że polecenie ip link show wyświetla również interfejsy wirtualne, takie jak mostki (bridge), interfejsy VLAN czy pary veth używane w kontenerach – ich nazwy również podlegają regułom systemd.

5/28 Polecenie ip – podstawy i porównanie z ifconfig
Zadanieiproute2 (nowe)net-tools (stare)
Pokaż interfejsyip link showifconfig -a
Pokaż adresy IPip addr showifconfig
Dodaj adres IPip addr add 10.0.0.1/24 dev eth0ifconfig eth0 10.0.0.1 netmask 255.255.255.0
Włącz interfejsip link set eth0 upifconfig eth0 up
Pokaż tablicę routinguip route showroute -n
Dodaj bramęip route add default via 10.0.0.1route add default gw 10.0.0.1
Pokaż sąsiadów ARPip neigh showarp -n
Statystyki interfejsuip -s link show eth0ifconfig eth0
Wskazówka: net-tools (ifconfig, route) są przestarzałe. Niektóre dystrybucje (Arch, Fedora) nie instalują ich domyślnie. Zawsze używaj ip z iproute2.

Dostępny we wszystkich dystrybucjach.

ip z pakietu iproute2 to nowoczesny zamiennik ifconfig i route.

Przejście z net-tools na iproute2 to nie tylko kwestia nowszej składni, ale przede wszystkim znacznie większych możliwości diagnostycznych i konfiguracyjnych. Pakiet iproute2 zawiera narzędzia, które nie mają odpowiedników w starym zestawie – na przykład ss do szczegółowego monitorowania gniazd sieciowych, tc do zarządzania jakością usług (QoS) czy bridge do konfiguracji mostków. Ponadto iproute2 w pełni obsługuje IPv6, przestrzenie nazw sieciowych (network namespaces) oraz polityki routingu (policy routing), co jest nieosiągalne w net-tools.

Warto również zwrócić uwagę na spójność składni iproute2 – każde podpolecenie (addr, link, route, neigh) ma identyczną strukturę z opcjami globalnymi na początku. Dla administratora pracującego na wielu systemach Linux, iproute2 oferuje jednolite API niezależne od dystrybucji. Stare narzędzia ifconfig i route wciąż są używane głównie w starszych skryptach i dokumentacjach, ale w nowych systemach warto od razu uczyć się iproute2, aby uniknąć konieczności zmiany nawyków w przyszłości.

6/28 Adres IP i maska podsieci – przypomnienie
PrefiksMaskaLiczba hostówPrzykład sieci
/8255.0.0.016 777 21410.0.0.0/8
/16255.255.0.065 534172.16.0.0/16
/24255.255.255.0254192.168.1.0/24
/28255.255.255.2401410.0.0.0/28
/26255.255.255.1926210.0.0.64/26
/27255.255.255.2243010.0.0.96/27
/30255.255.255.252210.0.0.0/30 (łącze P2P)
Przykład: ip addr add 192.168.1.100/24 dev eth0 = adres 192.168.1.100 z maską 255.255.255.0 na interfejsie eth0.

Adres IPv4 składa się z 32 bitów (4 oktety), np. 192.168.1.100.

Maska podsieci określa, która część adresu to sieć, a która to host.

Zapis maski: prefiks (CIDR, np. /24) lub maska kropkowa (np. 255.255.255.0).

Konwersja maski na prefiks: policz jedynki w masce.

255.255.255.0 = 11111111.11111111.11111111.00000000 = 24 bity = /24.

Prawidłowe zrozumienie adresacji IPv4 i maski podsieci jest fundamentem konfiguracji sieci w każdym systemie operacyjnym. W notacji CIDR prefiks określa liczbę bitów sieci w adresie – na przykład /24 oznacza 24 bity sieci i 8 bitów hosta, co daje 256 adresów, z czego 254 można przypisać urządzeniom. Błąd w masce podsieci jest jednym z najczęstszych problemów konfiguracyjnych powodujących brak komunikacji między urządzeniami w tej samej sieci lokalnej.

W praktyce laboratoryjnej i produkcyjnej najczęściej spotyka się maski /24 (sieć klasy C) dla sieci lokalnych oraz /30 dla łączy punkt-punkt między routerami. Maska /16 jest typowa dla większych sieci prywatnych, a /8 dla sieci o bardzo dużej skali. W systemie Linux polecenie ip addr przyjmuje maskę w notacji CIDR, co jest wygodniejsze i mniej podatne na błędy niż tradycyjny zapis kropkowy. Warto również pamiętać o adresach specjalnych: adres sieci (wszystkie bity hosta równe 0) i adres rozgłoszeniowy (wszystkie bity hosta równe 1) nie mogą być przypisane interfejsom.

7/28 Konfiguracja adresu IP – na żywo (tymczasowo)

Dodanie adresu IP:

ip addr add 192.168.1.100/24 dev enp0s3
# Dodaje adres 192.168.1.100 z maską /24 do interfejsu enp0s3

Usunięcie adresu IP:

ip addr del 192.168.1.100/24 dev enp0s3

Włączenie/wyłączenie interfejsu:

ip link set enp0s3 up  # włącza interfejs
ip link set enp0s3 down  # wyłącza interfejs

Dodanie bramy domyślnej:

ip route add default via 192.168.1.1
# Dodaje domyślną trasę przez bramę 192.168.1.1

Sprawdzenie konfiguracji:

ip addr show enp0s3  # adres IP i maska
ip route show  # tablica routingu (w tym brama)

Doraźna konfiguracja – działa natychmiast, ale nie przetrwa restartu.

Konfiguracja tymczasowa adresu IP jest jedną z podstawowych umiejętności administratora systemów Linux, szczególnie przydatną w scenariuszach awaryjnych. Gdy serwer nie otrzymuje adresu z DHCP, a dostęp do niego jest możliwy tylko przez konsolę fizyczną lub IPMI, ręczne wpisanie kilku poleceń ip addr add, ip route add oraz ustawienie DNS pozwala błyskawicznie przywrócić łączność. Warto jednak pamiętać o kolejności operacji – najpierw dodajemy adres IP, potem włączamy interfejs, a na końcu ustawiamy bramę domyślną.

Linux umożliwia przypisanie wielu adresów IP do jednego interfejsu, co jest przydatne przy migracji usług między serwerami lub przy hostowaniu wielu witryn na różnych adresach. W przypadku bramy domyślnej system pozwala na zdefiniowanie tylko jednej trasy domyślnej – ostatnia dodana zastępuje poprzednią. Jeśli potrzebujemy wielu bram, musimy skorzystać z metryk (ip route add default via 10.0.0.1 metric 100) lub routingu politycznego. Wszystkie zmiany tymczasowe są tracone po restarcie usługi sieciowej lub systemu.

8/28 Przykład – kompletna konfiguracja doraźna
#!/bin/bash
# Tymczasowa konfiguracja IP – awaryjna

ip addr add 192.168.1.100/24 dev enp0s3
# Adres: 192.168.1.100, maska: 255.255.255.0

ip link set enp0s3 up
# Włącza interfejs (jeśli był down)

ip route add default via 192.168.1.1
# Brama domyślna: 192.168.1.1

echo "nameserver 8.8.8.8" > /etc/resolv.conf
# DNS: Google Public DNS

echo "nameserver 1.1.1.1" >> /etc/resolv.conf
# DNS zapasowy: Cloudflare

Weryfikacja:

ping -c 3 192.168.1.1  # test bramy
ping -c 3 8.8.8.8  # test Internetu (ICMP)
ping -c 3 google.com  # test DNS + ICMP
Uwaga: W nowych dystrybucjach (Ubuntu 18.04+, Fedora) /etc/resolv.conf może być zarządzany przez systemd-resolved – wtedy edycja bezpośrednia jest nadpisywana. Użyj: resolvectl dns enp0s3 8.8.8.8.

Scenariusz: serwer nie dostał adresu z DHCP.

Administrator loguje się lokalnie i konfiguruje ręcznie.

Przedstawiony scenariusz awaryjny jest klasycznym przypadkiem, z którym każdy administrator prędzej czy później się spotka. Sekwencja poleceń w skrypcie bashowym stanowi minimalną konfigurację IP umożliwiającą komunikację sieciową – adres, brama i DNS to trzy elementy niezbędne do pełnej łączności z Internetem. Weryfikacja krok po kroku za pomocą ping ma kluczowe znaczenie: najpierw testujemy bramę (warstwa 2 i 3), potem adres publiczny (routing), a na końcu nazwę domenową (DNS).

W nowoczesnych dystrybucjach z systemd-resolved bezpośrednia edycja pliku /etc/resolv.conf może być nieskuteczna, ponieważ plik ten jest symlinkiem do /run/systemd/resolve/stub-resolv.conf. W takiej sytuacji należy użyć polecenia resolvectl lub skonfigurować DNS w plikach netplan bądź systemd-networkd. Warto również zauważyć, że w środowiskach produkcyjnych rzadko konfiguruje się DNS ręcznie – zwykle jest on pobierany automatycznie z DHCP, a ręczna konfiguracja stosowana jest wyłącznie w sytuacjach awaryjnych.

9/28 DNS – plik /etc/resolv.conf
# /etc/resolv.conf – konfiguracja DNS
nameserver 8.8.8.8  # Podstawowy DNS (Google)
nameserver 1.1.1.1  # Zapasowy DNS (Cloudflare)
nameserver 2001:4860:4860::8888  # DNS IPv6
search example.com local  # Domeny przeszukiwania (opcjonalne)

Testowanie DNS:

dig google.com  # Szczegółowe zapytanie DNS
dig +short google.com  # Tylko adres IP
nslookup google.com  # Proste zapytanie DNS
host google.com  # Najprostsze zapytanie
getent hosts google.com  # Rozwiązanie przez libc (NSS)

Format (man resolv.conf):

Plik /etc/resolv.conf określa serwery DNS i domeny przeszukiwania.

Działanie "search": jeśli wpiszesz ping server1, system najpierw spróbuje server1.example.com, potem server1.local.

System rozwiązywania nazw DNS w systemie Linux opiera się na bibliotece glibc, która odczytuje plik /etc/resolv.conf w celu określenia serwerów DNS i domen przeszukiwania. W nowoczesnych dystrybucjach ten prosty schemat został rozbudowany o systemd-resolved, który pełni rolę lokalnego resolwera pośredniczącego między aplikacjami a właściwymi serwerami DNS. Plik resolv.conf może zawierać maksymalnie trzy linie nameserver, a kolejność ma znaczenie – system próbuje pierwszego serwera, a w przypadku braku odpowiedzi przechodzi do następnego.

Dyrektywa search automatycznie uzupełnia nie w pełni kwalifikowane nazwy domen. Na przykład wpisanie ping server1 spowoduje kolejne próby rozwiązań: server1.example.com, server1.local i wreszcie samo server1. W środowiskach korporacyjnych często konfiguruje się domeny przeszukiwania odpowiadające domenom wewnętrznym firmy, co znacznie ułatwia pracę administratorom. Do testowania DNS warto używać narzędzia dig, które dostarcza szczegółowych informacji o zapytaniu, czasie odpowiedzi i flagach protokołu, podczas gdy nslookup jest prostszy, ale mniej precyzyjny.

10/28 Pliki /etc/hosts i /etc/hostname
cat /etc/hostname
# serwer1

# Zmiana nazwy hosta (tymczasowo):
hostnamectl set-hostname serwer1
# lub: echo "serwer1" > /etc/hostname
# /etc/hosts
127.0.0.1  localhost
127.0.1.1  serwer1
192.168.1.100  serwer1.example.com serwer1
10.0.0.5  db.internal db
grep hosts /etc/nsswitch.conf
# hosts: files dns  ← najpierw /etc/hosts, potem DNS
Zastosowanie: /etc/hosts umożliwia lokalne nadpisanie DNS (blokowanie reklam, aliasy dla serwerów, testowanie przed zmianą DNS).

/etc/hostname – nazwa hosta (komputera):

/etc/hosts – lokalna tablica mapowania nazw na adresy IP.

Rozwiązywanie przez NSS (Name Service Switch) najpierw sprawdza ten plik, potem DNS.

Kolejność rozwiązywania nazw (/etc/nsswitch.conf):

Plik /etc/hosts jest jednym z najstarszych mechanizmów rozwiązywania nazw w systemach uniksowych i pozostaje niezwykle użyteczny w nowoczesnych środowiskach. Działa na poziomie biblioteki glibc, czyli jeszcze przed zapytaniem do DNS, co czyni go idealnym narzędziem do lokalnego nadpisywania domen – na przykład w celach testowych przed zmianą wpisów DNS w produkcji. Wpisanie 127.0.0.1 facebook.com skutecznie zablokuje dostęp do tej strony na danym komputerze, ponieważ system nigdy nie zapyta serwera DNS o ten adres.

Nazwa hosta komputera przechowywana w /etc/hostname jest używana między innymi do identyfikacji maszyny w sieci oraz w promptach powłoki. Polecenie hostnamectl z pakietu systemd umożliwia trwałą zmianę nazwy i automatycznie aktualizuje /etc/hostname oraz wysyła odpowiedni sygnał do jądra. Kolejność rozwiązywania nazw określona w pliku /etc/nsswitch.conf ma kluczowe znaczenie – standardowe ustawienie hosts: files dns oznacza, że najpierw sprawdzany jest /etc/hosts, a dopiero potem wykonywane jest zapytanie DNS, co daje administratorowi pełną kontrolę nad lokalnym rozwiązywaniem nazw.

11/28 Trwała konfiguracja – /etc/network/interfaces (Debian/Ubuntu)

Konfiguracja statyczna:

# /etc/network/interfaces – statyczny adres IP
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static
  address 192.168.1.100/24
  gateway 192.168.1.1
  dns-nameservers 8.8.8.8 1.1.1.1
  dns-search example.com

Konfiguracja DHCP:

auto enp0s3
iface enp0s3 inet dhcp

Po edycji – restart sieci:

sudo systemctl restart networking
# lub: sudo /etc/init.d/networking restart

W Debianie i Ubuntu (do 17.04) trwała konfiguracja sieci znajduje się w /etc/network/interfaces.

Sprawdzenie konfiguracji: ip addr show enp0s3

Plik /etc/network/interfaces to tradycyjny system konfiguracji sieci w dystrybucjach Debiana, który mimo pojawienia się nowszych rozwiązań wciąż jest powszechnie używany, szczególnie w starszych instalacjach i środowiskach embedded. Dyrektywa auto informuje system, aby automatycznie podnosił interfejs podczas uruchamiania systemu, natomiast dyrektywa iface definiuje metodę konfiguracji – static dla adresów statycznych, dhcp dla automatycznego pobierania konfiguracji oraz loopback dla interfejsu pętli zwrotnej. Wcięcia w parametrach interfejsu nie są opcjonalne – system ifupdown wymaga spójnego wcięcia dla poprawności składni.

Parametr dns-nameservers w pliku interfaces wymaga zainstalowanego pakietu resolvconf, który pośredniczy w aktualizacji /etc/resolv.conf. Bez tego pakietu wpisy DNS w interfaces są ignorowane i administrator musi ręcznie skonfigurować DNS w /etc/resolv.conf lub skorzystać z alternatywnego systemu konfiguracji. W Debianie 12 Bookworm plik /etc/network/interfaces pozostaje domyślnym mechanizmem konfiguracji sieci w instalacjach serwerowych (pakiet ifupdown); w instalacjach desktopowych domyślnie stosowany jest NetworkManager, a netplan jest domyślny wyłącznie w obrazach dla chmury. Mimo to znajomość tego formatu jest ważna ze względu na ogromną liczbę starszych systemów w produkcji.

12/28 Netplan – konfiguracja YAML (Ubuntu 18.04+)

Konfiguracja statyczna (netplan):

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd  # lub: NetworkManager
  ethernets:
    enp0s3:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
        search: [example.com]

Konfiguracja DHCP (netplan):

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true

Zastosowanie zmian:

sudo netplan apply
# lub: sudo netplan try  (test + zatwierdź / wycofaj)

Netplan to system konfiguracji sieci w Ubuntu od 18.04.

Pliki YAML w /etc/netplan/ (np. 01-netcfg.yaml).

Netplan stanowi warstwę abstrakcji, która upraszcza konfigurację sieci poprzez stosowanie czytelnych plików YAML zamiast bezpośredniej edycji plików konfiguracyjnych systemd-networkd lub NetworkManager. Największą zaletą netplan jest możliwość przetestowania konfiguracji przed jej zatwierdzeniem – polecenie netplan try stosuje zmiany na 120 sekund i automatycznie przywraca poprzednią konfigurację, jeśli administrator nie zatwierdzi jej poleceniem netplan apply. Ta funkcja jest nieoceniona przy zdalnej konfiguracji serwerów przez SSH, ponieważ zapobiega utracie dostępu.

W Ubuntu 22.04 i nowszych parametr gateway4 został uznany za przestarzały i zaleca się stosowanie jawnej definicji tras: routes: - to: default via: 192.168.1.1. Renderer określa, który backend będzie używany – networkd (systemd-networkd) dla serwerów i kontenerów lub NetworkManager dla stacji roboczych z interfejsem graficznym. Pliki YAML w katalogu /etc/netplan/ są przetwarzane w kolejności alfabetycznej, a przy konfliktach wygrywa ostatni plik, co należy uwzględnić przy definiowaniu wielu plików konfiguracyjnych w złożonych środowiskach.

13/28 NetworkManager – nmcli (RHEL/Fedora/Ubuntu)

Podstawowe polecenia:

nmcli device status
# DEVICE  TYPE  STATE  CONNECTION
# enp0s3  ethernet  connected  enp0s3
# lo  loopback  unmanaged  --

nmcli connection show
# NAME  UUID  TYPE  DEVICE
# enp0s3  ...  ethernet  enp0s3

Konfiguracja statyczna przez nmcli:

nmcli connection modify enp0s3 \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 1.1.1.1" \
  ipv4.method manual

Aktywacja i restart:

nmcli connection up enp0s3
nmcli connection reload

nmcli – narzędzie CLI do zarządzania NetworkManager.

Dostępne w RHEL, Fedora, Ubuntu (z nm-applet).

DHCP: nmcli connection modify enp0s3 ipv4.method auto

NetworkManager jest domyślnym menedżerem sieci w dystrybucjach rodziny RHEL oraz w Ubuntu Desktop, oferując zarówno interfejs graficzny, jak i potężne narzędzie wiersza poleceń nmcli. Jego główną zaletą jest automatyzacja przełączania między sieciami – w laptopie NetworkManager płynnie przełącza się między Ethernetem a Wi-Fi w zależności od dostępności sieci. W serwerach NetworkManager jest często wyłączany na rzecz lżejszego systemd-networkd, ale w środowiskach korporacyjnych z zaawansowanymi wymaganiami (VPN, PPPoE, bonding) pozostaje preferowanym wyborem.

Polecenie nmcli pozwala na kompleksową konfigurację bez znajomości lokalizacji plików konfiguracyjnych, które w RHEL 9+ znajdują się w /etc/NetworkManager/system-connections/*.nmconnection w formacie INI. Ważną cechą NetworkManager jest zarządzanie stanem połączeń: connected (aktywne), disconnected (nieaktywne) oraz unmanaged (wyłączone spod zarządzania NM). Interfejsy skonfigurowane przez netplan z renderer: networkd są domyślnie niezarządzane przez NetworkManager, co może powodować konflikty przy równoczesnym stosowaniu obu systemów.

14/28 Pliki ifcfg-* (RHEL/CentOS 7/8)

Konfiguracja statyczna (ifcfg):

# /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=1.1.1.1
DOMAIN=example.com
ONBOOT=yes

Konfiguracja DHCP (ifcfg):

TYPE=Ethernet
BOOTPROTO=dhcp
ONBOOT=yes

Restart sieci:

sudo systemctl restart network
# lub: sudo nmcli connection reload && sudo nmcli connection up enp0s3

W RHEL/CentOS 7/8 konfiguracja sieci znajduje się w /etc/sysconfig/network-scripts/ifcfg-*.

Pliki ifcfg-* przez wiele lat były standardem konfiguracji sieci w dystrybucjach Red Hata i wciąż można je spotkać w setkach tysięcy serwerów produkcyjnych na całym świecie. Każdy plik ifcfg reprezentuje jedno połączenie sieciowe, a jego nazwa składa się z prefiksu ifcfg oraz nazwy interfejsu, na przykład ifcfg-enp0s3. Kluczowe zmienne w pliku to BOOTPROTO określający metodę konfiguracji (static, dhcp, none), ONBOOT decydujący o automatycznym uruchamianiu interfejsu przy starcie systemu oraz IPADDR z adresem IP serwera.

W RHEL 9 i nowszych wersjach pliki ifcfg-* zostały uznane za przestarzałe i zastąpione formatem .nmconnection w katalogu /etc/NetworkManager/system-connections/. Nowy format wykorzystuje składnię INI z sekcjami [connection], [ipv4] i [ipv6], co jest bardziej czytelne i spójne. Mimo to narzędzie nmcli w dalszym ciągu obsługuje starszy format, a przy modyfikacji połączenia automatycznie zapisuje konfigurację w nowym formacie. Jeśli więc pracujesz z systemem RHEL 8, edycja ręczna ifcfg jest dopuszczalna, ale w RHEL 9+ zaleca się używanie nmcli.

15/28 systemd-networkd – konfiguracja .network

Konfiguracja statyczna (.network):

# /etc/systemd/network/20-enp0s3.network
[Match]
Name=enp0s3

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=1.1.1.1
Domains=example.com

[DHCPv4]
UseDNS=false  # nie nadpisuj DNS z DHCP

Konfiguracja DHCP:

[Match]
Name=enp0s3
[Network]
DHCP=yes

Aktywacja:

sudo systemctl enable --now systemd-networkd
sudo networkctl reload
sudo networkctl status enp0s3

Pliki w /etc/systemd/network/.

systemd-networkd to menedżer sieci wbudowany w systemd.

systemd-networkd to lekki i wydajny menedżer sieci zintegrowany z systemd, idealny dla serwerów, kontenerów i systemów embedded. W przeciwieństwie do NetworkManager nie wymaga D-Bus ani innych zewnętrznych zależności, co czyni go szczególnie atrakcyjnym w minimalnych instalacjach Linux. Pliki konfiguracyjne .network mają czytelną strukturę INI i są dopasowywane do interfejsów za pomocą sekcji [Match], która może zawierać wzorce nazw, adresy MAC lub inne właściwości sprzętowe.

Narzędzie networkctl służy do monitorowania stanu sieci – networkctl list wyświetla wszystkie interfejsy, networkctl status enp0s3 pokazuje szczegółowe informacje o konfiguracji, a networkctl lldp pozwala na wykrywanie sąsiadów w sieci za pomocą protokołu LLDP. systemd-networkd jest używany m.in. w Ubuntu Server (jako backend netplan) oraz w wielu obrazach kontenerów; w Arch Linux jest częstym wyborem, choć dystrybucja ta nie narzuca domyślnego menedżera sieci. Netplan z rendererem networkd generuje pliki .network automatycznie, ale można je również tworzyć ręcznie, co daje pełną kontrolę nad konfiguracją bez pośrednich warstw abstrakcji.

16/28 DHCP – klient i odświeżanie adresu

Wymuszenie odświeżenia adresu DHCP:

sudo dhclient -v enp0s3
# -v = verbose, pokazuje negocjację DHCP:
# DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK

# Zwolnienie adresu DHCP:
sudo dhclient -r enp0s3

W systemd-networkd:

sudo networkctl renew enp0s3

Plik dzierżawy DHCP:

cat /var/lib/dhcp/dhclient.leases
# Zawiera: adres IP, maskę, czas dzierżawy, serwer DHCP
networkctl status enp0s3
# pokazuje adres IP, bramę, DNS, czas dzierżawy

Informacje o dzierżawie (systemd-networkd):

Klient (dhclient lub systemd-networkd) pobiera adres IP, maskę, bramę, DNS z serwera DHCP.

Protokół DHCP (Dynamic Host Configuration Protocol) automatyzuje proces konfiguracji sieci, eliminując potrzebę ręcznego przypisywania adresów IP w środowiskach z wieloma hostami. Proces DORA (Discover, Offer, Request, Ack) składa się z czterech etapów: klient wysyła rozgłoszeniowe zapytanie DHCPDISCOVER, serwer odpowiada propozycją DHCPOFFER, klient akceptuje wysyłając DHCPREQUEST, a serwer potwierdza przydzielenie adresu komunikatem DHCPACK. W systemie Linux za obsługę DHCP odpowiada najczęściej dhclient (starszy) lub wbudowany klient systemd-networkd (nowszy).

Czas dzierżawy (lease time) określa, jak długo przydzielony adres IP jest ważny. Klient DHCP po upływie połowy tego czasu próbuje odnowić dzierżawę, wysyłając bezpośrednio DHCPREQUEST do serwera, który pierwotnie przydzielił adres. Jeśli serwer nie odpowiada, klient czeka do upływu 87,5% czasu dzierżawy, a następnie przechodzi do standardowego procesu DORA. Pliki dzierżawy DHCP, przechowywane w /var/lib/dhcp/dhclient.leases, zawierają historię przydzielonych adresów i są przydatne przy diagnostyce problemów z konfiguracją sieci.

17/28 systemd-resolved – nowoczesny resolver DNS

Sprawdzenie statusu:

resolvectl status
# Global
#  Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no
# Link 2 (enp0s3)
#  Current Scopes: DNS
#  Protocols: +DefaultRoute
#  DNS Servers: 8.8.8.8 1.1.1.1
#  DNS Domain: example.com
sudo resolvectl dns enp0s3 8.8.8.8 1.1.1.1
sudo resolvectl domain enp0s3 example.com

Test rozwiązywania nazw:

resolvectl query google.com
# google.com: 142.250.203.142 -- link: enp0s3
[Resolve]
DNS=8.8.8.8 1.1.1.1
Domains=example.com
DNSSEC=allow-downgrade

Przechwytuje zapytania DNS na 127.0.0.53.

Ustawienie DNS dla interfejsu (tymczasowo):

Trwała konfiguracja DNS z resolved: edytuj /etc/systemd/resolved.conf:

systemd-resolved to usługa systemd zarządzająca DNS.

W Ubuntu 18.04+ i Fedorze usługa jest domyślnie aktywna, a w Arch Linux bywa włączana ręcznie.

systemd-resolved to nowoczesna usługa systemd pełniąca rolę lokalnego resolwera DNS, która nasłuchuje na adresie 127.0.0.53 i pośredniczy między aplikacjami a rzeczywistymi serwerami DNS. Plik /etc/resolv.conf w systemach z systemd-resolved jest symlinkiem do /run/systemd/resolve/stub-resolv.conf i wskazuje właśnie na lokalny resolver. Dzięki temu aplikacje nie muszą znać rzeczywistych serwerów DNS – systemd-resolved zarządza konfiguracją dla każdego interfejsu osobno, co jest szczególnie przydatne w laptopach przełączających się między sieciami.

Usługa obsługuje zaawansowane funkcje, takie jak DNSOverTLS (DoT) szyfrujący zapytania DNS, DNSSEC weryfikujący autentyczność odpowiedzi, mDNS do rozwiązywania nazw w sieci lokalnej oraz LLMNR dla zgodności z Windows. Jeśli chcesz powrócić do tradycyjnego resolvera, musisz wyłączyć systemd-resolved (sudo systemctl disable --now systemd-resolved) i ręcznie skonfigurować /etc/resolv.conf. Należy jednak pamiętać, że w Ubuntu 22.04 i nowszych wyłączenie resolved może wpłynąć na działanie netplan, który domyślnie integruje się z tą usługą.

18/28 ethtool – odczyt parametrów interfejsu

Podstawowe informacje o interfejsie:

sudo ethtool enp0s3
# Settings for enp0s3:
#  Supported ports: [ TP ]
#  Supported link modes:  10baseT/Half 10baseT/Full
#  100baseT/Half 100baseT/Full
#  1000baseT/Full
#  Supported pause frame use: No
#  Supports auto-negotiation: Yes
#  Advertised link modes:  1000baseT/Full
#  Advertised pause frame use: No
#  Advertised auto-negotiation: Yes
#  Speed: 1000Mb/s
#  Duplex: Full
#  Auto-negotiation: on
#  Port: Twisted Pair
#  PHYAD: 0
#  Transceiver: internal
#  Link detected: yes
Najważniejsze informacje: Speed (aktualna prędkość), Duplex (Half/Full), Auto-negotiation (on/off), Link detected (kabel podłączony).

ethtool to narzędzie do odczytu i zmiany parametrów warstwy fizycznej i łącza danych: duplex, prędkość, autonegocjacja, statystyki błędów.

Narzędzie ethtool jest jednym z najważniejszych, choć często pomijanych, elementów zestawu diagnostycznego administratora Linux. Umożliwia odczyt parametrów warstwy fizycznej interfejsu sieciowego, takich jak aktualna prędkość (Speed), tryb dupleksu (Duplex) oraz status autonegocjacji. W środowiskach produkcyjnych ethtool jest pierwszym narzędziem używanym przy diagnozowaniu problemów z wydajnością sieci – na przykład gdy interfejs działa z prędkością 100 Mb/s zamiast oczekiwanych 1000 Mb/s.

Wynik polecenia ethtool dzieli się na dwie sekcje: możliwości sprzętowe karty (Supported) oraz aktualnie skonfigurowane parametry (Advertised). Różnica między tymi sekcjami może wskazywać na problem z autonegocjacją lub ograniczenia nałożone przez sterownik. Jeśli Link detected ma wartość no, oznacza to brak połączenia fizycznego – uszkodzony kabel, wyłączony port w przełączniku lub uszkodzoną kartę sieciową. Monitorowanie tych parametrów w czasie rzeczywistym za pomocą watch pozwala wychwycić niestabilne połączenia, które mogą powodować okresowe problemy z łącznością.

19/28 ethtool – statystyki i diagnostyka błędów

Statystyki interfejsu:

sudo ethtool -S enp0s3
# Nic statistics:
#  rx_packets: 1258347
#  tx_packets: 982341
#  rx_bytes: 1823456234
#  tx_bytes: 723456123
#  rx_errors: 0
#  tx_errors: 0
#  rx_dropped: 0
#  tx_dropped: 12
#  collisions: 0
#  rx_crc_errors: 0  ← błędy CRC = problem z medium
#  rx_frame_errors: 0
#  rx_fifo_errors: 0
#  tx_fifo_errors: 0

Kluczowe statystyki błędów:

BłądZnaczeniePrzyczyna
rx_crc_errorsNieprawidłowa suma kontrolna ramkiUszkodzony kabel, zakłócenia, niedopasowany duplex
collisionsKolizje (half-duplex)Zbyt wiele urządzeń w segmencie, uszkodzony kabel
rx_errors / tx_errorsOgólne błędy odbioru/nadawaniaProblem z kartą, sterownikiem, medium
rx_dropped / tx_droppedPakiety odrzucone (bufor pełny)Przeciążenie interfejsu, zbyt mały ring buffer
Diagnostyka: Jeśli rx_crc_errors rośnie, użyj watch -n 1 "sudo ethtool -S enp0s3 | grep crc" (cudzysłów jest konieczny, aby grep był uruchamiany przy każdej odświeżonej próbce) – obserwuj w czasie rzeczywistym.

Statystyki błędów warstwy fizycznej udostępniane przez ethtool -S są niezwykle cenne przy diagnozowaniu problemów z okablowaniem i sprzętem sieciowym. Błędy CRC (rx_crc_errors) wskazują na uszkodzone ramki Ethernet, co najczęściej jest spowodowane złą jakością kabla, zakłóceniami elektromagnetycznymi lub niedopasowaniem dupleksu między kartą a przełącznikiem. Wzrost liczby błędów CRC w czasie rzeczywistym, obserwowany za pomocą watch, pozwala szybko zlokalizować problematyczne łącze.

Błędy FIFO (rx_fifo_errors, tx_fifo_errors) świadczą o przepełnieniu buforów karty sieciowej, co może być spowodowane zbyt dużym obciążeniem interfejsu lub nieoptymalnymi ustawieniami jądra. Z kolei błędy ramkowania (rx_frame_errors) mogą wskazywać na problemy z synchronizacją na poziomie warstwy łącza danych. Warto pamiętać, że statystyki ethtool -S pochodzą bezpośrednio ze sterownika karty sieciowej i różnią się od statystyk jądra widocznych w ip -s link show – te pierwsze zawierają bardziej szczegółowe informacje sprzętowe, niedostępne w standardowych licznikach systemowych.

20/28 ethtool – zmiana duplex, prędkości i autonegocjacji
sudo ethtool -s enp0s3 speed 100 duplex full autoneg off
# -s = set, zmienia parametry interfejsu
# speed: 10, 100, 1000, 2500, 10000 (zależy od karty)
# duplex: half | full
# autoneg: on | off

Sprawdzenie po zmianie:

sudo ethtool enp0s3 | grep -E "Speed|Duplex|Auto"
# Speed: 100Mb/s
# Duplex: Full
# Auto-negotiation: off

Powrót do autonegocjacji:

sudo ethtool -s enp0s3 autoneg on
iface enp0s3 inet static
  address 192.168.1.100/24
  gateway 192.168.1.1
  up ethtool -s $IFACE speed 100 duplex full autoneg off
  down ethtool -s $IFACE autoneg on

Zmiana parametrów warstwy fizycznej – wymaga wyłączenia autonegocjacji (autoneg off):

Ustawienie prędkości 100 Mbps, Full Duplex, autoneg off:

Trwała konfiguracja – plik /etc/network/interfaces (Debian):

$IFACE to zmienna ifupdown oznaczająca bieżący interfejs.

Dyrektywa up wykonuje polecenie po podniesieniu interfejsu.

W netplan: ethtool nie jest bezpośrednio wspierany – użyj skryptu w /etc/networkd-dispatcher/ lub własnej jednostki systemd.

Ręczna zmiana parametrów warstwy fizycznej za pomocą ethtool -s jest czasami konieczna, gdy autonegocjacja nie działa poprawnie lub gdy chcemy wymusić określoną prędkość z powodu ograniczeń sprzętowych. Należy jednak pamiętać, że wyłączenie autonegocjacji bez ręcznego ustawienia tych samych parametrów po obu stronach łącza prowadzi do niedopasowania dupleksu (duplex mismatch) – jednego z najczęstszych problemów wydajnościowych w sieciach Ethernet. Gdy autonegocjacja jest wyłączona, standard IEEE 802.3 wymusza half-duplex, więc jeśli karta sieciowa ma autoneg off i wymuszony full duplex, przełącznik po drugiej stronie (z włączoną autonegocjacją) zinterpretuje to jako half-duplex.

Skutkiem niedopasowania dupleksu jest gwałtowny wzrost błędów CRC i kolizji, co drastycznie obniża przepustowość łącza. W praktyce najlepszym rozwiązaniem jest pozostawienie autonegocjacji włączonej po obu stronach – nowoczesne karty sieciowe i przełączniki bez problemu negocjują najwyższy wspólny standard. Jeśli jednak musisz wyłączyć autonegocjację, upewnij się, że parametry są identyczne na obu końcach łącza. Zmiany wprowadzone ethtool -s są tymczasowe i nie przetrwają restartu – aby były trwałe, należy dodać odpowiednie polecenia do skryptów startowych systemu.

21/28 Diagnostyka sieci – ping, ip, ss

ping – test łączności ICMP:

ping -c 4 192.168.1.1  # 4 pakiety, potem stop
ping -c 4 -I enp0s3 8.8.8.8  # ping przez konkretny interfejs
ping -c 4 -s 1472 192.168.1.1  # pakiet 1472B (MTU 1500 - 28)

ip – adresy MAC i routing:

ip addr show enp0s3  # adres IP, maska, stan
ip route show  # tablica routingu + brama
ip route get 8.8.8.8  # która trasa do 8.8.8.8
ip neigh show  # tablica ARP (sąsiedzi)

ss – socket statistics:

ss -tlnp  # nasłuchujące TCP (Listening)
ss -tunap  # wszystkie połączenia TCP/UDP
ss -tlnp | grep :22  # sprawdź czy SSH nasłuchuje

Sprawdzenie MTU na interfejsie:

ip link show enp0s3 | grep mtu
# Zmiana MTU: sudo ip link set enp0s3 mtu 9000 (jumbo frames)

Diagnostyka sieci w systemie Linux wymaga systematycznego podejścia i znajomości kilku kluczowych narzędzi, które razem pozwalają precyzyjnie zlokalizować źródło problemu. Ping jest podstawowym narzędziem do testowania łączności ICMP i powinien być używany w określonej kolejności: najpierw brama domyślna (test warstwy 2 i 3), potem publiczny adres IP (test routingu), a na końcu nazwa domenowa (test DNS). Opcja -I w ping pozwala wskazać konkretny interfejs źródłowy, co jest przydatne w systemach z wieloma kartami sieciowymi.

Narzędzie ip route get to potężne polecenie diagnostyczne, które pokazuje, którą trasą i przez który interfejs pójdzie pakiet do wskazanego adresu docelowego. Z kolei polecenie ss (socket statistics) zastąpiło przestarzały netstat i oferuje znacznie więcej możliwości – ss -tlnp to standard do sprawdzania usług nasłuchujących, a ss -i pokazuje szczegółowe informacje o parametrach TCP, takie jak rozmiar okna, MSS i skala okna. Zmiana MTU na 9000 bajtów (jumbo frames) może znacząco poprawić wydajność transferu dużych plików, ale wymaga obsługi przez wszystkie urządzenia na trasie.

22/28 Diagnostyka – traceroute, mtr, tcpdump

traceroute – śledzenie trasy pakietów:

traceroute -n google.com
# traceroute to 142.250.203.142, 30 hops max
#  1  192.168.1.1  1.234 ms  1.456 ms  1.567 ms
#  2  10.0.0.1  5.234 ms  5.456 ms  5.567 ms
#  3  83.10.20.1  12.345 ms  12.567 ms  12.678 ms
#  4  * * *  (brak odpowiedzi – firewall)
#  5  72.14.234.1  25.123 ms  25.345 ms  25.456 ms
mtr -n google.com
# Pokazuje: Host, Loss%, Snt, Last, Avg, Best, Wrst, StDev
# Łączy ping + traceroute – ciągła pętla, statystyki

tcpdump – analiza ruchu sieciowego:

sudo tcpdump -i enp0s3 -n icmp  # tylko ICMP
sudo tcpdump -i enp0s3 -n port 22  # tylko SSH
sudo tcpdump -i enp0s3 -n -c 100  # 100 pakietów, potem stop
sudo tcpdump -i enp0s3 -w dump.pcap # zapis do pliku (Wireshark)

mtr – ciągły traceroute ze statystykami:

Narzędzia do śledzenia trasy pakietów są niezbędne w diagnostyce problemów z routingiem sieciowym. Traceroute wysyła pakiety z rosnącym polem TTL (Time To Live), zaczynając od wartości 1 – pierwszy router na trasie odpowiada komunikatem ICMP Time Exceeded, co pozwala zidentyfikować każdy kolejny przeskok. Opcja -n wyłącza odwrotne wyszukiwanie DNS, co znacznie przyspiesza działanie i jest zalecane w diagnostyce. Gwiazdki w wynikach oznaczają brak odpowiedzi, co może wskazywać na blokadę ICMP przez firewall lub problem na danym hopie.

Narzędzie mtr łączy funkcjonalność ping i traceroute, wykonując ciągłe pomiary dla każdego hopa i wyświetlając statystyki strat pakietów (Loss%) oraz opóźnień (Avg, Best, Wrst). Jest to szczególnie przydatne przy diagnozowaniu problemów przerywanych, gdzie pojedyncze traceroute nie wychwytuje niestabilności. Z kolei tcpdump to standardowy sniffer pakietów w systemie Linux, umożliwiający przechwytywanie i analizę ruchu sieciowego w czasie rzeczywistym. Przechwycone pakiety można zapisać do pliku pcap i otworzyć w Wireshark do szczegółowej analizy protokołów, co jest standardową praktyką w zaawansowanej diagnostyce sieciowej.

23/28 netstat – statystyki sieciowe

Przykłady:

netstat -tlnp  # nasłuchujące TCP z PID
netstat -uanp  # wszystkie połączenia UDP
netstat -i  # statystyki interfejsów
netstat -r  # tablica routingu
netstat -s  # szczegółowe statystyki protokołów
netstat -tnpa | grep :80  # kto jest podłączony na porcie 80
Uwaga: netstat jest przestarzały – od lat zastępowany przez ss (z iproute2).

netstat (network statistics) – klasyczne narzędzie do wyświetlania połączeń sieciowych, tablic routingu, interfejsów i statystyk protokołów.

Jak działa: netstat odczytuje dane z /proc/net/ – jądro Linux udostępnia wirtualne systemy plików z bieżącym stanem gniazd, tras i interfejsów.

Po co: diagnostyka – sprawdzenie czy usługa nasłuchuje, wykrycie nieautoryzowanych połączeń, monitorowanie obciążenia.

W wielu nowych dystrybucjach (Debian 10+, Ubuntu 20.04+) netstat nie jest domyślnie zainstalowany – należy doinstalować pakiet net-tools.

Netstat jest jednym z najbardziej rozpoznawalnych narzędzi sieciowych w systemach Unix i Linux, używanym od dziesięcioleci przez administratorów na całym świecie. Jego działanie opiera się na odczycie wirtualnych systemów plików w /proc/net/, gdzie jądro Linux udostępnia bieżący stan gniazd sieciowych, tras i interfejsów w postaci zwykłych plików tekstowych. Mimo że netstat jest oficjalnie przestarzały na rzecz ss z pakietu iproute2, wciąż jest powszechnie używany ze względu na znajomą składnię i ogromną ilość istniejących skryptów i dokumentacji.

Opcja -s w netstat wyświetla szczegółowe statystyki protokołów, takie jak liczba wysłanych i odebranych segmentów TCP, retransmisje, błędy i resetowanie połączeń. Wysoka liczba retransmitowanych segmentów TCP może wskazywać na przeciążenie sieci, problemy z przepustowością lub uszkodzone łącze. Z kolei netstat -i pokazuje błędy odbioru i nadawania dla każdego interfejsu, co jest przydatne przy szybkiej ocenie stanu warstwy fizycznej. W nowych dystrybucjach netstat wymaga instalacji pakietu net-tools, który nie jest domyślnie dołączany do minimalnych instalacji serwerowych.

24/28 nmap – skanowanie portów i sieci

Przykłady:

nmap -sn 192.168.1.0/24  # ping sweep – które hosty żyją
nmap -sS 192.168.1.1  # SYN scan (szybki, wymaga sudo)
nmap -sT 192.168.1.1  # TCP connect scan (bez sudo)
nmap -sU 192.168.1.1  # skanowanie UDP (wolne)
nmap -p 22,80,443 192.168.1.1  # konkretne porty
nmap -p- 192.168.1.1  # wszystkie 65535 portów
nmap -O 192.168.1.1  # wykrywanie OS
nmap -sV 192.168.1.1  # wykrywanie wersji usług
nmap -A 192.168.1.1  # wszystko: OS + wersje + skrypty

nmap (Network Mapper) – zaawansowane narzędzie do skanowania portów, wykrywania usług, systemów operacyjnych i podatności.

Jak działa: nmap wysyła pakiety TCP, UDP lub ICMP do docelowego hosta i analizuje odpowiedzi.

W zależności od odpowiedzi (SYN/ACK, RST, brak) określa stan portu (open, closed, filtered).

Po co: audyt bezpieczeństwa, sprawdzenie jakie usługi są dostępne w sieci, wykrycie nieautoryzowanych serwerów, inwentaryzacja sieci.

Nmap jest standardowym narzędziem w dziedzinie bezpieczeństwa sieciowego i audytu, używanym zarówno przez administratorów do inwentaryzacji sieci, jak i przez specjalistów ds. bezpieczeństwa do wykrywania podatności. Działanie nmap opiera się na wysyłaniu specjalnie skonstruowanych pakietów TCP, UDP lub ICMP do docelowego hosta i analizie odpowiedzi – na podstawie typu odpowiedzi (SYN/ACK, RST lub brak) narzędzie określa stan portu jako otwarty, zamknięty lub filtrowany. Skan SYN (-sS) jest najszybszy i najmniej inwazyjny, ponieważ nie nawiązuje pełnego połączenia TCP.

Skanowanie UDP (-sU) jest znacznie wolniejsze, ponieważ protokół UDP nie wymaga potwierdzenia połączenia i często bywa blokowane przez firewalle. Nmap oferuje również zaawansowane funkcje wykrywania systemu operacyjnego (-O) na podstawie charakterystycznych wzorców w odpowiedziach pakietów TCP/IP (fingerprinting) oraz wykrywania wersji usług (-sV) poprzez analizę banerów i sekwencji zapytań. Należy pamiętać, że skanowanie sieci bez zgody właściciela może być nielegalne i naruszać przepisy o cyberbezpieczeństwie – nmap należy używać wyłącznie na własnych urządzeniach lub za wyraźną pisemną zgodą.

25/28 dig i nslookup – diagnostyka DNS

Przykłady dig:

dig google.com  # rekord A (domyślnie)
dig google.com AAAA  # rekord IPv6
dig google.com MX  # serwery poczty
dig google.com NS  # serwery nazw
dig google.com TXT  # rekordy tekstowe (SPF, DKIM)
dig -x 8.8.8.8  # reverse DNS (PTR)
dig @8.8.8.8 google.com  # zapytanie do konkretnego DNS
dig +short google.com  # tylko adres IP

Przykłady nslookup:

nslookup google.com
nslookup -type=MX google.com
nslookup 8.8.8.8  # reverse DNS

dig (Domain Information Groper) – zaawansowane narzędzie do zapytań DNS. nslookup – prostsze, starsze narzędzie DNS.

Jak działa: dig wysyła zapytanie DNS do wskazanego serwera (lub domyślnego z /etc/resolv.conf) i wyświetla szczegółową odpowiedź – nagłówki, sekcje pytania/odpowiedzi, statystyki zapytania.

Po co: sprawdzenie czy DNS działa poprawnie, weryfikacja rekordów A/AAAA/MX/NS/TXT, rozwiązywanie problemów z nazwami domen.

Narzędzie dig jest podstawowym instrumentem diagnostycznym DNS, dostarczającym znacznie więcej informacji niż prostsze nslookup. Wyświetla między innymi czas odpowiedzi (Query time), adres serwera który odpowiedział (SERVER) oraz flagi protokołu (qr - query, rd - recursion desired, ra - recursion available). Funkcja dig +trace google.com umożliwia śledzenie całej ścieżki zapytania DNS od serwerów głównych (root servers) aż do autorytatywnego serwera dla danej domeny, co jest nieocenione przy diagnozowaniu problemów z propagacją DNS.

Rekordy DNS mają różne przeznaczenie: A mapuje nazwę na adres IPv4, AAAA na adres IPv6, MX wskazuje serwery poczty elektronicznej z priorytetami, NS definiuje autorytatywne serwery nazw dla domeny, CNAME tworzy aliasy, a TXT przechowuje dowolne dane tekstowe, często używane do SPF, DKIM i DMARC w zabezpieczeniach poczty. Diagnostyka DNS powinna przebiegać według ustalonego schematu: najpierw dig google.com (test serwera DNS), potem ping google.com (test łączności), a na końcu curl google.com (test warstwy aplikacji). Narzędzie host jest najprostszą alternatywą, zwracającą jedynie podstawowe informacje.

26/28 Rozwiązywanie problemów – praktyczne scenariusze

Scenariusz 1: Brak łączności z siecią

ip addr show enp0s3  # czy interfejs ma adres IP?
ip link show enp0s3  # czy stan UP?
sudo ethtool enp0s3  # czy Link detected: yes?

Jeśli brak adresu IP: sudo dhclient -v enp0s3 (DHCP) lub ip addr add ... (statyczny).

Scenariusz 2: Interfejs jest UP, ale ping do bramy nie działa

ip route show  # czy jest brama domyślna?
ip neigh show  # czy brama jest w ARP?
ping -c 3 192.168.1.1  # test ICMP do bramy
ip route get 192.168.1.1  # którą trasą pójdzie pakiet

Sprawdź kabel, port na przełączniku i firewall.

Scenariusz 3: Niska wydajność sieci / wolny transfer

sudo ethtool enp0s3  # Sprawdź duplex (musi być Full!)
sudo ethtool -S enp0s3 | grep -i error  # Błędy CRC?
ip -s link show enp0s3  # Rx/Tx dropped?

Jeśli duplex = Half → sudo ethtool -s enp0s3 autoneg on lub wymuś Full Duplex po obu stronach.

Scenariusz 4: DNS nie działa

cat /etc/resolv.conf  # czy są serwery DNS?
resolvectl status  # systemd-resolved?
dig google.com  # test DNS

Skuteczne rozwiązywanie problemów sieciowych wymaga systematycznego podejścia i znajomości typowych scenariuszy awaryjnych. Pierwszym krokiem w każdym przypadku powinno być sprawdzenie adresacji i stanu interfejsu za pomocą ip addr show oraz ip link show – to pozwala szybko wykluczyć najbardziej oczywiste problemy. Jeśli interfejs ma adres IP i jest w stanie UP, ale ping do bramy nie działa, kolejnym krokiem jest sprawdzenie tablicy ARP poleceniem ip neigh show oraz test ICMP z różnymi rozmiarami pakietów. Częstym błędem początkujących jest zapomnienie o ustawieniu ONBOOT=yes w plikach ifcfg lub auto w interfaces, co powoduje, że interfejs nie uruchamia się po restarcie.

W przypadku niskiej wydajności sieci pierwszym podejrzeniem powinno być niedopasowanie dupleksu – karta w trybie Full Duplex, a przełącznik w Half Duplex lub odwrotnie. Kolejną częstą przyczyną jest zbyt małe MTU, powodujące fragmentację pakietów i wzrost opóźnień. Przy problemach z DNS należy sprawdzić, czy system nie używa systemd-resolved, który nadpisuje ręczne wpisy w /etc/resolv.conf. W środowiskach produkcyjnych kluczowe znaczenie ma testowanie zmian przed ich zatwierdzeniem – w netplan służy do tego polecenie netplan try, a przy konfiguracji przez SSH warto używać tmux lub screen, aby móc przywrócić połączenie w przypadku błędu.

27/28 Podsumowanie – tabela wszystkich poleceń
KategoriaPolecenieOpis
Interfejsyip link showLista interfejsów i stan
Interfejsyip link set eth0 up/downWłącz/wyłącz interfejs
Adres IPip addr showWyświetl adresy MAC i IP
Adres IPip addr add 10.0.0.1/24 dev eth0Dodaj adres IP
Adres IPip addr del 10.0.0.1/24 dev eth0Usuń adres IP
Routingip route showTablica routingu
Routingip route add default via 10.0.0.1Brama domyślna
Routingip route del defaultUsuń bramę domyślną
ARPip neigh showTablica sąsiadów ARP
DNSdig google.comZapytanie DNS
DNSresolvectl statusStatus systemd-resolved
Fizyczneethtool eth0Parametry warstwy fizycznej
Fizyczneethtool -s eth0 speed 100 duplex full autoneg offZmień duplex/speed
Fizyczneethtool -S eth0Statystyki błędów
Diagnostykaping -c 4 8.8.8.8Test ICMP
Diagnostykatraceroute -n 8.8.8.8Śledzenie trasy
Diagnostykamtr -n 8.8.8.8Ciągły traceroute
Diagnostykass -tlnpNasłuchujące porty TCP
Diagnostykatcpdump -i eth0 -n port 80Sniffing pakietów
DHCPdhclient -v eth0Wymuś DHCP

Tabela podsumowująca zawiera wszystkie kluczowe polecenia omówione w prezentacji i stanowi praktyczną ściągawkę dla administratora systemów Linux. W codziennej pracy administrator najczęściej używa zaledwie kilku z nich: ip addr show do sprawdzenia adresacji, ip route show do weryfikacji routingu, ethtool do diagnostyki warstwy fizycznej oraz ss -tlnp do monitorowania usług nasłuchujących. Pozostałe narzędzia, takie jak traceroute, mtr, tcpdump czy nmap, są używane w bardziej specyficznych scenariuszach diagnostycznych i audytowych.

Wybór odpowiedniego systemu konfiguracji trwałej zależy od dystrybucji i środowiska – w nowych systemach Ubuntu zaleca się netplan, w Debianie wciąż popularne są /etc/network/interfaces, w RHEL i Fedorze standardem jest nmcli, a w kontenerach i systemach embedded najlepiej sprawdza się systemd-networkd. W środowiskach kontenerowych (Docker, LXC) często brakuje ethtool i tradycyjnych narzędzi, ale ip z iproute2 jest zawsze dostępny. Zapamiętanie trzech kluczowych poleceń: ip addr add (adres), ip route add default (brama) i ustawienie DNS daje minimalną konfigurację IP działającą w każdej sytuacji awaryjnej.

28/28 Najważniejsze wnioski
  1. iproute2 (polecenie ip) jest standardem – zastępuje przestarzałe ifconfig i route.
  2. Konfiguracja tymczasowa: ip addr add + ip route add default + /etc/resolv.conf.
  3. Konfiguracja trwała zależy od dystrybucji: netplan (Ubuntu), /etc/network/interfaces (Debian), nmcli (RHEL/Fedora), systemd-networkd (uniwersalny).
  4. ethtool – narzędzie do diagnostyki i konfiguracji warstwy fizycznej: duplex, prędkość, autonegocjacja, statystyki błędów.
  5. Niedopasowanie duplex (duplex mismatch) to jedna z najczęstszych przyczyn problemów wydajnościowych – zawsze sprawdzaj ethtool.
  6. Diagnostyka krok po kroku: ip addrping bramaping 8.8.8.8ping google.com.
  7. Przy zmianie konfiguracji sieci przez SSH zawsze testuj lokalnie przed rozłączeniem. Użyj netplan try lub tmux/screen.
  8. DNS: systemd-resolved zarządza /etc/resolv.conf – używaj resolvectl zamiast ręcznej edycji.

Osiem przedstawionych wniosków stanowi kwintesencję wiedzy niezbędnej każdemu administratorowi systemów Linux do skutecznej konfiguracji i diagnostyki sieci. Fundamentem jest przejście z przestarzałych narzędzi net-tools (ifconfig, route, netstat) na nowoczesny pakiet iproute2, który oferuje nie tylko bogatsze możliwości, ale też spójną składnię i lepsze wsparcie dla IPv6. Konfiguracja tymczasowa sprowadza się do trzech prostych kroków: przypisania adresu IP, ustawienia bramy domyślnej i konfiguracji DNS, co pozwala błyskawicznie przywrócić łączność w sytuacji awaryjnej.

Diagnostyka sieci powinna zawsze przebiegać według ustalonej sekwencji, zaczynając od sprawdzenia adresacji interfejsu, przez test łączności z bramą, aż po weryfikację routingu i DNS. Narzędzie ethtool jest często pomijane przez początkujących administratorów, a jest kluczowe przy diagnozowaniu problemów warstwy fizycznej – niedopasowanie dupleksu pozostaje jedną z głównych przyczyn niskiej wydajności sieci. Przy zdalnej konfiguracji serwerów przez SSH należy zawsze stosować mechanizmy zabezpieczające przed utratą dostępu: netplan try z automatycznym wycofaniem zmian lub tmux utrzymujący sesję po rozłączeniu. Znajomość tych podstaw jest absolutnie niezbędna przed przejściem do zaawansowanych tematów, takich jak routing dynamiczny, VLAN-y, bonding czy automatyzacja konfiguracji sieci.