1/51
Adresowanie i protokoły warstwy 2 i 3
Cel slajdu: Slajd wprowadza w zagadnienie adresowania fizycznego i logicznego oraz pokazuje związki między warstwą łącza danych a warstwą sieciową.

Podstawy adresowania sieci

Wykład obejmuje fundamentalne mechanizmy adresowania w sieciach Ethernet oraz IP – od fizycznej i logicznej struktury adresu MAC, przez mechanizmy translacji adresów w protokole ARP, aż po dogłębne porównanie nagłówków IPv4 i IPv6 oraz diagnostyczną rolę protokołu ICMP. Każde zagadnienie poparte jest praktycznymi poleceniami w systemach Linux, Windows oraz RouterOS, a także analizą rzeczywistych scenariuszy awarii w sieciach lokalnych. Celem zajęć jest wykształcenie umiejętności inżynierskiej analizy ruchu ramkowego i pakietowego oraz sprawnej diagnostyki problemów z łącznością w warstwie łącza danych i sieciowej.

Adresowanie w warstwach L2 i L3 (ang. L2/L3 addressing): Adresowanie w warstwach L2 i L3 to uporządkowany system identyfikatorów umożliwiający dostarczenie ramki w segmencie lokalnym (adres MAC, IEEE 802) oraz pakietu między sieciami (adres IP, RFC 791, RFC 8200). Rozróżnienie wynika z modelu ISO/OSI: warstwa łącza danych operuje na identyfikatorach płaskich o zasięgu lokalnym, a warstwa sieciowa na identyfikatorach hierarchicznych o zasięgu globalnym, wiązanych protokołami ARP (RFC 826) i NDP (RFC 4861).
Adresowanie i protokoły warstwy 2 i 3
1a/51
Literatura i źródła normatywne
Cel slajdu: Slajd porządkuje literaturę przedmiotu oraz wskazuje obowiązujące normy techniczne i przepisy prawa stanowiące podstawę wykładu.

Literatura

Standardy IETF i IEEE oraz akty prawne

Podstawa normatywna wykładu (ang. normative references): Podstawa normatywna wykładu to zestaw dokumentów przywoływanych jako źródło wymagań technicznych i prawnych, obejmujący standardy IETF (Internet Standard, np. RFC 791, RFC 8200), standard IEEE 802.3 oraz akty prawa powszechnie obowiązującego. W Polsce od 10 listopada 2024 roku podstawowym aktem dla łączności jest ustawa Prawo komunikacji elektronicznej (Dz.U. 2024 poz. 1221), która wdrożyła Europejski kodeks łączności elektronicznej (dyrektywa 2018/1972).
Schemat sieci neuronowej przetwarzającej tekst
2/51
Agenda wykładu
Cel slajdu: Slajd przedstawia kolejność omawianych zagadnień, prowadzącą od adresowania w warstwie łącza danych do diagnostyki warstwy sieciowej.

Plan wykładu

  • Adresy MAC – budowa fizyczna, podział na OUI i identyfikator urządzenia, typy transmisji L2
  • Modyfikacja adresu MAC (MAC spoofing) – teoria, techniki w Linux/Windows, wektory nadużyć i ochrona
  • Protokół ARP – mechanika zapytań i odpowiedzi, struktura nagłówka, cykl życia wpisów w tablicy ARP
  • Zagrożenia w L2 – atak ARP Poisoning (MitM), samorzutne ogłoszenie (Gratuitous ARP) oraz techniki obrony (DAI, DHCP Snooping)
  • Warstwa 3: IPv4 vs IPv6 – analiza struktur nagłówków, obsługa fragmentacji, eliminacja broadcastu
  • Mechanizmy IPv6 – adresacja link-local (fe80::/10), protokół wykrywania sąsiadów (NDP) zamiast ARP
  • Protokół ICMP/ICMPv6 – typy, kody błędów, mechanizm Path MTU Discovery, narzędzia ping i traceroute
  • Laboratorium i rozwiązywanie problemów – praktyczna praca z tcpdump, ip neigh, diagnostyka usterek i cheat sheet
Agenda dydaktyczna (ang. lecture agenda): Agenda dydaktyczna to uporządkowany plan treści kształcenia, w którym zagadnienia są uszeregowane od mechanizmów najniższych (ramka Ethernet, adres MAC) przez mechanizmy wiążące (ARP, NDP) do protokołów warstwy sieciowej (IPv4, IPv6, ICMP). Taki układ odpowiada enkapsulacji danych i ułatwia późniejszą diagnostykę warstwową zgodną z modelem ISO/OSI.
Agenda
3/51
Cele wykładu i laboratorium
Cel slajdu: Slajd określa wymagane efekty uczenia się, czyli wiedzę i umiejętności, które uczestnik opanuje po zajęciach i laboratorium.

Wymagania i efekty uczenia się

  • Zrozumienie budowy 48-bitowego adresu MAC oraz precyzyjne rozróżnianie transmisji Unicast, Broadcast i Multicast w L2
  • Nabycie umiejętności weryfikacji i programowej zmiany adresu MAC w systemach Linux, Windows oraz RouterOS
  • Opanowanie mechanizmu działania protokołu ARP, interpretacja stanów tablicy sąsiedztwa i identyfikacja ataku ARP Poisoning
  • Porównanie architektury nagłówków IPv4 i IPv6 z uwzględnieniem sum kontrolnych, fragmentacji oraz wycofania broadcastu
  • Zrozumienie działania adresów link-local oraz protokołu NDP (Neighbor Discovery Protocol) w środowisku IPv6
  • Biegła interpretacja kodów i typów ICMP/ICMPv6 w scenariuszach awaryjnych (Host Unreachable, Frag Needed, Time Exceeded)
  • Samodzielne przechwytywanie i filtrowanie ruchu za pomocą tcpdump (wyrażenia BPF) oraz interpretacja wyników
Efekty uczenia się (ang. learning outcomes): Efekty uczenia się to mierzalne przyrosty wiedzy, umiejętności i kompetencji społecznych uzyskiwane w wyniku procesu kształcenia, formułowane w sylabusie przedmiotu. W tym module obejmują rozróżnianie transmisji jednostkowej, grupowej i rozgłoszeniowej, obsługę tablicy sąsiedztwa oraz interpretację komunikatów ICMP, weryfikowane ćwiczeniami z programami ip, ping, traceroute i tcpdump.
Cele
4/51
Adres MAC – budowa fizyczna
Cel slajdu: Slajd wyjaśnia budowę 48-bitowego adresu fizycznego oraz znaczenie bitów rozróżniających adresy jednostkowe, grupowe, globalne i lokalne.

Budowa adresu MAC (Media Access Control)

  • Długość: 48 bitów (6 oktetów), notacja szesnastkowa, np. 00:1A:2B:3C:4D:5E
  • Pierwsze 3 bajty (24 bity) – OUI (Organizationally Unique Identifier) przydzielane producentowi przez IEEE
  • Ostatnie 3 bajty (24 bity) – identyfikator urządzenia (Device Identifier / Extension Identifier) nadawany przez producenta
  • Najmłodszy bit pierwszego oktetu b0 (pierwszy w kolejności transmisji, LSB first): I/G (Individual/Group) – 0 = Unicast, 1 = Multicast/Broadcast
  • Drugi bit pierwszego oktetu b1: U/L (Universal/Local) – 0 = UAA (Universally Administered), 1 = LAA (Locally Administered)
Adres MAC (ang. Media Access Control address): Adres MAC to 48-bitowy identyfikator warstwy łącza danych przypisany kontrolerowi interfejsu sieciowego, standaryzowany przez IEEE 802 (rejestr IEEE Registration Authority). Pierwsze 24 bity stanowią identyfikator organizacyjny OUI, a dwa najmłodsze bity pierwszego oktetu pełnią funkcje flag: I/G rozróżnia adres indywidualny od grupowego, a U/L rozróżnia adres administrowany globalnie (UAA) od administrowanego lokalnie (LAA).
Budowa adresu MAC
5/51
Rejestry OUI i format zapisu
Cel slajdu: Slajd pokazuje sposób identyfikacji producenta sprzętu po prefiksie OUI oraz różnice w zapisie adresu fizycznego w systemach operacyjnych.

Identyfikacja producenta i standardy zapisu

  • Oficjalny rejestr prowadzony przez IEEE: programy MA-L (OUI 24-bit), MA-M (28-bit) oraz MA-S (36-bit)
  • Przykłady prefiksów OUI: 00:23:5E (Cisco Systems), 3C:5A:B4 (Google), 14:CF:92 (TP-Link)
  • Formaty zapisu:
    • Dwukropkowy (Linux / UNIX): 00:23:5e:11:22:33
    • Myślnikowy (Windows / IEEE): 00-23-5E-11-22-33
    • Kropkowy (Cisco IOS): 0023.5e11.2233
  • Weryfikacja producenta z poziomu wiersza poleceń:
$ curl -s https://api.macvendors.com/00:23:5E:11:22:33
Cisco Systems, Inc
Rejestr OUI (ang. OUI registry): Rejestr OUI to publiczna baza bloków adresowych prowadzona przez IEEE Registration Authority, w której producent wykupuje blok MA-L (24 bity), MA-M (28 bitów) albo MA-S (36 bitów) i przypisuje z niego unikalne identyfikatory urządzeń. Różne systemy operacyjne prezentują ten sam 48-bitowy numer w odmiennej notacji (dwukropkowej, myślnikowej albo kropkowej Cisco), dlatego przy porównywaniu logów należy normalizować separatory.
Rejestry OUI
6/51
Długość i zakres adresu MAC
Cel slajdu: Slajd porządkuje parametry przestrzeni adresowej MAC, w tym adres rozgłoszeniowy, zakresy grupowe oraz pojęcie domeny rozgłoszeniowej.

Parametry fizyczne adresu MAC

  • Przestrzeń adresowa: 48 bitów daje 248 = 281 474 976 710 656 (ok. 281 bilionów) kombinacji
  • Adres rozgłoszeniowy (Broadcast L2): FF:FF:FF:FF:FF:FF (wszystkie bity ustawione na 1)
  • Zarezerwowane zakresy grupowe (Multicast L2):
    • IPv4 Multicast: 01:00:5E:00:00:00 do 01:00:5E:7F:FF:FF (RFC 1112)
    • IPv6 Multicast: 33:33:xx:xx:xx:xx (RFC 2464)
  • Adresy administrowane lokalnie (LAA): drugi znak szesnastkowy to 2, 6, A lub E (np. x2:xx:...)
  • Zasięg transmisji rozgłoszeniowej: ramka broadcastowa replikowana jest do wszystkich portów w danej domenie rozgłoszeniowej (VLAN)
Przestrzeń adresowa MAC (ang. MAC address space): Przestrzeń adresowa MAC obejmuje 2 do potęgi 48 kombinacji, przy czym część wartości jest zarezerwowana dla transmisji grupowej, w tym adres FF:FF:FF:FF:FF:FF dla rozgłoszenia oraz prefiksy 01:00:5E dla IPv4 multicast (RFC 1112) i 33:33 dla IPv6 multicast (RFC 2464). Ramka rozgłoszeniowa jest powielana na wszystkie porty w obrębie jednej domeny rozgłoszeniowej, którą we współczesnych sieciach wyznacza sieć VLAN.
Zakres adresów MAC
7/51
Rodzaje transmisji L2: Unicast
Cel slajdu: Slajd opisuje transmisję jednostkową w Ethernecie oraz sposób, w jaki przełącznik uczy się adresów i podejmuje decyzję o przekazaniu ramki.

Unicast – komunikacja punkt-punkt w warstwie łącza

  • Docelowy adres MAC w nagłówku ramki wskazuje dokładnie jeden konkretny interfejs sieciowy (bit I/G = 0)
  • Przełącznik (switch) analizuje docelowy adres MAC i przekazuje ramkę wyłącznie na skojarzony port
  • Mechanizm uczenia się przełącznika: tablica CAM (Content Addressable Memory) / MAC Address Table
  • Optymalizacja wydajności: brak niepotrzebnego obciążania pozostałych stacji roboczych w segmencie
  • Zjawisko Unknown Unicast Flooding: gdy przełącznik nie ma adresu docelowego w tablicy CAM, zalewa ramką wszystkie porty w VLAN
Transmisja jednostkowa Unicast (ang. unicast transmission): Transmisja jednostkowa to tryb komunikacji punkt-punkt, w którym ramka zawiera docelowy adres MAC pojedynczego interfejsu (bit I/G równy 0) i jest przekazywana wyłącznie na skojarzony port przełącznika. Przełącznik realizuje algorytm mostu transparentnego (IEEE 802.1D): uczy się adresów źródłowych i zapamiętuje powiązanie adresu z portem w tablicy CAM, a przy braku wpisu stosuje zalewanie nieznanego ruchu jednostkowego na wszystkie porty w sieci VLAN.
Unicast L2
8/51
Rodzaje transmisji L2: Broadcast i Multicast
Cel slajdu: Slajd porównuje transmisję rozgłoszeniową i grupową oraz wskazuje mechanizmy ograniczające ich wpływ na wydajność sieci.

Broadcast i Multicast w warstwie łącza danych

  • Broadcast L2 (FF:FF:FF:FF:FF:FF):
    • Ramka trafia do wszystkich stacji roboczych w obrębie danej domeny rozgłoszeniowej (VLAN)
    • Niezbędny do działania mechanizmów wykrywania i konfiguracji: protokoły ARP, DHCP
    • Ryzyko: burza rozgłoszeniowa (broadcast storm) może całkowicie sparaliżować przepustowość łącza i procesory stacji
  • Multicast L2 (bit I/G = 1, np. 01:00:5E:... dla IPv4 oraz 33:33:... dla IPv6):
    • Ramka przeznaczona dla zdefiniowanej grupy odbiorców subskrybujących dany strumień
    • Optymalizacja w przełącznikach L2: mechanizm IGMP Snooping (dla IPv4) oraz MLD Snooping (dla IPv6)
Transmisja rozgłoszeniowa i grupowa (ang. broadcast and multicast): Transmisja rozgłoszeniowa dostarcza ramkę do wszystkich stacji w domenie i jest niezbędna do działania ARP i DHCP, lecz każda taka ramka wymusza przerwanie sprzętowe i obciąża procesor odbiorcy. Transmisja grupowa dostarcza ramkę tylko subskrybentom grupy, a jej efektywność w warstwie łącza zależy od podsłuchiwania zgłoszeń IGMP i MLD (IGMP Snooping, MLD Snooping), bez którego przełącznik traktuje ruch grupowy jak rozgłoszeniowy.
Broadcast i Multicast L2
9/51
Sprawdzenie adresu MAC w systemie Windows
Cel slajdu: Slajd pokazuje sposoby odczytu adresu fizycznego w systemie Windows przy użyciu klasycznych poleceń oraz nowoczesnego modułu PowerShell.

Diagnostyka adresu MAC w Windows (CMD i PowerShell)

  • Narzędzie klasyczne (CMD): ipconfig /all – pole Physical Address (Adres fizyczny)
  • Szybkie zestawienie kart fizycznych: getmac /v
  • Nowoczesne zarządzanie w konsoli PowerShell:
    • Get-NetAdapter | Select-Object Name, InterfaceDescription, MacAddress, Status
    • Szczegółowe parametry: Get-NetAdapter -Name "Ethernet" | Format-List *
PS> Get-NetAdapter | Select-Object Name, MacAddress, Status

Name      MacAddress         Status
----      ----------         ------
Ethernet  00-1A-2B-3C-4D-5E  Up
Wi-Fi     AA-BB-CC-DD-EE-FF  Up
Moduł NetAdapter (ang. NetAdapter module): Moduł NetAdapter to zestaw poleceń cmdlet programu PowerShell służący do zarządzania kartami sieciowymi w systemie Windows (polecenia Get-NetAdapter, Set-NetAdapter). Zwraca obiekty strukturalne, które można filtrować i przetwarzać w potoku, co ułatwia inwentaryzację sprzętu oraz integrację z mechanizmami kontroli dostępu do sieci opartymi na standardzie IEEE 802.1X (dokumentacja: Microsoft Learn).
Windows MAC
10/51
Sprawdzenie adresu MAC w systemie Linux
Cel slajdu: Slajd pokazuje sposoby odczytu adresu fizycznego w systemie Linux przy użyciu pakietu iproute2 oraz wirtualnego systemu plików jądra.

Diagnostyka adresu MAC w środowisku Linux (iproute2)

  • Pakiet iproute2 (standard we współczesnych dystrybucjach):
    • Widok skrócony: ip -br link
    • Szczegóły wszystkich łączy: ip link show
    • Konkretny interfejs: ip link show dev enp0s3
  • Bezpośredni odczyt z wirtualnego systemu plików jądra (sysfs):
    • cat /sys/class/net/enp0s3/address
    • Identyfikator stały (perm_address): ethtool -P enp0s3
$ ip -br link
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp0s3           UP             08:00:27:8f:22:60 <BROADCAST,MULTICAST,UP,LOWER_UP>
docker0          DOWN           fa:64:9e:24:cb:08 <NO-CARRIER,BROADCAST,MULTICAST,UP>
Pakiet iproute2 (ang. iproute2 suite): Pakiet iproute2 to podstawowy zestaw narzędzi do konfiguracji sieci w systemie Linux (program ip), komunikujący się z jądrem przez gniazda Netlink i zastępujący przestarzały pakiet net-tools (ifconfig). Uzupełnieniem jest wirtualny system plików sysfs (katalog /sys/class/net), w którym jądro udostępnia atrybuty interfejsów, oraz program ethtool umożliwiający odczyt fabrycznego adresu z pamięci karty.
Linux MAC
11/51
Adres MAC a adres IP – porównanie
Cel slajdu: Slajd zestawia różnice między adresem fizycznym warstwy łącza a adresem logicznym warstwy sieciowej.

Różnice między adresowaniem L2 a L3

CechaAdres MAC (Warstwa 2)Adres IP (Warstwa 3)
Długość i format48 bitów (6 bajtów), zapis szesnastkowy32 bity (IPv4) / 128 bitów (IPv6)
Struktura przestrzeniPłaska (identyfikator fizyczny)Hierarchiczna (część sieciowa + część hosta)
Sposób przypisaniaFabryczny (BIA w EEPROM), zmienny programowoDynamiczny (DHCP/SLAAC) lub statyczny
Zasięg obowiązywaniaLokalny segment L2 (domena rozgłoszeniowa)Globalny (międzysieciowy z trasowaniem)
Urządzenia przetwarzającePrzełączniki L2 (mosty sieciowe)Routery, przełączniki warstwy 3 (L3)
Funkcja podstawowaDostarczenie ramki w medium fizycznymWyznaczenie trasy i dostarczenie pakietu end-to-end
Adres fizyczny a adres logiczny (ang. physical vs logical address): Adres fizyczny (MAC) ma charakter płaski i obowiązuje tylko w lokalnym segmencie, natomiast adres logiczny (IP) ma charakter hierarchiczny: prefiks wskazuje sieć, a identyfikator wskazuje hosta, co umożliwia agregację tras (CIDR) i trasowanie globalne. Przełącznik warstwy drugiej podejmuje decyzje na podstawie adresów MAC, a router i przełącznik warstwy trzeciej na podstawie adresów IP i tablicy routingu.
MAC vs IP
12/51
Specjalne adresy MAC i maskowanie bitów
Cel slajdu: Slajd tłumaczy znaczenie bitów I/G i U/L oraz regułę rozpoznawania adresów administrowanych lokalnie po drugiej cyfrze szesnastkowej.

Znaczenie flag w najstarszym bajcie adresu MAC

  • Struktura pierwszego przesyłanego oktetu w notacji binarnej (bity od najstarszego b7 do najmłodszego b0):
    • Bit 0 (I/G – Individual / Group): 0 = Unicast (indywidualny), 1 = Multicast / Broadcast (grupowy)
    • Bit 1 (U/L – Universal / Local): 0 = UAA (globalnie unikalny IEEE), 1 = LAA (administrowany lokalnie)
  • Dlaczego adresy lokalne (LAA) w notacji szesnastkowej mają drugą cyfrę 2, 6, A lub E?
    • Dla adresu Unicast (I/G = 0) i LAA (U/L = 1) końcówka pierwszego bajtu to binarne ..10:
    • 0010 = 2, 0110 = 6, 1010 = A, 1110 = E
$ ip -br link
eth0 UP 02:1a:2b:ff:ff:01  # Bit U/L = 1, bit I/G = 0 -> poprawny adres LAA Unicast
Flagi I/G i U/L (ang. Individual/Group and Universal/Local bits): Flagi I/G i U/L to dwa najmłodsze bity pierwszego oktetu adresu MAC przesyłane w pierwszej kolejności w formacie kanonicznym Ethernetu. Flaga I/G informuje odbiornik, czy ramka jest jednostkowa czy grupowa, a flaga U/L informuje, czy adres ma gwarancję globalnej unikalności IEEE czy został nadany lokalnie, co w zapisie szesnastkowym objawia się drugą cyfrą 2, 6, A albo E dla poprawnego adresu jednostkowego LAA.
Flagi MAC
13/51
MAC spoofing – teoria, cele i aspekty prawne
Cel slajdu: Slajd omawia motywacje programowej zmiany adresu fizycznego oraz granice prawne między ochroną prywatności a podszywaniem się pod cudzy identyfikator.

Mechanizmy i motywacje zmiany adresu fizycznego

  • Anonimizacja i ochrona prywatności:
    • Nowoczesne systemy mobilne i stacjonarne (Android, iOS, Windows 11) domyślnie rotują adresy MAC w sieciach Wi-Fi (Private MAC Address), chroniąc użytkowników przed śledzeniem profilowym
  • Testy penetracyjne i audyty bezpieczeństwa:
    • Weryfikacja skuteczności mechanizmów ochrony portów (Port Security) oraz uwierzytelniania w sieci LAN
  • Rozwiązywanie problemów eksploatacyjnych:
    • Podmiana uszkodzonej karty sieciowej bez konieczności rekonfiguracji wiązania IP-MAC u dostawcy ISP
  • Odpowiedzialność prawna:
    • Nieuprawnione podszywanie się pod cudzy adres MAC w celu przełamania zabezpieczeń stanowi przestępstwo z art. 267 Kodeksu karnego oraz naruszenie tajemnicy komunikacji (art. 389 Prawa komunikacji elektronicznej)
Maskowanie adresu MAC (ang. MAC spoofing): Maskowanie adresu MAC polega na programowym nadpisaniu adresu widocznego w sterowniku karty, bez naruszania fabrycznego adresu zapisanego w pamięci stałej, i ustaje po restarcie lub przeładowaniu sterownika. Technika ma zastosowania uprawnione (rotacja adresu dla prywatności w sieciach Wi-Fi, testy penetracyjne, podmiana uszkodzonej karty), lecz użycie cudzego adresu w celu przełamania zabezpieczeń może wypełniać znamiona przestępstwa z artykułu 267 Kodeksu karnego oraz naruszać tajemnicę komunikacji z artykułu 389 Prawa komunikacji elektronicznej.
MAC spoofing
14/51
MAC spoofing w Linux – pakiet iproute2
Cel slajdu: Slajd przedstawia procedurę programowej zmiany adresu fizycznego w systemie Linux przy użyciu polecenia ip link.

Procedura zmiany adresu MAC za pomocą polecenia ip link

  • Interfejs musi zostać wyłączony (stan DOWN) przed modyfikacją adresu MAC w sterowniku
  • Kroki procedury w wierszu poleceń:
# 1. Wyłączenie interfejsu sieciowego
$ sudo ip link set dev eth0 down

# 2. Przypisanie nowego adresu MAC (zalecany format LAA Unicast)
$ sudo ip link set dev eth0 address 02:00:00:00:00:01

# 3. Ponowne podniesienie interfejsu
$ sudo ip link set dev eth0 up

# 4. Weryfikacja bieżącego stanu
$ ip -br link show dev eth0
eth0             UP             02:00:00:00:00:01 <BROADCAST,MULTICAST,UP,LOWER_UP>
Polecenie ip link set (ang. ip link set command): Polecenie ip link set z pakietu iproute2 modyfikuje parametry interfejsu w jądrze Linux, w tym adres sprzętowy, przy czym większość sterowników wymaga wcześniejszego wyłączenia interfejsu (stan DOWN). Zmiana jest ulotna i po restarcie wraca adres fabryczny, dlatego trwałe wymuszenie adresu konfiguruje się w menedżerze sieci (Netplan, NetworkManager albo systemd-networkd).
Linux MAC spoofing
15/51
Narzędzie macchanger w środowisku Linux
Cel slajdu: Slajd omawia narzędzie macchanger, które automatyzuje losowanie, maskowanie i przywracanie adresu fizycznego podczas audytów bezpieczeństwa.

Zaawansowane zarządzanie adresem MAC za pomocą macchanger

  • Program narzędziowy dedykowany do audytów bezpieczeństwa i szybkiej manipulacji adresem MAC
  • Najważniejsze opcje konfiguracyjne:
    • -s eth0 – wyświetlenie bieżącego adresu w systemie oraz stałego adresu fabrycznego (Permanent MAC)
    • -r eth0 – wygenerowanie w pełni losowego adresu MAC (z automatycznym ustawieniem bitu LAA)
    • -a eth0 – losowy adres z puli OUI tego samego dostawcy (zachowuje pierwsze 3 bajty)
    • -A eth0 – losowy adres z losowym identyfikatorem OUI dowolnego zarejestrowanego producenta
    • -p eth0 – natychmiastowe przywrócenie fabrycznego adresu sprzętowego z pamięci EEPROM
$ sudo macchanger -a eth0
Current MAC:   00:23:5e:11:22:33 (Cisco Systems, Inc.)
Permanent MAC: 00:23:5e:11:22:33 (Cisco Systems, Inc.)
New MAC:       00:23:5e:de:ad:be (Cisco Systems, Inc.)
Program macchanger (ang. macchanger utility): Program macchanger to narzędzie wiersza poleceń przeznaczone do szybkiej manipulacji adresem MAC, standardowo dostępne w dystrybucjach audytowych (instalacja w Debian i Ubuntu poleceniem apt install macchanger). Automatyzuje sekwencję wyłączenia i włączenia interfejsu oraz oferuje tryby losowania pełnego, losowania z zachowaniem prefiksu producenta albo przywrócenia adresu fabrycznego, korzystając z wbudowanej bazy prefiksów IEEE OUI.
macchanger
16/51
MAC spoofing w systemie Windows
Cel slajdu: Slajd pokazuje graficzną i wiersza poleceń metodę zmiany adresu fizycznego w systemie Windows oraz wymóg ustawienia bitu lokalnego.

Zmiana adresu MAC w Windows (GUI i PowerShell)

  • Konfiguracja graficzna (Menedżer urządzeń – devmgmt.msc):
    • Właściwości karty sieciowej → zakładka Zaawansowane → właściwość Network Address lub Locally Administered Address
    • Wprowadzanie wartości w postaci 12 znaków szesnastkowych bez separatorów (np. 020000000001)
  • Zarządzanie za pośrednictwem konsoli PowerShell (wymaga uprawnień administratora):
# Wymuszenie nowego adresu MAC (wymaga restartu adaptera)
PS> Set-NetAdapter -Name "Ethernet" -MacAddress "02-00-00-00-00-01"

# Weryfikacja przypisania
PS> Get-NetAdapter -Name "Ethernet" | Select-Object Name, MacAddress
Name      MacAddress
----      ----------
Ethernet  02-00-00-00-00-01

Uwaga techniczna: Sterowniki kart sieciowych w Windows (szczególnie Wi-Fi) wymuszają ustawienie bitu LAA – adres musi zaczynać się od cyfr szesnastkowych o drugim znaku równym 2, 6, A lub E.

Atrybut Network Address (ang. Network Address property): Atrybut Network Address (albo Locally Administered Address) to parametr sterownika karty sieciowej w systemie Windows, edytowany w Menedżerze urządzeń albo poleceniem Set-NetAdapter, przyjmujący 12 znaków szesnastkowych bez separatorów. Stos NDIS w kartach bezprzewodowych odrzuca wartości z bitem U/L równym 0, dlatego akceptowany adres musi być lokalny (druga cyfra szesnastkowa 2, 6, A albo E), a przy braku opcji w sterowniku zmiana wymaga edycji rejestru w gałęzi sterowników sieciowych.
Windows MAC spoofing
17/51
MAC spoofing – wykrywanie i zabezpieczenia
Cel slajdu: Slajd zestawia mechanizmy obrony przed podszywaniem się pod adres fizyczny, od kontroli portu po uwierzytelnianie oparte na protokole EAP.

Mechanizmy ochrony infrastruktury przełączanej

  • Port Security (mechanizm producentów przełączników):
    • Ograniczenie liczby dopuszczalnych adresów MAC na porcie dostępowym (np. limit = 1)
    • Wiązanie stałe (Sticky MAC): przełącznik trwale zapamiętuje pierwszy podłączony MAC w konfiguracji
    • Reakcja na naruszenie (violation): wyłączenie portu (shutdown), odrzucenie ramki (restrict) lub powiadomienie SNMP (protect)
  • Standard IEEE 802.1X:
    • Uwierzytelnianie na poziomie portu oparte na protokole EAP i serwerze RADIUS (certyfikaty cyfrowe, 802.1X PEAP/EAP-TLS) – podszycie się pod adres MAC jest całkowicie nieskuteczne bez poświadczeń kryptograficznych
  • DHCP Snooping:
    • Weryfikacja zgodności adresu MAC w nagłówku ramki z adresem klienta (chaddr) w pakiecie DHCP
Ochrona portu dostępowego (ang. port-based protection): Ochrona portu dostępowego to zestaw mechanizmów przełącznika i infrastruktury uwierzytelniania ograniczających skutki fałszowania adresu MAC, obejmujący limit adresów i tryb sticky, uwierzytelnianie IEEE 802.1X z serwerem RADIUS oraz weryfikację zgodności DHCP Snooping. Samo filtrowanie adresów MAC nie jest zabezpieczeniem, ponieważ adres fizyczny jest przesyłany jawnie i daje się podsłuchać analizatorem ruchu.
Wykrywanie MAC spoofing
18/51
Protokół ARP – wprowadzenie
Cel slajdu: Slajd wprowadza protokół ARP jako mechanizm wiążący znany adres logiczny IPv4 z nieznanym adresem fizycznym w segmencie lokalnym.

Rola protokołu ARP (Address Resolution Protocol)

  • Standard RFC 826 (STD 37, wydany w 1982 r.) – funkcjonuje na styku warstwy łącza danych (L2) i sieciowej (L3)
  • Główne zadanie: dynamiczne odwzorowanie znanego logicznego adresu IPv4 na fizyczny adres MAC w lokalnym segmencie sieci
  • Protokół nie jest routowany – zapytania i odpowiedzi operują wyłącznie w obrębie pojedynczej domeny rozgłoszeniowej
  • Brak wbudowanych mechanizmów kryptograficznych: protokół powstał w epoce zaufanych sieci akademickich i nie weryfikuje tożsamości nadawcy
  • Podstawowe operacje:
    • ARP Request: zapytanie rozsyłane w trybie rozgłoszeniowym (Broadcast L2)
    • ARP Reply: odpowiedź przesyłana w trybie jednostkowym (Unicast L2)
Protokół ARP (ang. Address Resolution Protocol): Protokół ARP, opisany w dokumencie RFC 826 (STD 37, rok 1982), dynamicznie odwzorowuje adres IPv4 na adres MAC wyłącznie w obrębie jednej domeny rozgłoszeniowej i nie podlega trasowaniu. Protokół nie zawiera uwierzytelniania nadawcy, dlatego rozróżnia jedynie zapytanie rozgłoszeniowe (ARP Request) i odpowiedź jednostkową (ARP Reply), co w sieciach IPv6 zastąpiono protokołem NDP.
ARP protokół
19/51
Mechanika ARP Request i Reply
Cel slajdu: Slajd opisuje trzy kroki wymiany ARP, od zapytania rozgłoszeniowego po odpowiedź jednostkową i zapis powiązania w tablicy sąsiedztwa.

Przebieg cyklu zapytania i odpowiedzi w protokole ARP

  • Krok 1: ARP Request (Zapytanie):
    • Docelowy adres MAC ramki Ethernet: FF:FF:FF:FF:FF:FF (Broadcast L2 – trafia do wszystkich stacji)
    • Nagłówek ARP: Sender MAC = Host A, Sender IP = Host A, Target IP = Host B
    • Pole Target Hardware Address (THA) w ciele ARP: 00:00:00:00:00:00 (wartość nieznana)
  • Krok 2: Odbiór i przetwarzanie:
    • Wszystkie stacje w VLAN odbierają ramkę, ale tylko stacja posiadająca poszukiwany Target IP przetwarza ją do końca
  • Krok 3: ARP Reply (Odpowiedź):
    • Docelowy adres MAC ramki Ethernet: adres MAC Hosta A (Unicast L2 – trafia wyłącznie do pytającego)
    • Nagłówek ARP: Sender MAC = Host B, Sender IP = Host B, Target MAC = Host A, Target IP = Host A
# Przebieg zdarzenia w analizatorze ruchu:
ARP, Request who-has 192.168.1.10 tell 192.168.1.1, length 28
ARP, Reply 192.168.1.10 is-at aa:bb:cc:dd:ee:10, length 28
Cykl zapytanie-odpowiedź ARP (ang. ARP request-reply cycle): Cykl zapytanie-odpowiedź ARP polega na rozesłaniu ramki z docelowym adresem FF:FF:FF:FF:FF:FF i zerowym polem poszukiwanego adresu sprzętowego (THA), przetworzeniu jej wyłącznie przez właściciela poszukiwanego adresu IP oraz odesłaniu odpowiedzi jednostkowej z kompletem adresów. Stacja docelowa prewencyjnie zapisuje powiązanie nadawcy we własnej tablicy, co oszczędza jedno zapytanie przy ruchu dwukierunkowym (postać w tcpdump: who-has oraz is-at).
ARP Request/Reply
20/51
Budowa ramki ARP
Cel slajdu: Slajd porządkuje pola nagłówka ARP oraz tłumaczy, dlaczego pakiet ma stałą długość 28 bajtów i wymaga dopełnienia w ramce Ethernet.

Struktura pól nagłówka pakietu ARP (RFC 826)

  • Hardware Type (HTYPE, 2B): typ warstwy łącza – wartość 1 dla Ethernetu
  • Protocol Type (PTYPE, 2B): typ protokołu sieciowego – wartość 0x0800 dla IPv4
  • Hardware Size (HLEN, 1B): długość adresu fizycznego – 6 (dla 48-bitowego MAC)
  • Protocol Size (PLEN, 1B): długość adresu sieciowego – 4 (dla 32-bitowego IPv4)
  • Opcode (OPER, 2B): kod operacji – 1 = ARP Request, 2 = ARP Reply
  • Sender Hardware Address (SHA, 6B): adres MAC nadawcy
  • Sender Protocol Address (SPA, 4B): adres IPv4 nadawcy
  • Target Hardware Address (THA, 6B): adres MAC odbiorcy (zera w Request)
  • Target Protocol Address (TPA, 4B): poszukiwany adres IPv4 odbiorcy

Łączna długość nagłówka ARP dla IPv4 over Ethernet wynosi 28 bajtów. Ponieważ minimalny ładunek ramki Ethernet to 46 bajtów, pakiet ARP jest automatycznie uzupełniany dopełnieniem (padding) do wymaganej długości.

Nagłówek ARP (ang. ARP header): Nagłówek ARP dla powiązania Ethernet i IPv4 liczy 28 bajtów i zawiera identyfikatory typów sprzętu i protokołu (HTYPE, PTYPE), długości adresów (HLEN, PLEN), kod operacji (Opcode) oraz pary adresów nadawcy i odbiorcy (SHA, SPA, THA, TPA). Ponieważ minimalny ładunek ramki Ethernet wynosi 46 bajtów, pakiet ARP jest uzupełniany dopełnieniem do 64 bajtów całej ramki wraz z sumą FCS, co widać w analizatorach Wireshark i tcpdump.
Budowa ramki ARP
21/51
Tablica ARP – wyświetlanie i stany
Cel slajdu: Slajd pokazuje polecenia podglądu tablicy sąsiedztwa w różnych systemach oraz znaczenie stanów wykrywania osiągalności sąsiada.

Podgląd tablicy sąsiedztwa w systemach operacyjnych

  • Linux (iproute2): ip neigh show (narzędzie zalecane; polecenie arp -n jest przestarzałe)
  • Windows: arp -a lub w PowerShell: Get-NetNeighbor -AddressFamily IPv4
  • MikroTik RouterOS: /ip arp print
  • Cisco IOS: show ip arp
$ ip neigh show
192.168.1.1 dev eth0 lladdr 04:f0:21:5e:3b:58 REACHABLE
192.168.1.10 dev eth0 lladdr 74:d4:35:e0:b4:7e STALE
192.168.1.20 dev eth0 lladdr 80:fa:5b:6d:e0:5b DELAY
192.168.1.50 dev eth0  FAILED

Stany wpisów w Linux NUD (Neighbour Unreachability Detection):

  • REACHABLE – wpis potwierdzony, ważny i w pełni operacyjny
  • STALE – wpis nieużywany przez pewien czas; zostanie zweryfikowany przy najbliższej transmisji
  • DELAY / PROBE – faza aktywnej weryfikacji osiągalności sąsiada przez pakiety sondujące
  • FAILED – brak odpowiedzi na zapytania ARP; sąsiad nieosiągalny
  • PERMANENT – wpis statyczny wprowadzony przez administratora
Tablica sąsiedztwa (ang. neighbour table / ARP cache): Tablica sąsiedztwa to podręczna pamięć powiązań adresu IP z adresem MAC, w jądrze Linux obsługiwana maszyną stanów wykrywania nieosiągalności NUD (pierwotnie RFC 4861). Stany REACHABLE, STALE, DELAY, PROBE i FAILED ograniczają zalewanie sieci zapytaniami: wpis potwierdzony jest używany bezpośrednio, wpis nieużywany jest weryfikowany równolegle z wysyłką, a wpis bez odpowiedzi jest oznaczany jako nieosiągalny.
Tablica ARP
22/51
Wpisy dynamiczne a statyczne w ARP
Cel slajdu: Slajd porównuje wpisy dynamiczne, wygasane czasowo, z wpisami statycznymi, które chronią kluczowe urządzenia przed podszywaniem.

Cykl życia i zarządzanie wpisami w tablicy ARP

  • Wpisy dynamiczne (tworzone automatycznie):
    • Dodawane po odebraniu odpowiedzi ARP Reply lub podsłuchaniu poprawnego ruchu w sieci
    • Usuwane po określonym czasie bezczynności (aging timer):
      • Windows: domyślnie 15–45 sekund dla wpisów nieużywanych, do 10–20 minut przy aktywności
      • Linux: parametry jądra w /proc/sys/net/ipv4/neigh/default/gc_stale_time (domyślnie 60 s)
      • RouterOS: domyślny arp-timeout wynosi 30 s (parametr /ip settings; w bridge tryb auto przejmuje tę wartość)
  • Wpisy statyczne (konfigurowane ręcznie):
    • Trwałe wiązanie IP ↔ MAC wprowadzone przez administratora; nie ulegają wygaszeniu ani nadpisaniu przez dynamiczne pakiety ARP
    • Zastosowanie: ochrona serwerów i bramy domyślnej przed atakami podszywania (ARP Spoofing)
    • Konfiguracja w Linux: sudo ip neigh add 192.168.1.10 lladdr aa:bb:cc:dd:ee:ff nud permanent dev eth0
Wpis dynamiczny i statyczny ARP (ang. dynamic vs static entry): Wpis dynamiczny powstaje automatycznie po odebraniu odpowiedzi ARP i wygasa po czasie bezczynności (licznik starzenia, w Linux parametr gc_stale_time, w RouterOS arp-timeout), co zapewnia adaptację do zmian kart i adresów. Wpis statyczny (w Linux z flagą nud permanent, w Windows poleceniem arp -s) nie wygasa i nie podlega nadpisaniu ruchem dynamicznym, dlatego stosuje się go do ochrony bramy i serwerów kosztem trudniejszego skalowania.
Wpisy ARP
23/51
ARP w działaniu – analiza tcpdump
Cel slajdu: Slajd uczy przechwytywania ruchu ARP programem tcpdump oraz filtrowania zapytań i odpowiedzi na podstawie pola kodu operacji.

Przechwytywanie i analiza pakietów ARP w czasie rzeczywistym

  • Podstawowe polecenia diagnostyczne:
    • Przechwytywanie z nagłówkami L2: sudo tcpdump -i eth0 -e -nn arp
    • Szczegółowy podgląd pól ARP: sudo tcpdump -i eth0 -v -nn arp
    • Filtrowanie wyłącznie zapytań (Opcode=1): sudo tcpdump -i eth0 -nn 'arp[6:2] = 1'
    • Filtrowanie wyłącznie odpowiedzi (Opcode=2): sudo tcpdump -i eth0 -nn 'arp[6:2] = 2'
$ sudo tcpdump -i eth0 -e -nn arp
12:34:56.789012 08:00:27:8f:22:60 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42:
    Request who-has 192.168.1.10 tell 192.168.1.1, length 28
12:34:56.789456 74:d4:35:e0:b4:7e > 08:00:27:8f:22:60, ethertype ARP (0x0806), length 42:
    Reply 192.168.1.10 is-at 74:d4:35:e0:b4:7e, length 28

Wyjaśnienie: Opcja -e nakazuje wyświetlenie adresów MAC nagłówka Ethernet, a -nn wyłącza rozwiązywanie nazw domenowych i portów, co zapobiega opóźnieniom diagnostycznym.

Filtr BPF dla ARP (ang. BPF filter for ARP): Filtr BPF (Berkeley Packet Filter) to wyrażenie kompilowane do kodu jądra, odrzucające niepasujące pakiety już na poziomie sterownika karty. Dla ARP kluczowe jest pole kodu operacji na przesunięciu 6 bajtów od początku nagłówka (arp[6:2]), gdzie wartość 1 oznacza zapytanie, a 2 oznacza odpowiedź, natomiast opcje -e i -nn kontrolują pokazywanie adresów MAC oraz wyłączają wolne rozwiązywanie nazw.
tcpdump ARP
24/51
ARP Poisoning – zasada ataku
Cel slajdu: Slajd wyjaśnia istotę ataku zatruwania tablicy ARP oraz jego skutki dla poufności i integralności ruchu w sieci lokalnej.

Mechanizm ataku zatruwania tablicy ARP (ARP Spoofing)

  • Istota podatności: protokół ARP jest bezstanowy (stateless) – większość systemów operacyjnych aktualizuje swoją tablicę ARP po odebraniu pakietu ARP Reply, nawet jeśli wcześniej nie wysyłało żadnego zapytania!
  • Przebieg ataku w trzech krokach:
    • 1. Atakujący wysyła sfałszowany pakiet ARP Reply do ofiary: „Adres IP bramy (np. 192.168.1.1) znajduje się pod moim adresem MAC”
    • 2. Równolegle wysyła sfałszowany pakiet ARP Reply do bramy sieciowej: „Adres IP ofiary (np. 192.168.1.10) znajduje się pod moim adresem MAC”
    • 3. Tablice ARP obu węzłów zostają zatrute – cały dwukierunkowy ruch sieciowy trafia do komputera atakującego
  • Konsekwencje: podsłuch niezaszyfrowanych danych (sniffing), modyfikacja pakietów w locie, wstrzyknięcie złośliwego kodu, atak odmowy usługi (DoS)
  • Odpowiedzialność karna: art. 267 k.k. (nieuprawnione uzyskanie informacji), art. 268a k.k. (naruszenie integralności danych) oraz art. 269b k.k. (używanie narzędzi hakerskich)
Zatruwanie ARP (ang. ARP poisoning / spoofing): Zatruwanie ARP wykorzystuje bezstanowość protokołu: większość systemów aktualizuje tablicę po odebraniu odpowiedzi, nawet bez wcześniejszego zapytania. Atakujący wysyła sfałszowane odpowiedzi do ofiary i do bramy, podstawiając własny adres MAC pod cudze adresy IP, a następnie przekazuje ruch dalej (wymagane przekazywanie IP), co daje pozycję pośrednika (Man-in-the-Middle) do podsłuchu, modyfikacji albo blokady (narzędzia laboratoryjne: arpspoof, ettercap, bettercap).
ARP Poisoning
25/51
ARP Poisoning – zapobieganie i ochrona
Cel slajdu: Slajd przedstawia sprzętowe i konfiguracyjne metody ochrony przed zatruwaniem ARP w przełącznikach zarządzalnych.

Zaawansowane mechanizmy ochrony infrastruktury przełączanej

  • Dynamic ARP Inspection (DAI):
    • Funkcjonalność przełączników zarządzalnych L2/L3 (Cisco, HPE, MikroTik, Juniper)
    • Przełącznik przechwytuje każdy pakiet ARP na portach nietolerowanych (untrusted) i weryfikuje jego poprawność przed przekazaniem
    • Niezgodne lub sfałszowane pakiety ARP są natychmiast odrzucane, a incydent jest logowany
  • DHCP Snooping:
    • Fundament dla działania DAI – przełącznik monitoruje wymianę komunikatów DHCP i tworzy zaufaną bazę DHCP Snooping Binding Database (mapowanie: MAC ↔ IP ↔ port ↔ VLAN)
  • Statyczne wpisy ARP:
    • Ręczne wiązanie adresów na kluczowych serwerach i węzłach krytycznych
  • Segmentacja sieci i Private VLAN (PVLAN):
    • Izolacja portów w obrębie tego samego VLAN-u – stacje robocze nie mogą komunikować się bezpośrednio w L2
Inspekcja ARP (ang. Dynamic ARP Inspection, DAI): Inspekcja ARP to funkcja przełączników zarządzalnych weryfikująca każdy pakiet ARP na portach niezaufanych względem zaufanej bazy powiązań budowanej przez DHCP Snooping (mapowanie MAC, IP, port i VLAN). Pakiet niezgodny z bazą jest odrzucany i logowany, a uzupełnieniem są statyczne wpisy na serwerach, izolacja portów (Private VLAN) oraz ograniczanie tempa zapytań chroniące procesor przełącznika.
Zapobieganie ARP
26/51
Gratuitous ARP – samorzutne ogłoszenie
Cel slajdu: Slajd definiuje ogłoszenie samorzutne w protokole ARP oraz pokazuje jego rolę w wykrywaniu konfliktów i w klastrach wysokiej dostępności.

Specyfika i rola pakietów Gratuitous ARP (RFC 5227)

  • Definicja: pakiet ARP wysyłany przez urządzenie bez uprzedniego żądania, w którym adres źródłowy IP jest tożsamy z adresem docelowym IP (Sender IP = Target IP)
  • Występuje w dwóch odmianach (zgodnie ze standardem RFC 5227):
    • ARP Announcement (Request): zapytanie rozgłoszeniowe z pustym lub zerowym adresem MAC odbiorcy
    • Gratuitous ARP Reply: bezwarunkowa odpowiedź rozgłaszana do wszystkich węzłów (Target MAC = FF:FF:FF:FF:FF:FF)
  • Praktyczne zastosowania:
    • Wykrywanie konfliktów adresów (DAD – Duplicate Address Detection): jeśli nadejdzie odpowiedź, adres jest zajęty!
    • Klastry wysokiej dostępności (HA): protokoły VRRP, CARP, keepalived rozsyłają GARP po awarii węzła głównego, natychmiast przekierowując ruch do nowego routera
    • Aktualizacja tablic CAM przełączników po migracji maszyn wirtualnych (np. VMware vMotion)
  • Wektor zagrożenia: brak weryfikacji sprawia, że GARP jest najczęściej wykorzystywaną metodą ataku ARP Spoofing
Ogłoszenie samorzutne GARP (ang. Gratuitous ARP): Ogłoszenie samorzutne to pakiet ARP wysyłany bez żądania, w którym źródłowy i docelowy adres IP są tożsame, w odmianie zapytania (ARP Announcement) albo rozgłoszeniowej odpowiedzi, sformalizowane w RFC 5227. Służy do wykrywania konfliktu adresów (DAD), do natychmiastowego przekierowania ruchu po przełączeniu klastra (VRRP, CARP, keepalived) oraz do aktualizacji tablic CAM po migracji maszyn wirtualnych (np. vMotion), lecz z powodu braku weryfikacji jest też częstym wektorem podszywania.
Gratuitous ARP
27/51
Warstwa 3 – przypomnienie modelu IPv4
Cel slajdu: Slajd przypomina strukturę adresu IPv4, podział na część sieciową i hosta oraz zakresy adresów prywatnych i specjalnych.

Fundamenty adresowania logicznego IPv4 (RFC 791)

  • Struktura adresu: 32 bity, zapis kropkowo-dziesiętny (4 oktety), np. 192.168.1.1
  • Podział na część sieciową (Network ID) i część hosta (Host ID) wyznaczany przez maskę podsieci
  • Bezklasowe trasowanie CIDR (Classless Inter-Domain Routing, RFC 1519) – zapis prefiksowy, np. /24 = 255.255.255.0
  • Specjalne adresy w podsieci:
    • Adres sieci: wszystkie bity części hosta równe 0 (np. 192.168.1.0/24)
    • Adres rozgłoszeniowy (Directed Broadcast): wszystkie bity części hosta równe 1 (np. 192.168.1.255/24)
  • Pule adresów prywatnych (RFC 1918 – nieroutowane w globalnym Internecie):
    • Klasa A: 10.0.0.0/8 (od 10.0.0.0 do 10.255.255.255)
    • Klasa B: 172.16.0.0/12 (od 172.16.0.0 do 172.31.255.255)
    • Klasa C: 192.168.0.0/16 (od 192.168.0.0 do 192.168.255.255)
  • Pula pętli zwrotnej (Loopback): 127.0.0.0/8 (RFC 1122), pula link-local APIPA: 169.254.0.0/16 (RFC 3927)
Adres IPv4 (ang. IPv4 address): Adres IPv4 to 32-bitowy identyfikator logiczny zapisywany kropkowo-dziesiętnie, dzielony maską na część sieciową i część hosta, z bezklasowym zapisem prefiksowym CIDR (RFC 1519). W podsieci wyróżnia się adres sieci (bity hosta równe 0) i adres rozgłoszeniowy (bity hosta równe 1), a do użytku prywatnego bez trasowania w Internecie przeznaczono zakresy RFC 1918 (10/8, 172.16/12, 192.168/16) oraz pętle 127/8 i łącza lokalne 169.254/16.
IPv4 przypomnienie
28/51
Nagłówek IPv4 – kluczowe pola
Cel slajdu: Slajd rozkłada nagłówek IPv4 na pola oraz wskazuje te, które decydują o fragmentacji, czasie życia i demultipleksacji do protokołu wyższego.

Architektura nagłówka pakietu IPv4 (RFC 791)

  • Wersja (Version, 4 bity): wartość 4 dla pakietów IPv4
  • IHL (Internet Header Length, 4 bity): długość nagłówka w słowach 32-bitowych (min. 5 = 20 bajtów, maks. 15 = 60 bajtów)
  • DSCP / ECN (1 bajt): klasyfikacja jakości usług (QoS) oraz jawne powiadamianie o przeciążeniu
  • Total Length (16 bitów): całkowita długość pakietu (nagłówek + dane), maksymalnie 65 535 bajtów
  • Identyfikacja, Flagi, Fragment Offset (łącznie 4 bajty): mechanizm fragmentacji pakietów IP:
    • Flaga DF (Don't Fragment): zakaz dzielenia pakietu na trasie (kluczowa dla PMTUD)
    • Flaga MF (More Fragments): informacja o kolejnych fragmentach datagramu
  • TTL (Time To Live, 8 bitów): licznik przeskoków przez routery zapobiegający pętlom routingu
  • Protocol (8 bitów): identyfikator protokołu warstwy wyższej (1=ICMP, 6=TCP, 17=UDP)
  • Header Checksum (16 bitów): suma kontrolna samego nagłówka (weryfikowana i przeliczana na każdym routerze!)
  • Adresy IP (źródłowy i docelowy): po 32 bity (4 bajty) każdy
Nagłówek IPv4 (ang. IPv4 header): Nagłówek IPv4 ma zmienną długość od 20 do 60 bajtów zależną od pola IHL i opcji, co wymusza analizę długości przed przetwarzaniem i obniża wydajność routingu sprzętowego. Zawiera wersję, długość całkowitą, pola fragmentacji z flagami DF i MF, czas życia TTL, identyfikator protokołu, sumę kontrolną przeliczaną na każdym routerze oraz adresy źródłowy i docelowy (specyfikacja: RFC 791).
Nagłówek IPv4
29/51
TTL w praktyce diagnostycznej
Cel slajdu: Slajd pokazuje, jak wartość czasu życia pakietu służy do zapobiegania pętlom oraz do wstępnego wnioskowania o systemie i odległości celu.

Czas życia pakietu (Time To Live) jako narzędzie analizy

  • Podstawowa funkcja: eliminacja pakietów krążących w nieskończoność w wyniku błędów trasowania (pętli routingu)
  • Każdy router przekazujący pakiet ma obowiązek zmniejszyć wartość pola TTL o co najmniej 1
  • Gdy wartość TTL spadnie do 0, router bezwzględnie niszczy pakiet i odsyła do nadawcy komunikat ICMP Time Exceeded (Type 11, Code 0)
  • Domyślne wartości początkowe TTL w systemach operacyjnych:
    • Systemy Linux / Android: 64
    • Systemy Windows: 128
    • Urządzenia sieciowe (Cisco IOS, RouterOS): 255 dla pakietów protokołów routingu, 64 dla zwykłego ruchu generowanego
  • Wnioskowanie diagnostyczne:
    • Jeżeli odpowiedź z hosta odległego ma ttl=53, to prawdopodobnie wysłał ją serwer Linux oddalony o 64 - 53 = 11 przeskoków (hopów)
    • Jeżeli odpowiedź ma ttl=117, to jest to stacja Windows oddalona o 128 - 117 = 11 przeskoków
Czas życia pakietu TTL (ang. Time To Live): Czas życia to 8-bitowe pole nagłówka IPv4 zmniejszane co najmniej o 1 na każdym routerze; po osiągnięciu 0 pakiet jest niszczony, a nadawca otrzymuje komunikat ICMP Time Exceeded (typ 11, kod 0). Typowe wartości początkowe (Linux 64, Windows 128, urządzenia sieciowe 255) pozwalają oszacować liczbę przeskoków i wstępnie rozpoznać system (OS fingerprinting), z zastrzeżeniem modyfikacji przez NAT, VPN i reguły zapory.
TTL diagnostyka
30/51
Pole Protocol w nagłówku IPv4
Cel slajdu: Slajd wyjaśnia rolę pola protokołu w demultipleksacji danych oraz jego wykorzystanie w filtrowaniu ruchu i regułach zapory.

Identyfikacja protokołu wyższej warstwy i filtrowanie

  • 8-bitowe pole w nagłówku IPv4 informujące jądro systemu odbiorczego, jakiemu modułowi programowemu przekazać dane po zdekapsulowaniu
  • Oficjalny rejestr prowadzony przez organizację IANA (Internet Assigned Numbers Authority)
  • Kluczowe wartości protokołów:
    • 1 – ICMP (Internet Control Message Protocol)
    • 2 – IGMP (Internet Group Management Protocol)
    • 6 – TCP (Transmission Control Protocol)
    • 17 – UDP (User Datagram Protocol)
    • 47 – GRE (Generic Routing Encapsulation)
    • 50 / 51 – ESP / AH (Protokoły szyfrowania i integralności IPsec)
    • 89 – OSPF (Open Shortest Path First)
  • W protokole IPv6 analogiczną funkcję pełni pole Next Header
# Przechwytywanie ruchu w tcpdump na podstawie protokołu L4:
$ sudo tcpdump -i eth0 icmp        # Pakiety protokołu ICMP (wartość 1)
$ sudo tcpdump -i eth0 tcp         # Segmenty protokołu TCP (wartość 6)
$ sudo tcpdump -i eth0 udp         # Datagramy protokołu UDP (wartość 17)
Pole Protocol (ang. Protocol field): Pole Protocol to 8-bitowy identyfikator w nagłówku IPv4 wskazujący moduł protokołu wyższej warstwy, któremu jądro ma przekazać ładunek po zdekapsulowaniu (rejestr prowadzi IANA). Wartości obejmują między innymi 1 (ICMP), 2 (IGMP), 6 (TCP), 17 (UDP), 47 (GRE), 50 i 51 (IPsec ESP i AH) oraz 89 (OSPF), a w IPv6 odpowiednikiem jest pole Next Header.
Pole Protocol
31/51
IPv6 – ewolucja i nowe podejście
Cel slajdu: Slajd przedstawia założenia protokołu IPv6, w tym ogromną przestrzeń adresową, rezygnację z rozgłoszenia oraz autokonfigurację bezstanową.

Architektura protokołu IPv6 (standard RFC 8200 / STD 86)

  • Przestrzeń adresowa: 128 bitów (16 bajtów) zapisywanych szesnastkowo w postaci 8 grup po 4 cyfry (hekstetów), np. 2001:0db8:85a3:0000:0000:8a2e:0370:7334 → w formie skróconej: 2001:db8:85a3::8a2e:370:7334
  • Rozmiar puli: 2128 ≈ 3,4 × 1038 adresów (ponad 667 tryliardów adresów na każdy milimetr kwadratowy powierzchni Ziemi!)
  • Zasada end-to-end: powrót do bezpośredniej łączności między stacjami bez konieczności stosowania translacji NAT (aczkolwiek techniki takie jak NPTv6 wg RFC 6296 czy NAT64/DNS64 wg RFC 6146 istnieją do celów migracyjnych i redundancji)
  • Całkowita eliminacja broadcastu: zastąpiony wyspecjalizowanymi grupami multicastowymi oraz anycastem
  • Autokonfiguracja bezstanowa SLAAC (RFC 4862): stacja konfiguruje adresy w oparciu o ogłoszenia routerów bez konieczności instalowania serwera DHCP
Protokół IPv6 (ang. Internet Protocol version 6): Protokół IPv6, sfinalizowany jako pełny standard STD 86 w dokumencie RFC 8200 (lipiec 2017 roku), używa 128-bitowych adresów zapisywanych w ośmiu grupach szesnastkowych z dopuszczalnym skracaniem zer. Upraszcza pracę routerów (stały nagłówek, brak sumy L3, brak fragmentacji tranzytowej), przywraca zasadę łączności końcowej bez NAT oraz wprowadza autokonfigurację SLAAC (RFC 4862) i zintegrowane mechanizmy IPsec i mobilności.
IPv6
32/51
Porównanie nagłówków IPv4 i IPv6
Cel slajdu: Slajd porównuje nagłówki IPv4 i IPv6 pod kątem długości, sumy kontrolnej, fragmentacji oraz obsługi opcji.

Zestawienie struktur nagłówków warstwy sieciowej

CechaNagłówek IPv4 (RFC 791)Nagłówek IPv6 (RFC 8200)
Rozmiar nagłówka bazowegoZmienny: od 20 do 60 bajtów (pole IHL)Stały: dokładnie 40 bajtów (szybkie przetwarzanie w ASIC)
Długość adresu32 bity (4 bajty)128 bitów (16 bajtów)
Suma kontrolna nagłówkaObecna (Header Checksum – przeliczana na każdym skoku)Brak (integralność zapewniana przez warstwy L2 i L4)
Fragmentacja pakietówWykonywana u nadawcy lub przez routery tranzytoweWyłącznie u źródła (nagłówek rozszerzenia Fragment Header)
Czas życia pakietuPole TTL (Time To Live, 8 bitów)Pole Hop Limit (8 bitów)
Transmisja rozgłoszeniowaNatywny Broadcast (np. 255.255.255.255)Całkowity brak (zastąpiony przez Multicast i Anycast)
Obsługa opcjiPola opcjonalne w nagłówku głównymNagłówki rozszerzeń (Extension Headers) w łańcuchu Next Header
Nagłówek IPv6 (ang. IPv6 header): Nagłówek bazowy IPv6 ma stałą długość 40 bajtów, co umożliwia szybkie przetwarzanie w układach ASIC bez analizy przesunięć, mimo czterokrotnie dłuższych adresów. Zrezygnowano z sumy kontrolnej warstwy sieciowej (integralność zapewniają suma FCS ramki i sumy TCP/UDP, przy czym suma UDP w IPv6 jest obowiązkowa) oraz z fragmentacji tranzytowej, przenosząc opcje do łańcucha nagłówków rozszerzeń wskazywanego polem Next Header.
Porównanie nagłówka
33/51
Adresy łącza lokalnego w IPv6 (Link-Local)
Cel slajdu: Slajd wyjaśnia przeznaczenie adresów łącza lokalnego oraz konieczność podawania identyfikatora interfejsu przy ich użyciu.

Specyfika adresów Link-Local (prefiks fe80::/10, RFC 4291)

  • Adres generowany i konfigurowany automatycznie na każdym aktywnym interfejsie IPv6
  • Zasięg obowiązywania: wyłącznie lokalny segment łącza (L2) – routery bezwzględnie nie przekazują pakietów z adresem link-local poza lokalną domenę rozgłoszeniową
  • Blok adresowy: fe80::/10 (w praktyce interfejsy otrzymują prefiks fe80::/64)
  • Metody tworzenia identyfikatora interfejsu (Interface ID – 64 bity):
    • Metoda EUI-64 (historyczna): rozcięcie adresu MAC na pół, wstawienie FF:FE w środku i zanegowanie bitu U/L
    • Metoda stabilna / prywatna (RFC 7217 / RFC 4941): generowanie pseudolosowe chroniące prywatność użytkownika (standard w Windows i nowoczesnym Linux)
  • Identyfikator strefy (Zone Index / Scope ID): niezbędny przy adresowaniu link-local:
    • Linux: ping -6 fe80::1%eth0
    • Windows: ping fe80::1%12 (gdzie 12 to numer interfejsu)
$ ip -br -6 addr show dev enp0s3
enp0s3 UP fe80::a00:27ff:fe8f:2260/64 fd00::a00:27ff:fe8f:2260/64
Adres łącza lokalnego (ang. link-local address): Adres łącza lokalnego z zakresu fe80::/10 (w praktyce fe80::/64) jest konfigurowany automatycznie na każdym aktywnym interfejsie IPv6 i obowiązuje tylko w segmencie łącza, bez przekazywania przez routery (RFC 4291). Identyfikator interfejsu powstaje historycznie metodą EUI-64 albo nowocześnie metodą stabilną i prywatną (RFC 7217, RFC 4941), a przy łączeniu trzeba wskazać strefę (indeks po znaku procenta, np. fe80::1%eth0).
Link-local IPv6
34/51
Protokół NDP – Neighbor Discovery Protocol
Cel slajdu: Slajd omawia protokół wykrywania sąsiadów w IPv6 oraz cztery typy komunikatów odpowiadających za adresację i konfigurację.

Wykrywanie sąsiadów w IPv6 w oparciu o ICMPv6 (RFC 4861)

  • Zastępuje przestarzały protokół ARP, mechanizmy ICMP Router Discovery oraz ICMP Redirect z IPv4
  • Działa całkowicie w oparciu o komunikaty protokołu ICMPv6 (zamiast dedykowanego typu ramki):
    • Neighbor Solicitation (NS, typ 135) – odpowiednik ARP Request; zapytanie o adres fizyczny sąsiada lub badanie unikalności adresu (DAD)
    • Neighbor Advertisement (NA, typ 136) – odpowiednik ARP Reply; ogłoszenie własnego adresu MAC w odpowiedzi na NS lub samorzutnie
    • Router Solicitation (RS, typ 133) – zapytanie stacji kierowane do wszystkich lokalnych routerów z prośbą o przesłanie parametrów sieci
    • Router Advertisement (RA, typ 134) – okresowe ogłoszenie routera zawierające prefiksy sieciowe, serwery DNS, MTU i flagi konfiguracji (SLAAC / DHCPv6)
  • Bezpieczeństwo: protokół SEND (Secure Neighbor Discovery, RFC 3971) oraz technologia sprzętowa RA Guard (RFC 6105) w przełącznikach L2
Protokół NDP (ang. Neighbor Discovery Protocol): Protokół NDP (RFC 4861) zastępuje ARP, wykrywanie routerów i przekierowania ICMP z IPv4, działając w oparciu o komunikaty ICMPv6: zapytanie o sąsiada NS (typ 135), ogłoszenie sąsiada NA (typ 136), zapytanie o router RS (typ 133) oraz ogłoszenie routera RA (typ 134) z prefiksami, DNS, MTU i flagami SLAAC albo DHCPv6. Bezpieczeństwo wzmacniają protokół SEND (RFC 3971) i funkcja przełączników RA Guard (RFC 6105).
NDP
35/51
IPv6 – całkowita eliminacja broadcastu
Cel slajdu: Slajd tłumaczy, w jaki sposób ukierunkowany multicast zastępuje rozgłoszenie i odciąża karty oraz procesory stacji.

Przejście od zjawiska zalewania do ukierunkowanego multicastu

  • W specyfikacji IPv6 nie istnieje pojęcie adresu rozgłoszeniowego (Broadcast)
  • Zastąpienie broadcastu ukierunkowaną transmisją grupową (Multicast, prefiks ff00::/8):
    • ff02::1 – All-Nodes Multicast (wszystkie aktywne węzły w łączu; odpowiednik broadastu, lecz ograniczony regułami MLD)
    • ff02::2 – All-Routers Multicast (wszystkie routery w segmencie łącza lokalnego)
    • ff02::1:ffxx:xxxx – Solicited-Node Multicast (specjalna grupa tworzona z prefiksu ff02::1:ff00:0/104 oraz ostatnich 24 bitów adresu IPv6 stacji)
  • Korzyści inżynierskie:
    • Karty sieciowe sprzętowo filtrują pakiety w filtrze odbiorczym MAC – procesor stacji nie jest wybudzany przerwaniami przy zapytaniach o inne urządzenia
    • Przełączniki L2 z funkcją MLD Snooping kierują ruch wyłącznie do zainteresowanych portów
Multicast zamiast broadcastu (ang. multicast in place of broadcast): W IPv6 nie istnieje adres rozgłoszeniowy; jego funkcje przejmuje multicast z prefiksem ff00::/8, w tym grupy wszystkich węzłów (ff02::1), wszystkich routerów (ff02::2) oraz wybranego węzła (Solicited-Node, ff02::1:ff00:0/104 plus 24 bity adresu). Zapytanie o adres MAC trafia na sprzętowo filtrowany adres grupowy wyliczony z końcówki adresu, więc budzi przerwanie tylko u poszukiwanego odbiorcy, a przełączniki z MLD Snooping przekazują je wyłącznie do zainteresowanych portów.
Brak broadcastu IPv6
36/51
Sprawdzanie konfiguracji IPv4 i IPv6
Cel slajdu: Slajd zestawia polecenia weryfikacji konfiguracji adresowej w trybie podwójnego stosu w systemach Linux, Windows i RouterOS.

Narzędzia weryfikacji stosu IP w systemach operacyjnych

  • System Linux (pakiet iproute2):
    • Tylko IPv4 (widok zwięzły): ip -br -4 addr
    • Tylko IPv6 (widok zwięzły): ip -br -6 addr
    • Kompleksowy stan interfejsów: ip addr show dev eth0
  • System Windows (CMD oraz PowerShell):
    • Klasyczne zestawienie: ipconfig /all
    • Nowoczesna konsola PowerShell: Get-NetIPAddress | Select-Object InterfaceAlias, IPAddress, PrefixLength, AddressFamily
  • MikroTik RouterOS:
    • Konfiguracja IPv4: /ip address print
    • Konfiguracja IPv6: /ipv6 address print
$ ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128
enp0s3           UP             192.168.1.10/24 fe80::a00:27ff:fe8f:2260/64 2001:db8::10/64
Tryb podwójnego stosu (ang. dual-stack): Tryb podwójnego stosu oznacza równoległą obsługę IPv4 i IPv6 na jednym interfejsie, wymaganą w okresie migracji i standardową w nowych systemach. Weryfikacja obejmuje zwięzłe widoki dla każdej rodziny (ip -4 i ip -6, Get-NetIPAddress, /ip address i /ipv6 address), przy czym w sieciach dostępowych IPv6 zaleca się prefiks /64 dla podsieci końcowych, wymagany przez mechanizm SLAAC zgodnie z RFC 5375.
Konfiguracja IP
37/51
Protokół ICMP – wprowadzenie i rola
Cel slajdu: Slajd wprowadza protokół ICMP jako układ sygnalizacji błędów i diagnostyki integralnie związany z protokołem IP.

Sterowanie i diagnostyka w warstwie sieciowej (RFC 792)

  • ICMP (Internet Control Message Protocol): zdefiniowany w standardzie RFC 792 (STD 5, 1981 r.)
  • Protokół pomocniczy warstwy sieciowej (L3) – integralna część protokołu IP
  • Enkapsulacja: datagramy ICMP są umieszczane bezpośrednio wewnątrz pakietów IP (pole Protocol = 1 w nagłówku IPv4)
  • Brak portów transportowych: protokół ICMP nie jest protokołem warstwy 4 (nie posiada portów TCP ani UDP); rodzaj wiadomości identyfikują pola Type (Typ) oraz Code (Kod)
  • Zastosowanie:
    • Raportowanie błędów w trasowaniu i dostarczaniu pakietów (np. węzeł nieosiągalny, bufor przepełniony)
    • Diagnostyka łączności sieciowej (narzędzia ping, traceroute, mtr)
    • Sterowanie przepływem i optymalizacja trasowania (ICMP Redirect)
  • Standard RFC 1122 nakazuje pełną implementację protokołu ICMP w każdym węźle sieci IP
Protokół ICMP (ang. Internet Control Message Protocol): Protokół ICMP (RFC 792, STD 5, rok 1981) jest pomocniczym protokołem warstwy sieciowej przenoszonym bezpośrednio w pakietach IP (pole Protocol równe 1), bez portów transportowych; rodzaj wiadomości określają pola Typ i Kod. Służy do raportowania błędów trasowania, diagnostyki łączności (ping, traceroute, mtr) i sterowania przepływem (Redirect), a pełna implementacja jest wymagana w każdym węźle IP zgodnie z RFC 1122.
ICMP
38/51
Klasyfikacja typów i kodów ICMP
Cel slajdu: Slajd klasyfikuje najważniejsze typy i kody komunikatów ICMP oraz wskazuje ich zastosowanie diagnostyczne.

Najważniejsze komunikaty protokołu ICMPv4 (RFC 792)

Typ (Type)Kod (Code)Nazwa komunikatuFunkcja i interpretacja diagnostyczna
00Echo ReplyOdpowiedź na zapytanie ping (sukces łączności)
80Echo RequestZapytanie testowe wysyłane przez narzędzie ping
30 – 15Destination UnreachableKomunikat o niemożności dostarczenia pakietu do celu
110 – 1Time ExceededPrzekroczenie limitu czasu: kod 0 = TTL=0 w tranzycie (traceroute)
50 – 3RedirectPoinformowanie hosta o lepszej trasie lokalnej (routerze)
120 – 2Parameter ProblemBłąd strukturalny w nagłówku pakietu IP (np. błędna opcja)
40Source QuenchHistoryczny mechanizm kontroli przeciążenia (wycofany przez RFC 6633)
Typy i kody ICMP (ang. ICMP types and codes): Komunikaty ICMP dzielą się na zapytania informacyjne (np. Echo Request 8 i Echo Reply 0) oraz komunikaty o błędach (np. Destination Unreachable 3, Time Exceeded 11, Redirect 5, Parameter Problem 12), przy czym pole Typ określa klasę zdarzenia, a pole Kod jego przyczynę. Historyczny mechanizm Source Quench (typ 4) wycofano w RFC 6633 na rzecz kontroli przeciążenia w warstwie transportowej i pola ECN.
Typy ICMP
39/51
Diagnostyka łączności – narzędzie ping
Cel slajdu: Slajd wyjaśnia zasadę działania narzędzia ping oraz interpretację czasu obiegu, strat i rozrzutu opóźnień.

Zasada działania i zaawansowana analiza wyników ping

  • Narzędzie diagnostyczne stworzone przez Mike'a Muussa w 1983 roku
  • Mechanizm: wysłanie datagramu ICMP Echo Request (Typ 8) i oczekiwanie na ICMP Echo Reply (Typ 0)
  • Kluczowe wskaźniki diagnostyczne:
    • RTT (Round Trip Time): czas obiegu pakietu w obie strony (w milisekundach)
    • Packet Loss (utrata pakietów): w stabilnej sieci LAN strata powinna wynosić bezwzględnie 0% (w WAN dopuszcza się < 1%)
    • mdev / jitter: odchylenie standardowe czasu RTT – duża fluktuacja świadczy o niestabilności łącza lub buforowaniu (bufferbloat)
$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=12.1 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=18.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=13.2 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 12.115/14.075/18.720/2.724 ms
Narzędzie ping (ang. ping utility): Narzędzie ping, utworzone przez Mikea Muussa w 1983 roku, wysyła komunikat ICMP Echo Request (typ 8) i mierzy odpowiedź Echo Reply (typ 0), raportując czas obiegu RTT, procent strat oraz rozrzut (mdev, jitter). W Linux domyślny ładunek 56 bajtów wraz z nagłówkami daje 84 bajty na poziomie L3, a wysoki rozrzut przy niskiej średniej wskazuje na niestabilność łącza (bufferbloat), szkodliwą dla usług czasu rzeczywistego, takich jak VoIP i wideokonferencje.
Ping
40/51
Komunikaty Destination Unreachable (ICMP Type 3)
Cel slajdu: Slajd uczy rozróżniania kodów komunikatu o nieosiągalności celu oraz ich znaczenia dla lokalizacji usterki.

Szczegółowa analiza kodów błędów osiągalności celu

  • Generowany przez router lub hosta docelowego w przypadku braku możliwości dostarczenia datagramu IP
  • Najważniejsze kody błędu (Code):
    • Code 0: Net Unreachable – router nie posiada w tablicy routingu trasy do wskazanej sieci
    • Code 1: Host Unreachable – brama lokalna nie otrzymała odpowiedzi ARP z poszukiwanego adresu IP (urządzenie wyłączone lub odłączone od LAN)
    • Code 2: Protocol Unreachable – system operacyjny odbiorcy nie obsługuje wskazanego protokołu L4
    • Code 3: Port Unreachable – pakiet dotarł do odbiorcy, lecz na wskazanym porcie UDP nie nasłuchuje żadna usługa
    • Code 4: Fragmentation Needed and DF set – pakiet przekracza MTU łącza, a flaga Don't Fragment zabrania podziału (fundament mechanizmu PMTUD wg RFC 1191)
    • Code 9 / 10 / 13: Administratively Prohibited – ruch zablokowany przez zaporę sieciową lub listę ACL
$ ping 192.168.1.200
From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
# Router bramy informuje: brak wpisu w tablicy ARP dla 192.168.1.200
Komunikat Destination Unreachable (ang. Destination Unreachable message): Komunikat Destination Unreachable (ICMP typ 3) jest generowany przez router albo hosta docelowego, gdy dostarczenie datagramu jest niemożliwe, a kod precyzuje przyczynę: brak trasy (0), brak odpowiedzi ARP (1), nieobsługiwany protokół (2), zamknięty port UDP (3), potrzeba fragmentacji przy fladze DF (4, fundament PMTUD z RFC 1191) albo blokada administracyjna (9, 10, 13). Każdy raport błędu zawiera nagłówek IP i początek oryginalnego pakietu, co pozwala powiązać problem z konkretnym połączeniem.
Destination Unreachable
41/51
Time Exceeded (Typ 11) i mechanizm traceroute
Cel slajdu: Slajd pokazuje, jak celowe wywoływanie wygaśnięcia czasu życia pozwala odwzorować trasę pakietów narzędziem traceroute.

Przekroczenie limitu czasu życia pakietu w diagnostyce trasy

  • Komunikat ICMP Type 11 generowany jest w dwóch sytuacjach:
    • Code 0: Time to Live exceeded in Transit – wartość pola TTL w nagłówku IPv4 (lub Hop Limit w IPv6) osiągnęła 0 podczas przekazywania przez router
    • Code 1: Fragment Reassembly Time Exceeded – upłynął limit czasu oczekiwania na brakujące fragmenty podzielonego datagramu IP u odbiorcy
  • Zasada działania narzędzia traceroute:
    • Wysyłanie serii pakietów z inkrementowaną wartością TTL: TTL=1, TTL=2, TTL=3...
    • Kolejne routery na trasie odrzucają pakiety i odsyłają komunikat ICMP Time Exceeded (Type 11), ujawniając swój adres IP i czas odpowiedzi
  • Różnice implementacyjne w systemach:
    • Linux (traceroute): domyślnie wysyła datagramy UDP na wysokie porty (33434+); opcja -I wymusza ICMP Echo, a -T TCP SYN (port 80/443)
    • Windows (tracert): domyślnie wysyła pakiety ICMP Echo Request
    • Opcja przyspieszająca: -n (Linux) lub -d (Windows) wyłącza powolne zapytania rDNS
$ traceroute -n 8.8.8.8
 1  192.168.1.1   0.452 ms   0.381 ms   0.312 ms
 2  10.20.0.1    2.814 ms   2.750 ms   2.695 ms
 3  83.0.0.1     8.120 ms   8.055 ms   7.990 ms
 4  * * *        # Router nie odsyła ICMP (filtr na firewallu)
 5  72.14.215.85 15.412 ms  15.340 ms  15.280 ms
 6  8.8.8.8      12.850 ms  12.790 ms  12.710 ms
Narzędzie traceroute (ang. traceroute utility): Narzędzie traceroute, opracowane przez Vana Jacobsona w 1988 roku, wysyła serię pakietów z rosnącym TTL (1, 2, 3) i zbiera odpowiedzi ICMP Time Exceeded (typ 11) od kolejnych routerów, ujawniając ich adresy i czasy. Implementacje różnią się sondami (Linux domyślnie UDP na porty 33434 i wyższe, Windows tracert domyślnie ICMP Echo), a zakończenie w Linux sygnalizuje odpowiedź Port Unreachable od celu; opcje -n i -d wyłączają wolne zapytania rDNS.
Time Exceeded
42/51
Komunikaty ICMP Redirect (Type 5)
Cel slajdu: Slajd omawia przeznaczenie komunikatów przekierowania oraz zalecane wyłączenie ich akceptacji ze względów bezpieczeństwa.

Optymalizacja routingu lokalnego a bezpieczeństwo sieci

  • Przeznaczenie: router informuje stację nadawczą o istnieniu bardziej optymalnej (krótszej) trasy lokalnej do wybranego celu
  • Warunek wystąpienia:
    • Host wysyła pakiet do routera R1 jako bramy domyślnej
    • Router R1 stwierdza w swojej tablicy routingu, że pakiet powinien zostać przekazany do routera R2
    • Zarówno stacja nadawcza, jak i router R2 znajdują się w tej samej podsieci IP (w tym samym segmencie L2)
    • Router R1 przesyła pakiet do R2, a do hosta odsyła ICMP Redirect (Type 5) z adresem R2
  • Zagrożenie bezpieczeństwa:
    • Atak ICMP Redirect – złośliwy węzeł rozsyła fałszywe komunikaty Redirect, przekierowując ruch ofiary przez swój komputer (atak MitM)
  • Zalecana konfiguracja obronna w Linux:
# Blokada akceptowania komunikatów ICMP Redirect w systemie:
$ sudo sysctl -w net.ipv4.conf.all.accept_redirects=0
$ sudo sysctl -w net.ipv4.conf.default.accept_redirects=0
$ sudo sysctl -w net.ipv6.conf.all.accept_redirects=0
Komunikat ICMP Redirect (ang. ICMP Redirect message): Komunikat Redirect (ICMP typ 5) pozwala routerowi wskazującemu bramę domyślną poinformować hosta o krótszej trasie przez inny router w tej samej podsieci, po czym host dopisuje tymczasową trasę. Z powodu braku uwierzytelniania komunikat jest wektorem ataku (fałszywe przekierowanie ruchu), dlatego serwery i stacje powinny odrzucać przekierowania (w Linux accept_redirects równe 0), a routery dostępowe zwykle wyłączają ich generowanie (w Cisco IOS polecenie no ip redirects).
ICMP Redirect
43/51
Protokół ICMP w IPv6 (ICMPv6)
Cel slajdu: Slajd przedstawia protokół ICMPv6 jako obowiązkowy element IPv6, integrujący diagnostykę, wykrywanie sąsiadów i wykrywanie MTU.

Ewolucja i kluczowe zmiany w ICMPv6 (standard RFC 4443)

  • Zdefiniowany w standardzie RFC 4443 (STD 89) – protokół obligatoryjny dla każdego poprawnego stosu IPv6 (wartość Next Header = 58)
  • Pełna integracja z mechanizmami sieciowymi: protokół NDP (odpowiednik ARP) oraz protokół MLD (zarządzanie grupami multicast) działają w oparciu o ICMPv6
  • Nowy, logiczny podział typów komunikatów:
    • Komunikaty o błędach (klasa 0 – 127): najstarszy bit równy 0:
      • Typ 1: Destination Unreachable
      • Typ 2: Packet Too Big (zastępuje ICMPv4 Type 3 Code 4 – kluczowy dla PMTUD w IPv6)
      • Typ 3: Time Exceeded (Hop Limit = 0)
      • Typ 4: Parameter Problem
    • Komunikaty informacyjne (klasa 128 – 255): najstarszy bit równy 1:
      • Typ 128: Echo Request / Typ 129: Echo Reply (narzędzie ping6)
      • Typy 133–137: komunikaty protokołu NDP (RS, RA, NS, NA, Redirect)
Protokół ICMPv6 (ang. ICMP version 6): Protokół ICMPv6 (RFC 4443, STD 89) jest obowiązkowy dla każdego stosu IPv6 (nagłówek następny równy 58) i scala diagnostykę z obsługą sąsiedztwa (NDP) oraz grup multicast (MLD). Typy dzielą się logicznie na błędy (0-127, w tym 1 Destination Unreachable, 2 Packet Too Big, 3 Time Exceeded, 4 Parameter Problem) i informacje (128-255, w tym 128 i 129 dla ping oraz 133-137 dla NDP), przy czym całkowite zablokowanie ICMPv6 paraliżuje SLAAC i NDP.
ICMPv6
44/51
Laboratorium: tcpdump – podstawy analizy ruchu
Cel slajdu: Slajd wprowadza podstawowe przechwytywanie ruchu programem tcpdump, w tym listę interfejsów oraz zapis i odczyt plików w formacie PCAP.

Praktyczne techniki przechwytywania ramek i pakietów

  • Narzędzie tcpdump – standardowy analizator pakietów w wierszu poleceń systemów uniksowych (oparty na bibliotece libpcap)
  • Podstawowe polecenia laboratoryjne:
    • Lista dostępnych interfejsów sieciowych: sudo tcpdump -D
    • Przechwycenie pierwszych 20 pakietów z wyłączeniem DNS: sudo tcpdump -i eth0 -nn -c 20
    • Zrzut surowego ruchu do pliku PCAP: sudo tcpdump -i eth0 -w /tmp/ruch_sieciowy.pcap
    • Odczyt i analiza zapisanego pliku zrzutu: sudo tcpdump -r /tmp/ruch_sieciowy.pcap -nn
    • Pełny podgląd nagłówków i ładunku szesnastkowo (ASCII + HEX): sudo tcpdump -i eth0 -nn -X -s 0
$ sudo tcpdump -D
1.enp0s3 [Up, Running, Connected]
2.br-lan [Up, Running, Connected]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.lo [Up, Running, Loopback]
Program tcpdump (ang. tcpdump packet analyzer): Program tcpdump to standardowy analizator pakietów wiersza poleceń systemów uniksowych, działający bezpośrednio na serwerze przez SSH przy minimalnym zużyciu zasobów. Podstawowe operacje to lista interfejsów (-D), przechwycenie liczby pakietów (-c), zapis surowego ruchu do pliku PCAP (-w) i jego późniejszy odczyt (-r) oraz pełny podgląd z ładunkiem (-X -s 0), przy czym opcja -nn wyłącza rozwiązywanie nazw i zapobiega generowaniu dodatkowego ruchu DNS.
tcpdump podstawy
45/51
Laboratorium: Zaawansowane filtry tcpdump
Cel slajdu: Slajd uczy precyzyjnego filtrowania ruchu wyrażeniami BPF, niezbędnego przy analizie łączy o dużej przepustowości.

Precyzyjne filtrowanie ruchu z wyrażeniami BPF (Berkeley Packet Filter)

  • Składnia filtrów BPF pozwala na selekcję ruchu według adresów, protokołów oraz bezpośrednio na podstawie wartości bajtów w nagłówku
  • Przykłady filtrów w ćwiczeniach laboratoryjnych:
    • Przechwytywanie wyłącznie ruchu ARP: sudo tcpdump -i eth0 -e -nn arp
    • Przechwytywanie wyłącznie zapytań ARP Request: sudo tcpdump -i eth0 -e -nn 'arp[6:2] = 1'
    • Przechwytywanie wyłącznie odpowiedzi ARP Reply: sudo tcpdump -i eth0 -e -nn 'arp[6:2] = 2'
    • Przechwytywanie komunikatów ICMP z wyłączeniem ping: sudo tcpdump -i eth0 -nn 'icmp and icmp[icmptype] != 8 and icmp[icmptype] != 0'
    • Przechwytywanie ruchu do konkretnego hosta: sudo tcpdump -i eth0 -nn host 192.168.1.10
    • Przechwytywanie ruchu z całej podsieci: sudo tcpdump -i eth0 -nn net 192.168.1.0/24
# Przechwytywanie zapytań ARP z adresem MAC nadawcy:
$ sudo tcpdump -i eth0 -e -nn 'arp[6:2] = 1'
12:34:56.102 08:00:27:8f:22:60 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42:
    Request who-has 192.168.1.10 tell 192.168.1.138, length 28
Wyrażenia BPF (ang. Berkeley Packet Filter expressions): Wyrażenia BPF są kompilowane do kodu wykonywanego w jądrze, dzięki czemu niepasujące pakiety są odrzucane już w sterowniku i nie obciążają przestrzeni użytkownika. Składnia z przesunięciem (pole [przesunięcie:długość]) odwołuje się do struktury ramki z RFC 826 (na przykład arp[6:2] dla kodu operacji ARP), a predefiniowane stałe (icmp, icmptype, host, net) ułatwiają filtrowanie po protokole, hoście i podsieci.
Filtry tcpdump
46/51
Laboratorium: Zaawansowana diagnostyka z ping
Cel slajdu: Slajd pokazuje procedurę wyznaczania MTU ścieżki poleceniem ping z wymuszoną flagą zakazu fragmentacji.

Procedura wyznaczania Path MTU i testy obciążeniowe

  • Procedura badania Path MTU (PMTUD) za pomocą ping:
    • Opcja -M do wymusza ustawienie flagi Don't Fragment (DF) w nagłówku IPv4
    • Opcja -s <rozmiar> definiuje rozmiar danych ładunku ICMP (bez nagłówków L3/L4)
    • Wzór na rozmiar pakietu IP: Rozmiar pakietu = Dane ICMP + 8 B (nagłówek ICMP) + 20 B (nagłówek IPv4)
    • Dla standardowego MTU 1500 bajtów maksymalny ładunek wynosi: 1500 - 28 = 1472 bajty:
# Testowanie MTU 1500 bajtów:
$ ping -M do -s 1472 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 1472(1500) bytes of data.
1480 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.5 ms

# W przypadku łącza z tunelem (np. GRE / IPsec o MTU = 1480):
$ ping -M do -s 1472 8.8.8.8
From 192.168.1.1 icmp_seq=1 Frag needed and DF set (mtu = 1480)
# Prawidłowy rozmiar testowy dla MTU 1480: 1480 - 28 = 1452 bajty:
$ ping -M do -s 1452 8.8.8.8  # Test zakończony sukcesem!
Wykrywanie MTU ścieżki PMTUD (ang. Path MTU Discovery): Wykrywanie MTU ścieżki polega na wysyłaniu sond ping z flagą DF (w Linux opcja -M do) i rosnącym ładunkiem (-s), przy czym rozmiar pakietu IP to dane plus 8 bajtów ICMP i 20 bajtów IPv4 (dla MTU 1500 maksymalny ładunek to 1472 bajty). Gdy router nie może przesłać pakietu, odsyła ICMP Fragmentation Needed (typ 3, kod 4); całkowite zablokowanie ICMP na zaporze (czarna dziura ICMP) objawia się zawieszaniem dużych transferów przy działającym zwykłym ping.
Ping opcje
47/51
Laboratorium: Zarządzanie tablicą sąsiedztwa
Cel slajdu: Slajd uczy inspekcji tablicy sąsiedztwa oraz obserwacji cyklu stanów wykrywania osiągalności podczas ćwiczenia laboratoryjnego.

Inspekcja i modyfikacja tablicy ARP (ip neigh)

  • Polecenia audytowe pakietu iproute2:
    • Podgląd wszystkich wpisów sąsiedztwa: ip neigh show
    • Czyszczenie całej pamięci podręcznej ARP: sudo ip neigh flush all
    • Czyszczenie wpisów dla wybranego interfejsu: sudo ip neigh flush dev eth0
    • Dodanie chronionego wpisu statycznego: sudo ip neigh add 192.168.1.10 lladdr aa:bb:cc:dd:ee:ff nud permanent dev eth0
    • Usunięcie konkretnego wpisu: sudo ip neigh del 192.168.1.10 dev eth0
  • Ciągły monitoring zmian w laboratorium:
# Uruchomienie ciągłego monitoringu tablicy sąsiedztwa:
$ watch -n 1 'ip neigh show'

# W drugim oknie terminala zainicjuj komunikację:
$ ping -c 1 192.168.1.10

# Obserwuj cykl stanów NUD:
# INCOMPLETE -> REACHABLE -> STALE -> DELAY -> PROBE
Inspekcja tablicy sąsiedztwa (ang. neighbour table inspection): Inspekcja tablicy sąsiedztwa obejmuje podgląd (ip neigh show), czyszczenie całości albo interfejsu (ip neigh flush), dodawanie wpisu chronionego (ip neigh add z nud permanent) oraz usuwanie wpisu (ip neigh del). Ciągły monitoring poleceniem watch w połączeniu z pojedynczym ping pozwala zaobserwować maszynę stanów NUD: INCOMPLETE po wysłaniu zapytania, REACHABLE po odpowiedzi, STALE po bezczynności, DELAY i PROBE przy ponownej weryfikacji oraz FAILED przy braku odpowiedzi.
ip neighbor
48/51
Laboratorium: Demonstracja ataku ARP Poisoning
Cel slajdu: Slajd opisuje kontrolowaną symulację ataku pośrednika w odizolowanym laboratorium, służącą zrozumieniu potrzeby szyfrowania i ochrony warstwy drugiej.

Symulacja ataku Man-in-the-Middle w izolowanym środowisku testowym

  • Środowisko testowe: 3 odizolowane maszyny wirtualne w tej samej sieci wewnętrznej (Host A: 192.168.1.10, Brama: 192.168.1.1, Atakujący: 192.168.1.100)
  • Krok 1: Włączenie przekazywania pakietów na maszynie atakującego:
    $ sudo sysctl -w net.ipv4.ip_forward=1
  • Krok 2: Uruchomienie procesu zatruwania tablic ARP:
    # Oszukanie ofiary (mówi hostowi A, że brama to atakujący):
    $ sudo arpspoof -i eth0 -t 192.168.1.10 192.168.1.1
    # Oszukanie bramy (mówi bramie, że host A to atakujący):
    $ sudo arpspoof -i eth0 -t 192.168.1.1 192.168.1.10
  • Krok 3: Weryfikacja na maszynie ofiary:
    $ ip neigh show | grep 192.168.1.1
    192.168.1.1 dev eth0 lladdr <MAC_ATAKUJĄCEGO> REACHABLE
  • Przestroga etyczna i prawna: demonstracja dopuszczalna wyłącznie w wydzielonym laboratorium dydaktycznym. Wykorzystanie poza laboratorium podlega sankcjom karnym z art. 267 i 269b k.k.
Środowisko testowe ataku (ang. isolated testbed): Środowisko testowe ataku to trzy odizolowane maszyny wirtualne w jednej sieci wewnętrznej (ofiara, brama, atakujący), w którym włączenie przekazywania pakietów i dwukierunkowe zatruwanie programem arpspoof kieruje ruch przez atakującego bez przerywania łączności. Weryfikacja polega na sprawdzeniu wpisu bramy we własnej tablicy (ip neigh show), a zakończenie sygnałem przerwania wysyła naprawcze ogłoszenia przywracające poprawne adresy; demonstracja poza laboratorium podlega odpowiedzialności z artykułu 267 i 269b Kodeksu karnego.
ARP Poisoning lab
49/51
Troubleshooting – metodyka inżynierii odwrotnej
Cel slajdu: Slajd porządkuje metodykę usuwania usterek od warstwy fizycznej do aplikacyjnej oraz wskazuje typowy błąd mylenia tablicy CAM z tablicą ARP.

Diagnoza problemów z łącznością L2/L3 krok po kroku

  • Problem 1: Brak komunikacji z węzłem w tej samej sieci LAN:
    • 1. Warstwa fizyczna i łącza (L1/L2): sprawdzenie stanu interfejsu (ip link – stan UP, flaga LOWER_UP)
    • 2. Warstwa sieciowa (L3): weryfikacja poprawności adresu IP i maski (ip -br addr)
    • 3. Weryfikacja translacji adresów: sprawdzenie tablicy sąsiedztwa (ip neigh show):
      • Stan INCOMPLETE lub FAILED → brak odpowiedzi w warstwie 2
    • 4. Analiza ruchu na żywo: sudo tcpdump -i eth0 -e -nn arp – czy wychodzi Request i czy wraca Reply?
    • 5. Diagnostyka na przełączniku: wyszukanie adresu MAC w tablicy CAM (np. w Cisco: show mac address-table address <MAC> lub w RouterOS: /interface bridge host print where mac-address=<MAC>) – uwaga: tablica CAM operuje na adresach MAC, a nie na IP!
  • Problem 2: Ping na adres bramy działa, brak dostępu do stron WWW:
    • 1. Weryfikacja translacji nazw DNS: dig google.pl lub nslookup google.pl
    • 2. Test drożności portu L4: nc -zv google.pl 443 lub curl -I https://google.pl
Metodyka usuwania usterek (ang. troubleshooting methodology): Metodyka usuwania usterek polega na wstępującym przechodzeniu warstw ISO/OSI: najpierw stan łącza (ip link, flaga LOWER_UP), potem adresacja (ip addr), potem translacja (ip neigh, tcpdump ARP), a dopiero potem usługi wyższe (dig, nslookup, nc, curl). Przełącznik warstwy drugiej nie zna adresów IP, dlatego adresu IP nie szuka się w tablicy CAM; najpierw ustala się adres MAC z tablicy ARP routera albo stacji, a potem odnajduje się ten MAC w tablicy CAM (w Cisco show mac address-table, w RouterOS /interface bridge host print).
Troubleshooting
50/51
Cheat Sheet – ściągawka administratora
Cel slajdu: Slajd zbiera w jednej tabeli kluczowe polecenia administratora dla systemów Linux, Windows i RouterOS wraz z zaleceniami eksploatacyjnymi.

Zestawienie kluczowych poleceń w Linux, Windows i RouterOS

Zadanie administracyjneSystem Linux (iproute2)System Windows (PowerShell / CMD)MikroTik RouterOS
Pokaż adresy MACip -br linkGet-NetAdapter / getmac /v/interface print
Zmień adres MACip link set dev eth0 address XX:..Set-NetAdapter -MacAddress XX-../interface ethernet set ether1 mac-address=..
Pokaż tablicę ARPip neigh showGet-NetNeighbor -AddressFamily IPv4 / arp -a/ip arp print
Wyczyść tablicę ARPsudo ip neigh flush allarp -d */ip arp remove [find dynamic]
Dodaj stały wpis ARPip neigh add .. nud permanent dev ..arp -s <IP> <MAC>/ip arp add address=.. mac-address=.. interface=..
Przechwyć ruch ARPsudo tcpdump -i eth0 -e -nn arppktmon start --capture --pkt-filter ../tool sniffer quick
Test łącznościping -c 5 8.8.8.8ping -n 5 8.8.8.8 / Test-NetConnection/tool ping 8.8.8.8 count=5
Śledzenie trasytraceroute -n 8.8.8.8tracert -d 8.8.8.8/tool traceroute 8.8.8.8
Pokaż konfigurację IPip -br addrGet-NetIPAddress / ipconfig/ip address print
Przekazywanie IP (Forwarding)sysctl -w net.ipv4.ip_forward=1Set-NetIPInterface -Forwarding Enabled/ip settings set ip-forward=yes
Ściągawka operacyjna (ang. cheat sheet): Ściągawka operacyjna to skondensowane zestawienie poleceń dla trzech środowisk (serwery Linux z iproute2, stacje Windows z PowerShell i CMD, urządzenia MikroTik RouterOS) obejmujące adresy MAC, tablicę ARP, przechwytywanie ruchu, test łączności, śledzenie trasy, konfigurację IP i przekazywanie pakietów. Zalecenia praktyczne obejmują wyłączanie rozwiązywania DNS w traceroute (-n, -d), testowanie MTU poleceniem ping z flagą DF oraz zachowanie drożności komunikatów Destination Unreachable i całego NDP w IPv6.
Cheat Sheet
Podgląd