Podstawy sieci na Linuxie – kompletny przewodnik (historia, konfiguracja, przykłady)

Spis treści

01. Historia sieci w Linux
02. Modele OSI i TCP/IP
03. Interfejsy sieciowe
04. Adresacja IP i maski
05. Routing i bramy
06. DNS – resolucja nazw
07. Porty i gniazda
08. Firewall – iptables/nftables
09. Diagnostyka sieci
10. Kluczowe pliki konfiguracyjne
11. Nowoczesne narzędzia
12. Ściągawka komend

Zrozumienie działania sieci w systemie Linux jest kluczowe dla każdego, kto zajmuje się administracją, DevOpsem lub bezpieczeństwem IT. Choć wiele narzędzi upraszcza dziś konfigurację, pod powierzchnią nadal działa rozbudowany i bardzo elastyczny stos sieciowy, którego korzenie sięgają początków internetu. Artykuł przedstawia zarówno podstawy teoretyczne, jak i praktyczne aspekty pracy z siecią w Linuksie — od modeli komunikacji i adresacji IP, przez konfigurację interfejsów i routingu, aż po diagnostykę i nowoczesne mechanizmy filtrowania ruchu. Dzięki temu możliwe jest zrozumienie nie tylko tego, jak wykonać konkretne operacje, ale również dlaczego system działa w określony sposób.

Bezpłatne warsztaty: Kali Linux od podstaw - fundament pracy pentestera

Naucz się instalacji i konfiguracji Kali Linux, pracy w terminalu, zarządzania uprawnieniami, budowy własnego laboratorium pentestowego oraz korzystania z narzędzi używanych przez specjalistów cyberbezpieczeństwa.

Odbierz dostęp do 13 maja do 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

01. Historia sieci w systemach Linux

Aby zrozumieć, jak działa sieć w Linux, warto cofnąć się do początków — do czasów, gdy komputery były wielkości szaf i nikt nie marzył, że kiedyś będą rozmawiać ze sobą w czasie rzeczywistym.

1969

ARPANET — narodziny sieci

Departament Obrony USA finansuje sieć ARPANET łączącą cztery uniwersytety. Pierwsza wiadomość to „lo” — system zawieszał się po dwóch literach słowa „login”. Mimo to fundament nowoczesnego internetu był już gotowy.

1974

TCP/IP — Vint Cerf i Bob Kahn

Opublikowanie specyfikacji protokołu TCP przez Cerfa i Kahna. To przełomowy moment — protokół pozwala różnym sieciom komunikować się ze sobą, tworząc sieć sieci. Model ten do dziś jest fundamentem internetu.

1983

BSD Unix — pierwszy stos sieciowy

4.2BSD wprowadza implementację gniazd (sockets) i pełny stos TCP/IP dla systemów Unix. To właśnie ten kod stał się wzorcem dla wszystkich późniejszych implementacji, w tym dla Linuksa. Interfejs socket() z 1983 roku jest używany do dziś.

1991

Linux 0.01 — brak sieci

Linus Torvalds publikuje pierwszą wersję Linuksa. Nie posiada ona jeszcze obsługi sieci — to czysty jądro, które trzeba wszystkiego nauczyć od początku.

1993

Linux 0.99 — pierwsze gniazda

Jądro Linux otrzymuje implementację interfejsu gniazd BSD. Ross Biro, Fred van Kempen i Donald Becker tworzą pierwsze sterowniki sieciowe. Pojawiają się narzędzia ifconfig i route z pakietu net-tools.

1995–1999

Dojrzały stos sieciowy

Linux 2.0 i 2.2 przynoszą pełne wsparcie dla IPv4, pakiet iproute2 (narzędzie ip), obsługę mostów i aliasów interfejsów. Alexey Kuznetsov przepisuje znaczną część stosu sieciowego, wprowadzając zaawansowany routing (policy routing) nieobecny w żadnym komercyjnym systemie.

2001–2004

netfilter i iptables

Linux 2.4 wprowadza podsystem netfilter z narzędziem iptables, zastępując stary ipchains. To rewolucja w filtracji pakietów — Linux staje się pełnoprawnym, elastycznym firewallem klasy enterprise.

2008–2012

IPv6, namespaces, Open vSwitch

Pełna obsługa IPv6, przestrzenie nazw sieci (network namespaces) tworzące fundament konteneryzacji (Docker, LXC), VLAN, bonding. Linux staje się podstawą infrastruktury chmurowej.

2014–dziś

nftables, eBPF, WireGuard

Wprowadzenie nftables jako następcy iptables, programowalny stos sieciowy z eBPF umożliwiający filtrację pakietów z wydajnością zbliżoną do sprzętowej, integracja WireGuard bezpośrednio w jądrze (5.6+). Linux 6.x — najbardziej zaawansowany stos sieciowy open source na świecie.

Dlaczego warto znać historię?

Wiele komend i plików konfiguracyjnych w Linux to bezpośrednie dziedzictwo decyzji sprzed 30–40 lat. Wiedząc, skąd pochodzi ifconfig czy plik /etc/hosts, łatwiej zrozumieć dlaczego pewne rzeczy działają tak, a nie inaczej.

02. Modele OSI i TCP/IP

Komunikacja sieciowa jest zorganizowana warstwowo. Dwa najpopularniejsze modele to OSI (7 warstw, teoretyczny) i TCP/IP (4 warstwy, praktyczny). Linux implementuje model TCP/IP.

Model OSI — 7 warstw

7

Aplikacji

HTTP, FTP, SMTP, DNS, SSH

Interfejs między oprogramowaniem a siecią. Tu pracują aplikacje użytkownika.


6

Prezentacji

TLS/SSL, MIME, ASCII, JPEG

Szyfrowanie, kompresja i formatowanie danych.


5

Sesji

NetBIOS, RPC, PPTP

Zarządzanie sesjami i synchronizacja połączeń.


4

Transportu

TCP, UDP, SCTP

Niezawodna transmisja danych, kontrola przepływu, porty.


3

Sieci

IP, ICMP, OSPF, BGP

Adresowanie logiczne (IP), routing między sieciami.


2

Łącza danych

Ethernet, Wi-Fi (802.11), ARP

Ramki, adresy MAC, dostęp do medium transmisyjnego.


1

Fizyczna

Kable, światłowód, fale radiowe

Bity na medium transmisyjnym. Napięcia, częstotliwości, złącza.


Model TCP/IP — 4 warstwy (implementacja w Linux)

Aplikacji

HTTP · HTTPS · SSH · DNS · FTP · SMTP

Odpowiada warstwom 5–7 OSI. Aplikacje komunikują się przez gniazda (sockets). W Linux: /proc/net/, wywołania systemowe socket(), bind(), connect().


Transportu

TCP · UDP · SCTP · DCCP

Segmentacja danych, numery portów, kontrola błędów. TCP = niezawodność, UDP = szybkość. W jądrze: net/ipv4/tcp*.c, net/ipv4/udp.c.


Internetu

IPv4 · IPv6 · ICMP · ARP · OSPF

Adresowanie IP, routing pakietów między sieciami. Tablica routingu w jądrze, netfilter, obsługa przez ip route.


Dostępu do sieci

Ethernet · Wi-Fi · PPP · VLAN

Sterowniki kart sieciowych, ramki Ethernet, adresy MAC. W Linux: /sys/class/net/, sterowniki w drivers/net/.

Jak zapamiętać model OSI?

Od dołu do góry: „Przez Łącze Sieciową Trasę Szukam Paketów Aplikacji” (Fizyczna, Łącza, Sieciowa, Transportu, Sesji, Prezentacji, Aplikacji). W praktyce sieciowej Linux większość pracy odbywa się na warstwach 3 i 4.

03. Interfejsy sieciowe

Interfejs sieciowy to punkt wejścia-wyjścia dla danych sieciowych w systemie Linux. Może reprezentować fizyczną kartę sieciową lub być wirtualnym urządzeniem programowym.

eth0 / enp3s0

Ethernet

Fizyczna karta sieciowa. Nowe nazwy (enp3s0) to predictable network names — kodują numer szyny PCI, co zapobiega zmianie nazw po restarcie.


wlan0 / wlp2s0

Wi-Fi

Bezprzewodowa karta sieciowa. Obsługiwana przez podsystem cfg80211/mac80211 w jądrze.


lo

Loopback

Wirtualny interfejs zwrotny. Adres 127.0.0.1. Dane wysyłane na lo wracają do tego samego systemu — niezbędny dla aplikacji lokalnych.


docker0 / virbr0

Bridge / Wirtualny

Wirtualny most sieciowy tworzony przez Docker, libvirt i inne narzędzia wirtualizacji.


tun0 / tap0

Tunele VPN

Wirtualne interfejsy tunelowe. TUN = pakiety IP (warstawa 3), TAP = ramki Ethernet (warstwa 2). Używane przez OpenVPN, WireGuard.


bond0 / team0

Bonding / Teaming

Łączenie wielu kart fizycznych w jedno logiczne urządzenie. Zapewnia redundancję lub zwiększa przepustowość.

Wyświetlanie interfejsów — stare vs nowe narzędzia

Stare narzędzia (net-tools)

  • ifconfig — lista interfejsów
  • ifconfig eth0 — szczegóły
  • ifconfig eth0 up/down — włącz/wyłącz
  • ifconfig eth0 192.168.1.10 — ustaw IP
  • route -n — tablica routingu
  • netstat -i — statystyki interfejsów

Nowe narzędzia (iproute2)

  • ip link show — lista interfejsów
  • ip addr show eth0 — szczegóły
  • ip link set eth0 up/down — włącz/wyłącz
  • ip addr add 192.168.1.10/24 dev eth0
  • ip route show — tablica routingu
  • ip -s link show — statystyki

Podstawowe operacje na interfejsach

bash — zarządzanie interfejsami (iproute2)

# Wyświetl wszystkie interfejsy z adresami IP
ip addr show
1: lo: <LOOPBACK,UP> mtu 65536
    link/loopback 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0

# Wyświetl tylko interfejsy (bez adresów)
ip link show

# Włącz / wyłącz interfejs
sudo ip link set eth0 up
sudo ip link set eth0 down

# Dodaj adres IP do interfejsu
sudo ip addr add 192.168.1.50/24 dev eth0

# Usuń adres IP z interfejsu
sudo ip addr del 192.168.1.50/24 dev eth0

# Zmień MTU (Maximum Transmission Unit)
sudo ip link set eth0 mtu 9000

# Sprawdź statystyki pakietów interfejsu
ip -s link show eth0
    RX: bytes  packets  errors  dropped
        1234567  8901     0       0
    TX: bytes  packets  errors  dropped
        987654   5432     0       0

Zmiany tymczasowe vs. trwałe

Komendy ip addr add i ip link set wprowadzają tymczasowe zmiany — znikają po restarcie systemu. Aby utrwalić konfigurację, użyj NetworkManager (nmcli), systemd-networkd lub edytuj pliki w /etc/network/ (Debian) albo /etc/sysconfig/network-scripts/ (RHEL).

Pliki do modyfikacji:

04. Adresacja IP i maski podsieci

Adres IP jest fundamentem komunikacji sieciowej. W Linux pracujemy z IPv4 (32-bitowy) i IPv6 (128-bitowy). Znajomość adresacji jest konieczna przy konfiguracji sieci.

Klasy adresów prywatnych (RFC 1918)

ZakresMaska (CIDR)Liczba hostówTypowe zastosowanie
10.0.0.0 – 10.255.255.255/816 777 214Duże sieci korporacyjne, data center
172.16.0.0 – 172.31.255.255/121 048 574Sieci średniej wielkości
192.168.0.0 – 192.168.255.255/1665 534Sieci domowe, małe biura
127.0.0.0 – 127.255.255.255/8Loopback (lokalny)
169.254.0.0 – 169.254.255.255/1665 534Link-local (APIPA, brak DHCP)

Notacja CIDR — obliczenia podsieci

bash — analiza podsieci

# ipcalc — kalkulator podsieci (apt install ipcalc)
ipcalc 192.168.1.0/24
Address: 192.168.1.0 11000000.10101000.00000001. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Network: 192.168.1.0/24
Broadcast: 192.168.1.255
HostMin: 192.168.1.1
HostMax: 192.168.1.254
Hosts/Net: 254


# Sprawdź do jakiej podsieci należy dany adres
ipcalc 10.0.15.47/20
Network: 10.0.0.0/20
HostMin: 10.0.0.1
HostMax: 10.0.15.254
Hosts/Net: 4094

# python3 — szybkie obliczenia bez dodatkowych pakietów
python3 -c "import ipaddress; n=ipaddress.IPv4Network('192.168.10.0/26'); print(f'Hosts: {n.num_addresses-2}, Broadcast: {n.broadcast_address}')"
Hosts: 62, Broadcast: 192.168.10.63

IPv6 — podstawy

bash — IPv6

# Wyświetl adresy IPv6
ip -6 addr show

# Dodaj adres IPv6
sudo ip -6 addr add 2001:db8::1/64 dev eth0

# Ping IPv6 (ping6 lub ping z flagą -6)
ping -6 google.com
ping6 ::1   # loopback IPv6

# Typy adresów IPv6:
# ::1/128          — loopback (odpowiednik 127.0.0.1)
# fe80::/10        — link-local (automatycznie przypisywane)
# fc00::/7         — unique local (odpowiednik RFC1918)
# 2001:db8::/32    — dokumentacja/przykłady (nie routowalne)
# ::/0             — trasa domyślna (odpowiednik 0.0.0.0/0)

05. Routing i bramy domyślne

Routing to proces decydowania, którą drogą pakiet powinien trafić do celu. Linux posiada jeden z najbardziej zaawansowanych stosów routingowych wśród systemów operacyjnych.

Tablica routingu — odczyt i zarządzanie

bash — routing

# Wyświetl tablicę routingu (nowoczesna metoda)
ip route show
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
10.0.0.0/8 via 10.0.0.1 dev eth1

# Dodaj trasę do podsieci przez bramę
sudo ip route add 10.10.0.0/16 via 192.168.1.254

# Dodaj trasę przez konkretny interfejs
sudo ip route add 172.16.0.0/12 dev eth1

# Zmień / dodaj bramę domyślną
sudo ip route del default
sudo ip route add default via 192.168.1.1 dev eth0

# Usuń trasę
sudo ip route del 10.10.0.0/16

# Sprawdź którą trasą pójdzie pakiet do danego hosta
ip route get 8.8.8.8
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000

Włączanie przekazywania pakietów (IP forwarding)

bash — IP forwarding (router/NAT)

# Sprawdź aktualny stan (0=wyłączone, 1=włączone)
cat /proc/sys/net/ipv4/ip_forward
0

# Włącz tymczasowo (do restartu)
sudo sysctl -w net.ipv4.ip_forward=1

# Włącz trwale — dodaj do /etc/sysctl.conf lub /etc/sysctl.d/
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ip-forward.conf
sudo sysctl --system

# NAT (maskarada) — udostępnij internet dla sieci LAN
# eth0 = WAN (internet), eth1 = LAN (sieć lokalna)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

06. DNS — rozwiązywanie nazw domenowych

DNS (Domain Name System) przekłada nazwy domenowe (jak google.com) na adresy IP. W Linux resolucja nazw przebiega przez kilka warstw: cache lokalny → /etc/hosts → /etc/resolv.conf → serwer DNS.

Konfiguracja i diagnostyka DNS

bash — DNS

# Sprawdź aktualny plik resolv.conf (konfiguracja DNS)
cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.local

# Sprawdź kolejność resolucji (nsswitch.conf)
grep hosts /etc/nsswitch.conf
hosts:          files dns myhostname
# "files" = /etc/hosts, "dns" = serwer DNS, kolejność ma znaczenie!

# Proste zapytanie DNS — nslookup (stare)
nslookup google.com

# Zaawansowane zapytania — dig (zalecane)
dig google.com          # rekord A (IPv4)
dig google.com AAAA    # rekord AAAA (IPv6)
dig google.com MX      # rekordy poczty
dig google.com NS      # serwery nazw
dig @1.1.1.1 google.com # zapytaj konkretny serwer DNS
dig -x 8.8.8.8          # reverse DNS (PTR)
dig google.com +short  # tylko adres IP

# host — szybkie zapytanie
host google.com
google.com has address 142.250.185.78

# Pliki hosts — lokalne wpisy (priorytet przed DNS)
cat /etc/hosts
127.0.0.1   localhost
::1         localhost ip6-localhost
192.168.1.200   mojserwer.local mojserwer

systemd-resolved — nowoczesny resolver

bash — systemd-resolved

# Status i cache DNS (Ubuntu 18.04+, Fedora, Arch)
resolvectl status
resolvectl query google.com

# Wyczyść cache DNS
sudo resolvectl flush-caches

# Sprawdź statystyki cache
resolvectl statistics

07. Porty, gniazda i aktywne połączenia

Port to 16-bitowa liczba (0–65535) identyfikująca konkretną usługę na danym hoście. Razem z adresem IP i protokołem tworzy gniazdo (socket) — unikalny identyfikator połączenia.

Popularne porty:

22 – SSH – TCP

25 – SMTP – TCP

53- DNS – TCP/UDP

80 – HTTP – TCP

443 – HTTPS – TCP

3306 – MySQL – TCP

5432 – PostgreSQL – TCP

6379 – Redis – TCP


Sprawdzanie otwartych portów i połączeń

bash — ss i netstat

# ss — nowoczesny zamiennik netstat (zalecany)
ss -tuln        # nasłuchujące porty TCP+UDP (numerycznie)
ss -tulnp       # + nazwa procesu (wymaga sudo)
ss -tn          # aktywne połączenia TCP
ss -s           # podsumowanie statystyk
ss -tp state established  # tylko ustanowione połączenia

# Przykładowe wyjście ss -tuln:
Netid  State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port
tcp    LISTEN  0       128     0.0.0.0:22            0.0.0.0:*
tcp    LISTEN  0       128     0.0.0.0:80            0.0.0.0:*
udp    UNCONN  0       0       0.0.0.0:53            0.0.0.0:*

# Znajdź który proces używa portu 80
sudo ss -tulnp | grep :80
tcp  LISTEN 0  128  0.0.0.0:80  0.0.0.0:*  users:(("nginx",pid=1234,fd=6))

# lsof — lista otwartych plików (w tym gniazd)
sudo lsof -i :80      # kto używa portu 80
sudo lsof -i TCP      # wszystkie gniazda TCP
sudo lsof -p 1234 -i  # gniazda konkretnego PID

08. Firewall — iptables i nftables

Linux posiada wbudowany w jądro system filtrowania pakietów — netfilter. Narzędzia do jego zarządzania ewoluowały: ipchainsiptablesnftables. W nowych systemach dominuje nftables lub warstwa wyżej: ufw (Ubuntu) i firewalld (RHEL/Fedora).

iptables — podstawy

bash — iptables

# Wyświetl reguły (wszystkie łańcuchy)
sudo iptables -L -v -n
sudo iptables -L -v -n --line-numbers  # z numerami linii

# Zezwól na ruch przychodzący SSH (port 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Zezwól na HTTP i HTTPS
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Zezwól na established/related (ważne — odpowiedzi na wychodzące)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Zezwól na loopback
sudo iptables -A INPUT -i lo -j ACCEPT

# Zablokuj wszystko inne przychodzące (TYLKO po dodaniu powyższych reguł!)
sudo iptables -P INPUT DROP

# Usuń regułę po numerze linii
sudo iptables -D INPUT 3

# Zapisz reguły (Ubuntu/Debian)
sudo iptables-save > /etc/iptables/rules.v4

ufw — przyjazny firewall dla Ubuntu

bash — ufw (Ubuntu/Debian)

sudo apt install ufw (jeśli nie ma na serwerze zainstaluj ufw)

sudo ufw status verbose # Status i aktualne reguły
sudo ufw enable # Włącz firewall
sudo ufw disable # Wyłącz firewall
sudo ufw allow 22/tcp # Zezwól SSH
sudo ufw allow 'Nginx Full' # Zezwól HTTP+HTTPS (profil)
sudo ufw deny 23/tcp # Zablokuj Telnet
sudo ufw delete allow 23/tcp # Usuń regułę
sudo ufw default deny incoming # Domyślnie blokuj ruch przychodzący
sudo ufw default allow outgoing # Domyślnie zezwalaj wychodzący

# Ogranicz liczbę połączeń (ochrona przed brute-force SSH)
sudo ufw limit ssh

nftables — nowoczesny następca iptables

bash — nftables

# Wyświetl wszystkie reguły
sudo nft list ruleset

# Prosta konfiguracja w /etc/nftables.conf
table inet filter {
    chain input {
        type filter hook input priority 0;
        policy drop;

        iif lo accept                          # loopback OK
        ct state established,related accept    # odpowiedzi OK
        tcp dport 22 accept                    # SSH
        tcp dport { 80, 443 } accept           # Web
    }
    chain forward { type filter hook forward priority 0; policy drop; }
    chain output  { type filter hook output priority 0;  policy accept; }
}

# Załaduj konfigurację
sudo nft -f /etc/nftables.conf

09. Diagnostyka sieci — od ping do tcpdump

Umiejętność diagnostyki problemów sieciowych to jedna z najważniejszych kompetencji administratora Linux. Narzędzia sieciowe tworzą hierarchię od prostych testów po głęboką analizę pakietów.

ping — podstawowy test łączności

bash — ping

ping 8.8.8.8                   # ping do Google DNS
ping -c 4 google.com           # 4 pakiety i stop
ping -i 0.2 192.168.1.1       # interwał 0.2s (szybszy)
ping -s 1400 192.168.1.1      # duże pakiety (test MTU)
ping -M do -s 1472 192.168.1.1 # test MTU bez fragmentacji
ping -6 ipv6.google.com       # ping IPv6

traceroute — śledzenie trasy pakietu

bash — traceroute i mtr

traceroute google.com        # klasyczny traceroute (UDP)
traceroute -T google.com     # używaj TCP (przechodzi przez firewall)
traceroute -I google.com     # używaj ICMP (jak Windows tracert)

# mtr — połączenie ping+traceroute w czasie rzeczywistym (NAJLEPSZE!)
mtr google.com               # interaktywny widok
mtr --report -c 20 8.8.8.8  # raport z 20 pakietami
mtr --tcp --port 443 google.com  # przez TCP 443

tcpdump — przechwytywanie i analiza pakietów

bash — tcpdump

# Nasłuchuj na interfejsie eth0
sudo tcpdump -i eth0

# Filtruj po hoście
sudo tcpdump -i eth0 host 192.168.1.1

# Filtruj po porcie
sudo tcpdump -i eth0 port 80

# Filtruj po protokole i porcie docelowym
sudo tcpdump -i eth0 tcp dst port 443

# Zapisz przechwycone pakiety do pliku .pcap
sudo tcpdump -i eth0 -w /tmp/capture.pcap

# Odczytaj plik pcap (analiza w Wireshark lub tcpdump)
tcpdump -r /tmp/capture.pcap

# Pokaż zawartość pakietów (payload) w ASCII
sudo tcpdump -i eth0 -A port 80

# Złożony filtr — HTTP bez lokalnych połączeń
sudo tcpdump -i eth0 port 80 and not host 127.0.0.1 -n

netcat (nc) — szwajcarski scyzoryk sieci

bash — netcat



# Sprawdź czy port jest otwarty
nc -zv 192.168.1.1 22
Connection to 192.168.1.1 22 port [tcp/ssh] succeeded!

# Skanowanie zakresu portów
nc -zv 192.168.1.1 20-25

# Prosty serwer TCP (nasłuchuj na porcie 9999)
nc -l 9999

# Klient — połącz i wyślij dane
echo "Hello Server" | nc 192.168.1.1 9999

# Sprawdź banner/wersję serwisu
nc 192.168.1.1 80
HEAD / HTTP/1.0 # wpisz i naciśnij Enter dwa razy

curl i wget — testowanie HTTP/HTTPS

bash — curl diagnostyka

sudo apt install curl (jeśli nie masz na serwerze)


# Sprawdź odpowiedź HTTP z nagłówkami
curl -I https://example.com

# Zmierz czas połączenia, TTFB i całkowity czas
curl -w "\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" -o /dev/null -s https://google.com
DNS: 0.012s
Connect: 0.028s
TTFB: 0.156s
Total: 0.189s

# Testuj z konkretnym DNS (bez cache systemowego)
curl --dns-servers 8.8.8.8 https://example.com

# Sprawdź certyfikat SSL
curl -v --head https://example.com 2>&1 | grep -A5 "SSL"

10. Kluczowe pliki konfiguracyjne sieci

Linux przechowuje konfigurację sieci w różnych lokalizacjach w zależności od dystrybucji. Poniżej znajdziesz mapę najważniejszych plików.

Plik / ŚcieżkaZastosowanieDystrybucja
/etc/hostsLokalne mapowania nazw na IP (priorytet przed DNS)Wszystkie
/etc/resolv.confSerwery DNS, domeny wyszukiwaniaWszystkie
/etc/nsswitch.confKolejność resolucji nazw (files, dns, mdns)Wszystkie
/etc/hostnameNazwa hosta systemuWszystkie
/etc/network/interfacesKonfiguracja interfejsów sieciowych (legacy)Debian/Ubuntu
/etc/netplan/*.yamlKonfiguracja sieci w formacie YAMLUbuntu 18.04+
/etc/NetworkManager/Konfiguracja NetworkManager i profili połączeńFedora/RHEL/Ubuntu
/etc/sysconfig/network-scripts/ifcfg-*Stare pliki konfiguracji interfejsówRHEL 7 i starsze
/etc/systemd/network/*.networkKonfiguracja systemd-networkdArch, Debian, serwery
/proc/net/Wirtualny system plików — live dane z jądraWszystkie
/sys/class/net/Informacje o interfejsach (MTU, MAC, speed)Wszystkie
/etc/sysctl.confParametry jądra (ip_forward, tcp bufory)Wszystkie

Netplan — konfiguracja Ubuntu (przykład)

/etc/netplan/01-network.yaml

network:
  version: 2
  renderer: networkd   # lub NetworkManager
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        "NazwaSieci":
          password: "HasloWifi"

# Zastosuj konfigurację
sudo netplan try    # testuj (auto-rollback po 120s)
sudo netplan apply  # zastosuj na stałe

11. Nowoczesne narzędzia sieciowe Linux

Ekosystem narzędzi sieciowych Linux stale się rozwija. Obok klasycznych poleceń pojawiają się nowe, wydajniejsze alternatywy.

Stare narzędzieNowe narzędziePakietZalety nowego
ifconfigip addriproute2Obsługa IPv6, alias, polityki routingu, VRF
routeip routeiproute2Policy routing, wiele tablic, metryki
arpip neighiproute2Cache sąsiadów IPv4 i IPv6 (NDP)
netstatssiproute210x szybszy, bardziej szczegółowy
iptablesnftablesnftablesJedna składnia dla IPv4/IPv6/ARP, atomiczne aktualizacje
brctlip linkiproute2Zarządzanie mostami przez ip link
iwconfigiw / nmcliiw / NetworkManagerPełna obsługa 802.11ac/ax, WPA3
nslookupdig / resolvectlbind-utilsSzczegółowe odpowiedzi DNS, DNSSEC
traceroutemtrmtrCiągły monitoring trasy, statystyki utraty

eBPF — rewolucja w sieciowaniu

eBPF (extended Berkeley Packet Filter) to technologia umożliwiająca uruchamianie kodu w jądrze Linux bez konieczności modyfikowania jego kodu źródłowego. W kontekście sieci: narzędzie bpftrace, cilium i XDP potrafią filtrować i przekierowywać pakiety z przepustowością wielokrotnie przekraczającą klasyczne iptables. To obecny kierunek rozwoju sieci w Linux.

12. Ściągawka komend sieciowych Linux

Interfejsy i adresy IP

  • ip addr show – Wszystkie interfejsy z adresami
  • ip link show – Interfejsy (bez adresów IP)
  • ip addr add 10.0.0.1/24 dev eth0 – Dodaj adres IP
  • ip link set eth0 up/down – Włącz / wyłącz interfejs
  • ip -s link show eth0 – Statystyki TX/RX
  • ip neigh show – Tablica ARP/NDP

Routing

  • ip route show – Tablica routingu
  • ip route get 8.8.8.8 – Trasa do konkretnego IP
  • ip route add 10.0.0.0/8 via 192.168.1.1 – Dodaj trasę statyczną
  • ip route del default – Usuń bramę domyślną
  • ip route add default via 192.168.1.1 – Ustaw bramę domyślną

Diagnostyka

  • ping -c 4 8.8.8.8 – Test łączności (4 pakiety)
  • traceroute google.com – Trasa pakietu przez sieć
  • mtr –report google.com – Raport ping+traceroute
  • ss -tuln – Otwarte porty nasłuchujące
  • ss -tulnp – Porty + nazwy procesów
  • sudo lsof -i :80 – Kto używa portu 80

DNS

  • dig google.com – Zapytanie DNS (rekord A)
  • dig google.com MX – Rekordy poczty
  • dig @8.8.8.8 google.com – Użyj konkretnego serwera DNS
  • host google.com – Szybka resolucja
  • resolvectl status – Status systemd-resolved
  • sudo resolvectl flush-caches – Wyczyść cache DNS

Przechwytywanie pakietów

  • sudo tcpdump -i eth0 – Przechwytuj ruch na eth0
  • sudo tcpdump -i eth0 port 80 – Tylko port 80
  • sudo tcpdump -i eth0 -w file.pcap – Zapisz do pliku
  • tcpdump -r file.pcap – Odczytaj plik pcap
  • nc -zv host port – Sprawdź dostępność portu

Firewall (ufw)

  • sudo ufw status verbose – Status i reguły
  • sudo ufw allow 22/tcp – Zezwól SSH
  • sudo ufw deny 23 – Zablokuj Telnet
  • sudo ufw limit ssh – Rate-limit SSH (anty-brute)
  • sudo iptables -L -v -n – Reguły iptables
  • sudo nft list ruleset – Reguły nftables

Podsumowanie

Artykuł stanowi przekrojowe wprowadzenie do sieci w systemie Linux, obejmujące zarówno historię, jak i praktyczne aspekty konfiguracji oraz diagnostyki.

Na początku przedstawiono rozwój sieci komputerowych — od ARPANET-u i powstania TCP/IP, przez implementację stosu sieciowego w BSD, aż po ewolucję Linuksa od systemu bez obsługi sieci do zaawansowanej platformy z technologiami takimi jak netfilter, nftables, eBPF i WireGuard. Zwrócono uwagę, że wiele współczesnych rozwiązań wynika z dawnych decyzji projektowych.

Następnie omówiono modele warstwowe OSI i TCP/IP, wyjaśniając rolę poszczególnych warstw w komunikacji sieciowej, przy czym podkreślono, że Linux opiera się na modelu TCP/IP.

Kolejne części dotyczą interfejsów sieciowych, zarówno fizycznych, jak i wirtualnych, oraz sposobów ich konfiguracji z użyciem nowoczesnych narzędzi takich jak iproute2. Wyjaśniono także podstawy adresacji IP, w tym IPv4 i IPv6, zakresy prywatne oraz notację CIDR.

Opisano zasady routingu, działanie tablic routingu i bramy domyślnej, a także mechanizm przekazywania pakietów i NAT. Następnie przedstawiono działanie systemu DNS oraz narzędzia służące do diagnozowania problemów z rozwiązywaniem nazw.

W dalszej części wyjaśniono pojęcia portów i gniazd oraz metody monitorowania aktywnych połączeń. Omówiono również mechanizmy filtrowania ruchu w systemie Linux, w tym iptables i nftables, a także prostsze narzędzia jak ufw.

Artykuł zawiera także przegląd narzędzi diagnostycznych, takich jak ping, traceroute, mtr, tcpdump, netcat i curl, które pozwalają analizować problemy sieciowe na różnych poziomach.

Na końcu przedstawiono najważniejsze pliki konfiguracyjne związane z siecią oraz nowoczesne narzędzia zastępujące starsze rozwiązania. Całość zamyka zestaw najczęściej używanych komend, stanowiący praktyczną ściągawkę dla administratora.

Bezpłatne warsztaty: Kali Linux od podstaw - fundament pracy pentestera

Naucz się instalacji i konfiguracji Kali Linux, pracy w terminalu, zarządzania uprawnieniami, budowy własnego laboratorium pentestowego oraz korzystania z narzędzi używanych przez specjalistów cyberbezpieczeństwa.

Odbierz dostęp do 13 maja do 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

 

 

Bezpłatne szkolenie "Kali Linux od podstaw - fundament pracy pentestera"

X