Obsah

ICMPv6

ICMPv6 (Internet Control Message Protocol version 6) je síťový protokol pro IPv6, který slouží k přenosu řídicích a chybových zpráv v IPv6 sítích. Je to základní součást IPv6 a hraje zásadnější roli než ICMPv4 v IPv4.

Co je ICMPv6

ICMPv6 je protokol síťové vrstvy (Layer 3 v OSI modelu), který:

Základní informace:

Rozdíly oproti ICMPv4

ICMPv6 má rozšířené funkce oproti ICMPv4:

Funkce ICMPv4 ICMPv6
Hlášení chyb Ano Ano
Ping/Echo Ano Ano
Neighbor Discovery Ne (používá ARP) Ano
Router Discovery ICMP Router Discovery Integrováno
Path MTU Discovery Volitelné Povinné
Multicast Management IGMP (separátní) MLD (součást ICMPv6)
Autokonfigurace DHCP SLAAC + DHCPv6

Struktura ICMPv6 paketu

IPv6 hlavička
+------------------+
| Next Header = 58 | (ICMPv6)
+------------------+

ICMPv6 hlavička
+------------------+
| Type (8 bitů)    | Typ zprávy (0-255)
+------------------+
| Code (8 bitů)    | Podtyp zprávy
+------------------+
| Checksum (16 b)  | Kontrolní součet
+------------------+
| Data (proměnná)  | Závislé na typu zprávy
+------------------+

Pole:

Typy ICMPv6 zpráv

ICMPv6 zprávy se dělí do dvou hlavních kategorií:

1. Chybové zprávy (Error Messages)

Type hodnoty 1-127 jsou rezervovány pro chybové zprávy:

Type Název Význam
1 Destination Unreachable Cíl nedosažitelný
2 Packet Too Big Paket je příliš velký
3 Time Exceeded Vypršel čas (TTL = 0)
4 Parameter Problem Problém s hlavičkou paketu

Příklad - Destination Unreachable (Type 1):

Code hodnoty:

2. Informační zprávy (Informational Messages)

Type hodnoty 128-255 jsou pro informační zprávy:

Type Název Význam
128 Echo Request Ping požadavek
129 Echo Reply Ping odpověď
133 Router Solicitation Hledání routeru
134 Router Advertisement Oznámení routeru
135 Neighbor Solicitation Hledání souseda (jako ARP)
136 Neighbor Advertisement Odpověď souseda
137 Redirect Přesměrování na lepší cestu

Neighbor Discovery Protocol (NDP)

Nejdůležitější funkce ICMPv6 - nahrazuje ARP, ICMP Router Discovery a další z IPv4.

Hlavní funkce NDP

1. Router Discovery - Nalezení routerů v síti

2. Address Resolution - Zjištění MAC adresy (náhrada ARP)

3. Duplicate Address Detection (DAD) - Kontrola, zda adresa již není používána

4. Redirect - Router řekne hostiteli o lepší cestě

Příklad: Address Resolution (náhrada ARP)

Hostitel A chce komunikovat s hostitelem B:

1. A pošle Neighbor Solicitation (Type 135):
   Src: fe80::1
   Dst: ff02::1:ff00:2 (solicited-node multicast)
   "Kdo má adresu 2001:db8::2? Pošli svoji MAC adresu!"

2. B odpoví Neighbor Advertisement (Type 136):
   Src: 2001:db8::2
   Dst: fe80::1
   "To jsem já! Moje MAC je 00:11:22:33:44:55"

3. A si uloží do Neighbor Cache:
   2001:db8::2 -> 00:11:22:33:44:55

Příklad: Router Discovery

Hostitel se připojí do sítě:

1. Hostitel pošle Router Solicitation (Type 133):
   Src: fe80::1
   Dst: ff02::2 (all-routers multicast)
   "Kdo je tady router?"

2. Router odpoví Router Advertisement (Type 134):
   Src: fe80::a
   Dst: ff02::1 (all-nodes multicast)
   "Já jsem router!"
   "Prefix: 2001:db8::/64"
   "Default gateway: fe80::a"
   "MTU: 1500"
   "Hop Limit: 64"

3. Hostitel si nakonfiguruje adresu pomocí SLAAC:
   2001:db8::1234:5678:9abc:def0/64

SLAAC (Stateless Address Autoconfiguration)

ICMPv6 umožňuje automatickou konfiguraci IPv6 adres bez DHCP serveru:

Proces SLAAC:

1. Hostitel vygeneruje link-local adresu:
   fe80::interface-id

2. DAD (Duplicate Address Detection):
   Neighbor Solicitation na vlastní adresu
   Pokud nikdo neodpoví -> adresa je unikátní

3. Router Discovery:
   Router Solicitation -> Router Advertisement
   Získá prefix sítě (např. 2001:db8::/64)

4. Vytvoření globální adresy:
   Prefix + interface-id = 2001:db8::interface-id

5. Konfigurace default gateway:
   Link-local adresa routeru (fe80::router-id)

Path MTU Discovery

ICMPv6 povinně implementuje PMTU Discovery (v IPv4 volitelné):

Jak funguje:

1. Hostitel pošle paket velikosti 1500 bytů

2. Někde na cestě je MTU pouze 1280 bytů

3. Router pošle ICMPv6 Packet Too Big (Type 2):
   "Váš paket je moc velký, maximální MTU je 1280"

4. Hostitel upraví velikost paketů na 1280 bytů

5. Pakety procházejí bez problémů

Důležité: IPv6 neumožňuje fragmentaci na routerech! Pouze odesílatel může fragmentovat.

Minimální MTU pro IPv6: 1280 bytů (povinné)

Multicast Listener Discovery (MLD)

MLD je součástí ICMPv6 a nahrazuje IGMP z IPv4. Používá se pro správu multicast skupin.

MLD zprávy:

Ping v IPv6

Echo Request a Echo Reply fungují podobně jako v IPv4:

# Linux/Unix
ping6 2001:db8::1
ping6 -c 4 2001:db8::1
 
# Windows
ping 2001:db8::1
ping -6 2001:db8::1
 
# Ping link-local adresy (nutno zadat rozhraní)
ping6 fe80::1%eth0

ICMPv6 zprávy:

Příklad výstupu:

PING 2001:db8::1(2001:db8::1) 56 data bytes
64 bytes from 2001:db8::1: icmp_seq=1 ttl=64 time=0.123 ms
64 bytes from 2001:db8::1: icmp_seq=2 ttl=64 time=0.098 ms
64 bytes from 2001:db8::1: icmp_seq=3 ttl=64 time=0.115 ms

--- 2001:db8::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss

Traceroute v IPv6

# Linux/Unix
traceroute6 2001:db8::1
tracepath6 2001:db8::1
 
# Windows
tracert 2001:db8::1

Princip:

ICMPv6 a bezpečnost

Důležitost ICMPv6

NIKDY neblokujte ICMPv6 kompletně! Na rozdíl od ICMPv4 je ICMPv6 kriticky důležité pro:

Doporučení pro firewall

Povolte minimálně tyto ICMPv6 zprávy:

Příchozí (Inbound):

Odchozí (Outbound):

Bezpečnostní hrozby:

Ochrana:

Diagnostické nástroje

Linux/Unix:

# Sledování ICMPv6 provozu
tcpdump -i eth0 icmp6
 
# Filtrování konkrétních typů
tcpdump -i eth0 'icmp6 and ip6[40] == 135'  # Neighbor Solicitation
 
# Wireshark filtr
icmpv6.type == 135  # Neighbor Solicitation
icmpv6.type == 136  # Neighbor Advertisement
 
# Zobrazení Neighbor Cache
ip -6 neigh show

Windows:

# Neighbor Cache
netsh interface ipv6 show neighbors
 
# Interface konfigurace
netsh interface ipv6 show interface
 
# Route tabulka
netsh interface ipv6 show route

Příklad: Analýza ICMPv6 paketu

Neighbor Solicitation zachycený Wiresharkem:

Frame 42: 86 bytes on wire
Ethernet II
  Destination: 33:33:ff:00:00:01
  Source: 00:0c:29:3e:7f:a1
  Type: IPv6 (0x86dd)

Internet Protocol Version 6
  Source: fe80::20c:29ff:fe3e:7fa1
  Destination: ff02::1:ff00:1 (solicited-node multicast)
  Next Header: ICMPv6 (58)

Internet Control Message Protocol v6
  Type: Neighbor Solicitation (135)
  Code: 0
  Checksum: 0x1234 [correct]
  Target Address: 2001:db8::1
  ICMPv6 Option (Source link-layer address)
    Type: Source link-layer address (1)
    Length: 1 (8 bytes)
    Link-layer address: 00:0c:29:3e:7f:a1

Shrnutí

ICMPv6 je kriticky důležitý protokol pro IPv6:

Hlavní funkce:

Klíčové rozdíly oproti ICMPv4:

Pamatujte: