1/50
Adresowanie i protokoły warstwy 2 i 3

Podstawy adresacji sieci

Prezentacja obejmuje podstawowe mechanizmy adresowania w sieciach Ethernet i IP. Od budowy adresu MAC, przez działanie tablicy ARP, aż po szczegółowe porównanie IPv4 i IPv6 oraz rolę protokołu ICMP w diagnostyce sieci. Każde zagadnienie jest ilustrowane praktycznymi poleceniami systemowymi (Windows i Linux) oraz przykładami rzeczywistych problemów sieciowych. Celem jest wyrobienie umiejętności samodzielnej analizy ruchu i skutecznego rozwiązywania problemów z łącznością na poziomie LAN.

Adresowanie i protokoły warstwy 2 i 3
2/50
Agenda wykładu

Plan na dziś

  • Adresy MAC - budowa, typy transmisji, narzędzia
  • MAC spoofing - anonimizacja i testy penetracyjne
  • Protokół ARP - rozwiązywanie adresów, wpisy dynamiczne i statyczne
  • IPv4 vs IPv6 - różnice w nagłówkach, adresowaniu i działaniu
  • ICMP - architektura, typy i kody, diagnostyka
  • Laboratorium: tcpdump, ping, ip neighbor
  • Troubleshooting i cheat sheet administratora
Agenda
3/50
Cele wykładu i laboratorium

Co osiągniesz podczas tych zajęć?

  • Zrozumiesz budowę adresu MAC i rozróżnisz typy transmisji L2
  • Będziesz umiał sprawdzić i zmienić adres MAC w Windows i Linux
  • Przeanalizujesz działanie ARP i zidentyfikujesz atak ARP Poisoning
  • Porównasz IPv4 i IPv6 na poziomie nagłówka i adresowania
  • Zinterpretujesz kody ICMP w scenariuszach awaryjnych
  • Przeprowadzisz własną analizę ruchu z tcpdump
Po tych zajęciach przejdziesz od "ping działa/nie działa" do "dlaczego nie działa i jak to naprawić".
Cele
4/50
Adres MAC - budowa fizyczna

Budowa adresu MAC (Media Access Control)

  • 48 bitów (6 oktetów), zapis szesnastkowy: np. 00:1A:2B:3C:4D:5E
  • Pierwsze 3 bajty (24 bity) - OUI (Organizationally Unique Identifier) - identyfikator producenta
  • Ostatnie 3 bajty (24 bity) - UAA (Universally Administered Address) - unikalny numer interfejsu
  • Najmłodszy bit pierwszego oktetu: 0 = unicast, 1 = multicast
  • Drugi najmłodszy bit: 0 = globalnie unikalny (UAA), 1 = lokalnie administrowany (LAA)
Budowa adresu MAC
5/50
Rejestry OUI i format zapisu

Identyfikacja producenta i standardy zapisu

  • Rejestr OUI prowadzony przez IEEE (publicznie dostępny online)
  • Przykłady OUI: 00:23:5E (Cisco), 3C:5A:B4 (Google), 14:CF:92 (TP-Link)
  • Formaty zapisu: tradycyjny (AA:BB:CC:DD:EE:FF), Cisco (AABB.CCDD.EEFF), Windows (AA-BB-CC-DD-EE-FF)
  • Narzędzia do sprawdzenia producenta: macchanger -l | grep 00235e (Linux)
curl -s https://api.macvendors.com/00:23:5E:11:22:33
Cisco Systems, Inc
Rejestry OUI
6/50
Długość i zakres adresu MAC

Parametry fizyczne adresu MAC

  • 48 bitów = 2^48 (około 281 bilionów) unikalnych kombinacji
  • Zarezerwowane zakresy: FF:FF:FF:FF:FF:FF (broadcast L2)
  • Multicast L2: 01:00:5E:xx:xx:xx (IPv4), 33:33:xx:xx:xx:xx (IPv6)
  • Adresy lokalnie administrowane (LAA): x2:xx:xx:xx:xx:xx lub x6:xx:xx:xx:xx:xx itp.
  • Adres MAC FF:FF:FF:FF:FF:FF - wszystkie interfejsy w segmencie sieci
Liczba 2^48 to teoretyczny limit - w praktyce OUI ogranicza go do 2^24 na producenta.
Zakres adresów MAC
7/50
Rodzaje transmisji L2: Unicast

Unicast - komunikacja 1:1 w warstwie łącza

  • Ramka unicast: docelowy adres MAC jest unikalny dla pojedynczego interfejsu
  • Przełącznik dostarcza ramkę tylko na port, do którego podłączony jest adresat
  • Najbardziej efektywna transmisja - nie obciąża niepotrzebnie innych portów
  • Przełącznik uczy się położenia adresów MAC w tablicy CAM (Content Addressable Memory)
  • Jeśli adres docelowy nieznany - ramka jest floodowana (wysyłana na wszystkie porty)
Unicast L2
8/50
Rodzaje transmisji L2: Broadcast i Multicast

Broadcast i Multicast w warstwie łącza

  • Broadcast L2: MAC FF:FF:FF:FF:FF:FF - ramka trafia do wszystkich urządzeń w sieci
  • Broadcast jest nieodzowny dla ARP, DHCP (przed uzyskaniem adresu IP)
  • Nadmiar broadcastu (broadcast storm) może sparaliżować sieć
  • Multicast L2: ramka trafia do grupy odbiorców (IGMP snooping)
  • Przykład: 01:00:5E:00:00:01 - wszystkie hosty IPv4 (224.0.0.1)
Broadcast i Multicast L2
9/50
Sprawdzenie adresu MAC w Windows

Windows: ipconfig /all i PowerShell

  • ipconfig /all - wyświetla wszystkie interfejsy z adresami MAC (Physical Address)
  • getmac /v - szybki podgląd adresów MAC wszystkich kart sieciowych
  • PowerShell: Get-NetAdapter | Select Name, MacAddress
  • PowerShell: Get-NetAdapter | fl - pełne informacje o karcie
  • Adres MAC w Windows nazywany jest "Physical Address" lub "Adres fizyczny"
PS> Get-NetAdapter | Select Name, MacAddress, Status

Name    MacAddress         Status
----    ----------         ------
Ethernet 00-1A-2B-3C-4D-5E Up
Wi-Fi    AA-BB-CC-DD-EE-FF Up
Windows MAC
10/50
Sprawdzenie adresu MAC w Linux

Linux: ip link show

  • ip link show - wyświetla wszystkie interfejsy z adresami MAC
  • ip link show eth0 - szczegóły konkretnego interfejsu
  • ip -br link - skrócony (brief) widok: nazwa, MAC, status
  • cat /sys/class/net/eth0/address - odczyt MAC z pseudosystemu plików
$ ip -br link
lo               UNKNOWN  00:00:00:00:00:00
eth0             UP       00:1a:2b:3c:4d:5e
wlan0            DOWN     aa:bb:cc:dd:ee:ff
ip link show to nowoczesny zamiennik przestarzałego ifconfig.
Linux MAC
11/50
Adres MAC a adres IP - porównanie

Różnice między adresowaniem L2 a L3

CechaAdres MAC (L2)Adres IP (L3)
Długość48 bitów (6 B)32 bity (IPv4) / 128 bitów (IPv6)
HierarchicznośćPłaska (płaski adres)Hierarchiczna (sieć + host)
PrzypisanieNa stałe do kartyZależy od sieci (DHCP/ręcznie)
ZasięgTylko segment LANGlobalny (z routingiem)
Warstwa OSIWarstwa łącza (L2)Warstwa sieciowa (L3)
MAC vs IP
12/50
Specjalne adresy MAC i maskowanie bitów

Znaczenie flag adresu MAC

  • Bit mówiący o typie (I/G): najmłodszy bit pierwszego bajtu
  • 0 = indywidualny (unicast), 1 = grupowy (multicast/broadcast)
  • Bit administracyjny (U/L): drugi najmłodszy bit pierwszego bajtu
  • 0 = globalnie unikalny (przypisany przez IEEE), 1 = lokalny (ustawiony przez administratora)
  • W adresie 02:00:00:00:00:01 drugi bit = 1 (LAA), pierwszy bit = 0 (unicast)
$ ip -br link
eth0 UP 02:1a:2b:ff:ff:01  # lokalnie administrowany (LAA)
Flagi MAC
13/50
MAC spoofing - teoria i cele

Po co zmieniać adres MAC?

  • Anonimizacja: utrudnienie śledzenia urządzenia w sieciach publicznych (Wi-Fi)
  • Testy penetracyjne: ominięcie filtracji MAC na przełącznikach
  • Maszyny wirtualne: każda maszyna wirtualna potrzebuje unikalnego MAC
  • Rozwiązywanie konfliktów: gdy dwie karty mają ten sam adres MAC
  • Inżynieria sieciowa: testowanie działania przełączników przy zmianie adresowania
MAC spoofing
14/50
MAC spoofing w Linux - ip link

Zmiana adresu MAC za pomocą ip

  • Interfejs musi być w stanie DOWN przed zmianą MAC
  • ip link set dev eth0 down - wyłączenie interfejsu
  • ip link set dev eth0 address 02:00:00:00:00:01 - zmiana MAC
  • ip link set dev eth0 up - włączenie interfejsu
  • Zmiana nie jest trwała - po restarcie wraca oryginalny MAC
$ sudo ip link set dev eth0 down
$ sudo ip link set dev eth0 address 02:00:00:00:00:01
$ sudo ip link set dev eth0 up
$ ip -br link | grep eth0
eth0             UP       02:00:00:00:00:01
Linux MAC spoofing
15/50
macchanger - zaawansowane narzędzie

macchanger - opcje i przykłady

  • macchanger -s eth0 - wyświetla aktualny i stały MAC
  • macchanger -r eth0 - całkowicie losowy adres MAC
  • macchanger -a eth0 - losowy z OUI tego samego producenta
  • macchanger -A eth0 - losowy z przypadkowym OUI dowolnego producenta
  • macchanger -p eth0 - przywrócenie permanentnego (fabrycznego) MAC
$ sudo macchanger -a eth0
Current MAC:   00:23:5e:11:22:33 (Cisco Systems)
Permanent MAC: 00:23:5e:11:22:33 (Cisco Systems)
New MAC:       00:23:5e:de:ad:be (Cisco Systems)
macchanger
16/50
MAC spoofing w Windows

Zmiana adresu MAC w Windows

  • Menedżer urządzeń -> Karta sieciowa -> Właściwości -> Zaawansowane -> Network Address
  • PowerShell: Set-NetAdapter -Name "Ethernet" -MacAddress "00-1A-2B-3C-4D-5E"
  • Wymaga uprawnień administratora i chwilowego rozłączenia interfejsu
  • Niektóre karty nie obsługują zmiany MAC przez sterownik
PS> Set-NetAdapter -Name "Ethernet" -MacAddress "02-00-00-00-00-01"
PS> Get-NetAdapter -Name "Ethernet" | Select MacAddress
MacAddress
----------
02-00-00-00-00-01
Windows MAC spoofing
17/50
MAC spoofing - wykrywanie i zabezpieczenia

Jak wykryć zmianę adresu MAC?

  • Port Security na przełącznikach: limit 1-2 adresów MAC na port
  • 802.1X: autoryzacja na podstawie certyfikatów, nie MAC
  • DHCP Snooping: weryfikacja źródłowego MAC z opcją 61 (client-id)
  • Monitorowanie zmian w tablicy CAM: syslog z violation
  • Wykrywanie adresów lokalnie administrowanych (bit U/L = 1)
Wykrywanie MAC spoofing
18/50
Protokół ARP - wprowadzenie

ARP (Address Resolution Protocol)

  • Protokół warstwy łącza (L2.5) - łączy adresy L3 (IP) z adresami L2 (MAC)
  • Zadanie: dla danego adresu IP w sieci lokalnej znajdź odpowiadający mu adres MAC
  • Działa tylko w obrębie jednej sieci LAN (nie jest routowany)
  • Zdefiniowany w RFC 826 (1982) - protokół z pogranicza L2/L3
  • Operacje: ARP Request (broadcast) i ARP Reply (unicast)
ARP protokół
19/50
Mechanika ARP Request i Reply

Cykl ARP: zapytanie i odpowiedź

  • ARP Request: broadcast L2, nadawca pyta "kto ma IP 192.168.1.10?"
  • W ARP Request: źródłowy MAC i IP znane, docelowy MAC = 00:00:00:00:00:00, docelowy IP = szukany
  • ARP Reply: unicast do nadawcy, odpowiedź "ja mam IP 192.168.1.10, mój MAC to aa:bb:cc:dd:ee:ff"
  • Host odbierający ARP Reply aktualizuje tablicę ARP (nawet jeśli nie pytał - gratuitous ARP)
# Wireshark filter: arp
# ARP Request - kto ma 192.168.1.10?
  Source: aa:bb:cc:dd:ee:01
  Target: 00:00:00:00:00:00
# ARP Reply - ja mam 192.168.1.10
  Source: aa:bb:cc:dd:ee:10
  Target: aa:bb:cc:dd:ee:01
ARP Request/Reply
20/50
Budowa ramki ARP

Nagłówek ARP - pola

  • Hardware Type (2B): 1 = Ethernet
  • Protocol Type (2B): 0x0800 = IPv4
  • Hardware Size (1B): 6 (długość MAC)
  • Protocol Size (1B): 4 (długość IPv4)
  • Opcode (2B): 1 = Request, 2 = Reply
  • Sender/Target MAC + IP (4 adresy): łącznie 20 bajtów
Budowa ramki ARP
21/50
Tablica ARP - wyświetlanie

Podgląd tablicy ARP w systemach

  • Windows: arp -a (lub arp -A dla wszystkich interfejsów)
  • Linux: ip neigh show (lub przestarzałe arp -n)
  • MacOS: arp -a (podobnie jak Linux)
  • Router Cisco: show ip arp lub show arp
$ ip neigh show
192.168.1.1 dev eth0 lladdr 00:1a:2b:3c:4d:5e REACHABLE
192.168.1.10 dev eth0 lladdr aa:bb:cc:dd:ee:ff STALE
192.168.1.20 dev eth0 lladdr 00:23:5e:11:22:33 DELAY
W Linux stan REACHABLE oznacza potwierdzony wpis, STALE - nieweryfikowany od jakiegoś czasu.
Tablica ARP
22/50
Wpisy dynamiczne a statyczne w ARP

Zarządzanie wpisami ARP

  • Dynamiczne: dodawane automatycznie po ARP Reply, usuwane po czasie nieaktywności
  • Windows: czas życia 120-300 s (zależy od wersji systemu)
  • Linux: REACHABLE domyślnie 30-45 s, potem STALE (można zmienić w /proc/sys/net/ipv4/neigh/*)
  • Statyczne: ręcznie dodane przez administratora, nie wygasają
  • Zastosowanie: stałe mapowanie dla serwerów, ochrona przed ARP spoofingiem
Wpisy ARP
23/50
ARP w działaniu - analiza tcpdump

Podgląd ruchu ARP na żywo

  • tcpdump -i eth0 arp - przechwyć tylko ruch ARP
  • tcpdump -i eth0 -e arp - pokaż adresy MAC (ether)
  • tcpdump -i eth0 -v arp - szczegółowy widok ARP
  • tcpdump -i eth0 'arp[6:2] = 1' - tylko ARP Requesty
  • tcpdump -i eth0 'arp[6:2] = 2' - tylko ARP Reply
$ sudo tcpdump -i eth0 -e -v arp
12:34:56.789012 ARP, Request who-has 192.168.1.10
  tell 192.168.1.1, length 28
  Sender MAC: aa:bb:cc:dd:ee:01 (unicast)
  Target MAC: 00:00:00:00:00:00 (broadcast)
12:34:56.789456 ARP, Reply 192.168.1.10 is-at
  bb:cc:dd:ee:10:10, length 28
tcpdump ARP
24/50
ARP Poisoning - zasada ataku

Atak ARP Poisoning (ARP Spoofing)

  • Atakujący wysyła sfałszowane ARP Reply (lub Gratuitous ARP) do ofiary
  • W ARP Reply atakujący podaje swój MAC jako adres bramy domyślnej
  • Ofiary aktualizują tablice ARP - ruch do bramy trafia do atakującego
  • Umożliwia: MITM (Man-in-the-Middle), sniffing ruchu, blokowanie dostępu
  • Narzędzia: arpspoof (dsniff), ettercap, bettercap
ARP Poisoning
25/50
ARP Poisoning - zapobieganie

Jak chronić sieć przed ARP Poisoning?

  • Statyczne wpisy ARP na serwerach krytycznych - nie akceptują ARP Reply
  • Dynamic ARP Inspection (DAI) - przełącznik weryfikuje ARP na podstawie DHCP Snooping
  • DHCP Snooping - buduje zaufaną bazę IP-MAC-port-VLAN
  • Port Security - ogranicza liczbę MAC na porcie, zapobiega MAC flooding
  • Separacja VLAN - izolacja ruchu między segmentami, utrudnienie ataku
Zapobieganie ARP
26/50
Gratuitous ARP

Gratuitous ARP - samorzutne ogłoszenie

  • Gratuitous ARP = ARP Request (opcode=1) z Sender IP = Target IP, wysłany jako broadcast
  • Host ogłasza swój MAC dla swojego IP wszystkim w sieci
  • Zastosowania: wykrywanie duplikacji IP, aktualizacja tablic po zmianie MAC
  • Wady: ułatwia ARP Poisoning (brak weryfikacji źródła)
  • Przykład: DHCP Request z zawartością Gratuitous ARP po przyznaniu adresu
# GARP w tcpdump - nadawca i docelowy IP są takie same
ARP, Request who-has 192.168.1.10 tell 192.168.1.10
  Sender IP: 192.168.1.10  Target IP: 192.168.1.10
Gratuitous ARP
27/50
Warstwa 3 - przypomnienie IPv4

IPv4 - podstawy adresowania

  • Adres 32-bitowy, zapisany jako 4 oktety dziesiętne (np. 192.168.1.1)
  • Podział na sieć (network) i host (host) za pomocą maski
  • Maska: długość prefiksu CIDR (np. /24 = 255.255.255.0)
  • Adres sieci: wszystkie bity hosta = 0, broadcast: wszystkie bity hosta = 1
  • Klasy adresów (historyczne): A (1-126), B (128-191), C (192-223), D (224-239) multicast
IPv4 przypomnienie
28/50
Nagłówek IPv4 - kluczowe pola

Struktura nagłówka IPv4

  • Wersja (4 bity): zawsze 0100 (4) dla IPv4
  • IHL (4 bity): długość nagłówka w słowach 32-bitowych (min 5 = 20 B)
  • ToS/DSCP (1 B): typ usługi - QoS, klasyfikacja ruchu
  • Total Length (2 B): długość całego pakietu (nagłówek + dane), max 65535 B
  • Identification (2 B), Flags (3 bity), Fragment Offset (13 bitów) - fragmentacja
  • TTL (1 B): Time To Live - licznik routerów, Protocol (1 B), Header Checksum (2 B)
  • Source IP (4 B), Destination IP (4 B) - adresy źródła i celu
Nagłówek IPv4
29/50
TTL w praktyce diagnostycznej

TTL - Time To Live w praktyce

  • Początkowy TTL zależy od systemu: 64 (Linux), 128 (Windows), 255 (router Cisco)
  • TTL w odpowiedzi ping pozwala oszacować liczbę hopów
  • Przykład: ping zwraca TTL=117 -> 128-117=11 hopów lub 64-? nie pasuje -> startowy 128 (Windows)
  • Nieoczekiwana zmiana TTL (np. 64->128) może wskazywać na NAT lub tunel
  • TTL=1 oznacza, że pakiet nie opuści routera - celowe dla traceroute
TTL diagnostyka
30/50
Pole Protocol w nagłówku IPv4

Identyfikacja protokołu warstwy wyższej

  • Pole Protocol (8 bitów) określa protokół enkapsulowany w danych IPv4
  • Wartości: 1=ICMP, 2=IGMP, 6=TCP, 17=UDP, 89=OSPF, 132=SCTP
  • Routery i firewalle analizują to pole do podejmowania decyzji (ACL, QoS)
  • W IPv6 analogiczne pole to Next Header
# tcpdump z filtrem po protokole L4
$ sudo tcpdump -i eth0 icmp        # protokół 1
$ sudo tcpdump -i eth0 tcp         # protokół 6
$ sudo tcpdump -i eth0 udp         # protokół 17
Pole Protocol
31/50
IPv6 - ewolucja i nowe podejście

IPv6 - skok technologiczny

  • Adres 128-bitowy: 8 grup po 16 bitów hex (np. 2001:db8::1)
  • 2^128 adresów - praktycznie niewyczerpalna pula
  • Brak NAT-u - każdy host ma globalny adres publiczny
  • Brak broadcastu - zastąpiony multicastem i anycastem
  • Wbudowana autokonfiguracja (SLAAC) i bezpieczeństwo (IPsec)
IPv6
32/50
Porównanie nagłówka IPv4 i IPv6

IPv4 vs IPv6 - nagłówek

CechaIPv4 (20 B)IPv6 (40 B)
Długość nagłówka20-60 B (zmienna)40 B (stała)
Adresacja32 bity128 bitów
Suma kontrolnaTak (tylko nagłówek)Brak
FragmentacjaNa routerachTylko u nadawcy
TTL / Hop LimitTTL (Time To Live)Hop Limit
BroadcastTak (255.255.255.255)Brak (multicast)
IPsecOpcjonalnieWbudowany w specyfikację
Porównanie nagłówka
33/50
Adresy link-local w IPv6

Link-local address (fe80::/10)

  • Adres automatycznie przypisywany do każdego interfejsu IPv6
  • Zakres: tylko lokalny segment sieci (nie jest routowany)
  • Prefiks: fe80::/10, reszta = EUI-64 lub losowa
  • Używany do: NDP (Neighbor Discovery), SLAAC, routing (OSPFv3, RIPng)
  • Weryfikacja: ip -6 addr show lub netsh interface ipv6 show addresses
$ ip -6 addr show eth0
inet6 fe80::211:22ff:fe33:4455/64 scope link
    valid_lft forever preferred_lft forever
Link-local IPv6
34/50
NDP - Neighbor Discovery Protocol

NDP - zamiennik ARP w IPv6

  • Zastępuje ARP, ICMP Router Discovery i ICMP Redirect z IPv4
  • Działa na ICMPv6 (typy 133-137), a nie na osobnej ramce jak ARP
  • Neighbor Solicitation (NS) - ICMPv6 typ 135 - odpowiednik ARP Request
  • Neighbor Advertisement (NA) - ICMPv6 typ 136 - odpowiednik ARP Reply
  • Router Solicitation (RS) typ 133, Router Advertisement (RA) typ 134
NDP
35/50
IPv6 - brak broadcastu

Koniec ery broadcastu w IPv6

  • IPv6 całkowicie eliminuje adres broadcast
  • Zamiast tego używa: multicast (ff00::/8) i anycast
  • Multicast ff02::1 - wszystkie hosty (odpowiednik broadcastu)
  • Multicast ff02::2 - wszystkie routery
  • Multicast ff02::1:ffxx:xxxx - solicited-node (dla NDP NS)
  • Zalety: mniejsze obciążenie hostów nieuczestniczących w komunikacji
Brak broadcastu IPv6
36/50
Sprawdzanie konfiguracji IPv4/IPv6

Narzędzia do weryfikacji adresowania

  • Windows: ipconfig (IPv4+IPv6), netsh interface ipv4 show addresses
  • Linux: ip addr show, ip -4 addr (tylko IPv4), ip -6 addr (tylko IPv6)
  • Linux: ip -br -4 addr (skrócony widok IPv4)
  • Linux: ip -br -6 addr (skrócony widok IPv6)
  • Router: show ip interface brief, show ipv6 interface brief
$ ip -br -4 addr
eth0 UP 192.168.1.10/24
$ ip -br -6 addr
eth0 UP fe80::211:22ff:fe33:4455/64 2001:db8::10/64
Konfiguracja IP
37/50
ICMP - wprowadzenie

ICMP (Internet Control Message Protocol)

  • Protokół pomocniczy warstwy sieciowej (L3) - RFC 792
  • Nie korzysta z portów (nie jest TCP ani UDP) - działa bezpośrednio na IP
  • Służy do: diagnostyki (ping), raportowania błędów, zarządzania siecią
  • ICMP jest enkapsulowany w IP z polem Protocol = 1
  • Każdy router i host musi implementować ICMP (wymagany przez RFC 1122)
ICMP
38/50
Typy i kody ICMP

Najważniejsze typy ICMP

TypeCodeNazwaZastosowanie
00Echo ReplyOdpowiedź na ping
80Echo RequestZapytanie ping
30-15Destination UnreachableHost/sieć/port nieosiągalny
110-1Time ExceededTTL=0 (traceroute) / czas montażu
50-4RedirectPrzekierowanie do lepszej trasy
120-2Parameter ProblemBłąd w nagłówku IP
Typy ICMP
39/50
ICMP Echo Request/Reply - ping

Ping w szczegółach

  • ping wysyła ICMP Echo Request (Type=8) i oczekuje Echo Reply (Type=0)
  • Mierzy RTT (Round Trip Time) i utratę pakietów (loss)
  • Opcje: -c (liczba), -i (interwał), -s (rozmiar), -f (flood), -t (TTL w Windows)
  • Interpretacja: loss > 1% może oznaczać problem
  • Wysoki RTT (np. > 200 ms WAN) wymaga analizy trasy (traceroute/mtr)
$ 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=117 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=12.1 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=117 time=18.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=117 time=13.2 ms
Ping
40/50
Destination Unreachable - kody błędów

ICMP Type 3 - Destination Unreachable

  • Code 0: Network Unreachable - router nie zna trasy do sieci docelowej
  • Code 1: Host Unreachable - router nie zna trasy do hosta
  • Code 2: Protocol Unreachable - host nie obsługuje protokołu L4
  • Code 3: Port Unreachable - port docelowy nie jest nasłuchiwany
  • Code 4: Fragmentation Needed - pakiet za duży, DF=1
$ ping 192.168.1.200
From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
# Type=3 Code=1 - host nieosiągalny
Destination Unreachable
41/50
Time Exceeded - mechanizm traceroute

ICMP Time Exceeded (Type 11)

  • Code 0: TTL exceeded - czas życia pakietu wyczerpany w tranzycie
  • Code 1: Fragment reassembly time exceeded - czas montażu fragmentów
  • Wykorzystywany przez traceroute do mapowania trasy
  • traceroute wysyła pakiety z TTL=1,2,3... - każdy router zwraca Time Exceeded
  • Linux: traceroute (UDP na wysokie porty), Windows: tracert (ICMP Echo)
$ traceroute -n 8.8.8.8
 1  192.168.1.1  0.5 ms
 2  10.20.0.1   3.1 ms
 3  83.0.0.1   8.4 ms
 4  * * *       # router nie odpowiada na ICMP
 5  72.14.215.85  16.3 ms
Time Exceeded
42/50
ICMP Redirect

ICMP Redirect (Type 5)

  • Router informuje hosta o lepszej trasie do konkretnego celu
  • Występuje, gdy host wysyła pakiety do routera, który nie jest optymalny
  • Host zapisuje informację w tablicy routingu na pewien czas
  • Zagrożenie: atak ICMP Redirect - podmiana tras w hoście
  • W nowoczesnych sieciach często blokowany przez firewalle
W systemach Linux można wyłączyć akceptację ICMP Redirect: sysctl net.ipv4.conf.all.accept_redirects=0
ICMP Redirect
43/50
ICMP w IPv6 - ICMPv6

ICMPv6 - zmiany względem ICMPv4

  • ICMPv6 (RFC 4443) - obowiązkowy, zintegrowany z IPv6
  • Nowe funkcje: NDP (NS/NA, RS/RA), MLD, Path MTU Discovery
  • Typy błędów (0-127): 1=Destination Unreachable, 2=Packet Too Big, 3=Time Exceeded
  • Typy informacyjne (128-255): 128=Echo Request, 129=Echo Reply
  • Packet Too Big (Type 2) - nowy typ, nie ma w ICMPv4 (zastępuje Fragmentation Needed)
ICMPv6
44/50
Laboratorium: tcpdump - podstawy

Praktyczna analiza ruchu z tcpdump

  • sudo tcpdump -D - lista dostępnych interfejsów
  • sudo tcpdump -i eth0 -c 100 -nn - 100 pakietów, bez DNS
  • sudo tcpdump -i eth0 -w capture.pcap - zapis do pliku
  • sudo tcpdump -r capture.pcap - odczyt z pliku
  • sudo tcpdump -i eth0 -s 0 -v - pełny pakiet, szczegółowo
$ sudo tcpdump -D
1.eth0 [UP, Running]
2.wlan0 [UP, Running]
3.any (Pseudo-device that captures on all interfaces)
tcpdump podstawy
45/50
Laboratorium: zaawansowane filtry tcpdump

Filtrowanie ruchu dla konkretnych protokołów

  • sudo tcpdump -i eth0 arp - tylko ARP
  • sudo tcpdump -i eth0 icmp - tylko ICMP
  • sudo tcpdump -i eth0 port 80 - ruch HTTP
  • sudo tcpdump -i eth0 host 192.168.1.10 - ruch z/do hosta
  • sudo tcpdump -i eth0 src net 192.168.1.0/24 - z sieci źródłowej
# Laboratorium: przechwyć ARP Requesty tylko
$ sudo tcpdump -i eth0 -e -v 'arp[6:2] = 1'
ARP, Request who-has 192.168.1.10 tell 192.168.1.1
  Sender MAC: 00:1a:2b:3c:4d:5e
  Target MAC: 00:00:00:00:00:00
Filtry tcpdump
46/50
Laboratorium: ping z opcjami

ping - zaawansowane opcje

  • ping -c 100 -i 0.2 8.8.8.8 - 100 pingów co 200 ms (test obciążenia)
  • ping -s 1472 -M do 8.8.8.8 - test MTU (1472+28=1500, DF=1)
  • ping -f 8.8.8.8 - flood ping (tylko root, do testów przepustowości)
  • ping -t 2 8.8.8.8 (Windows) - TTL=2 (zatrzyma się na 2. hopie)
  • ping -I eth0 8.8.8.8 (Linux) - ping z konkretnego interfejsu
# Test MTU: jeśli pakiet 1500 B nie przechodzi, zmniejszaj -s
$ ping -M do -s 1472 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 1472(1500) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.5 ms
Ping opcje
47/50
Laboratorium: ip neighbor i tablica sąsiedztwa

Audytowanie tablicy sąsiedztwa

  • ip neigh show - wyświetl tablicę ARP (sąsiedztwa)
  • ip neigh flush all - wyczyść wszystkie wpisy
  • ip neigh flush dev eth0 - wyczyść wpisy dla interfejsu
  • ip neigh add 192.168.1.10 lladdr aa:bb:cc:dd:ee:ff nud permanent dev eth0 - wpis stały
  • ip neigh del 192.168.1.10 dev eth0 - usuń wpis
# Laboratorium: monitorowanie tablicy ARP
$ watch -n 1 'ip neigh show'
# W innym terminalu wykonaj ping do sąsiada
$ ping -c 1 192.168.1.10
# Zobacz zmianę stanu z STALE na REACHABLE
ip neighbor
48/50
Laboratorium: ARP Poisoning - demonstracja

Symulacja ataku ARP Poisoning

  • Wymagane: 3 maszyny wirtualne w tej samej sieci LAN
  • Ofiara A: 192.168.1.10, brama: 192.168.1.1, atakujący: 192.168.1.100
  • Atakujący włącza forwarding IP: echo 1 > /proc/sys/net/ipv4/ip_forward
  • Atakujący uruchamia: arpspoof -i eth0 -t 192.168.1.10 192.168.1.1
  • Na ofierze sprawdź tablicę ARP: arp -a (Windows) lub ip neigh (Linux)
Uwaga! Przeprowadzaj atak tylko w izolowanym środowisku laboratoryjnym.
ARP Poisoning lab
49/50
Troubleshooting - diagnostyka problemów

Inżynieria odwrotna: diagnoza krok po kroku

  • Problem 1: "Nie mogę pingować sąsiada w tej samej sieci"
  • Sprawdź: adres IP, maskę, czy interfejs ma adres (ip addr), czy kabel podłączony
  • Sprawdź tablicę ARP: ip neigh show - jeśli stan INCOMPLETE, ARP nie działa
  • Uruchom tcpdump: tcpdump -i eth0 arp - zobacz, czy ARP Request wychodzi i czy wraca Reply
  • Problem 2: "Ping działa, ale strony WWW się nie ładują"
  • Sprawdź DNS: dig google.pl, sprawdź czy port 80/443 jest otwarty: nc -zv google.pl 80
Troubleshooting
50/50
Cheat Sheet - ściągawka administratora

Najważniejsze polecenia - zestawienie

ZadaniePolecenie (Linux)Polecenie (Windows)
Pokaż adres MACip -br linkgetmac /v
Zmień adres MACip link set eth0 address XX:XX:XX:XX:XX:XXSet-NetAdapter -MacAddress
Pokaż tablicę ARPip neigh showarp -a
Wyczyść tablicę ARPip neigh flush allarp -d *
Dodaj stały wpis ARPip neigh add ... nud permanentarp -s
Przechwyć ARPtcpdump -i eth0 arppktmon (lub Wireshark)
Test łącznościping -c 10 -i 0.5ping -n 10 -w 500
Śledź trasętraceroute -ntracert -d
Pokaż adresy IPip -br addripconfig
Włącz forwarding IPecho 1 > /proc/sys/net/ipv4/ip_forwardSet-ItemProperty ... IpEnableRouter=1
Cheat Sheet