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ý:

Hlásí chyby při doručování paketů

Poskytuje diagnostické funkce (ping, traceroute)

Zajišťuje Neighbor Discovery (nahrazuje ARP z IPv4)

Podporuje automatickou konfiguraci (SLAAC)

Implementuje Path MTU Discovery

Zpracovává Multicast Listener Discovery (MLD)

Základní informace:

Číslo protokolu: 58 (v IPv6 hlavičce)

Standard: RFC 4443 (hlavní), RFC 4861 (Neighbor Discovery)

Povinný: Musí být implementován na všech IPv6 zařízeních

Nástupce: ICMPv4 (IPv4)

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:

Type - typ ICMPv6 zprávy (např. 128 = Echo Request)

Code - upřesnění typu (většinou 0)

Checksum - kontrolní součet pro detekci chyb

Data - specifická data podle typu zprávy

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:

0 - No route to destination (žádná cesta)

1 - Communication administratively prohibited (zakázáno firewallem)

3 - Address unreachable (adresa nedosažitelná)

4 - Port unreachable (port nedostupný)

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

Router Solicitation (Type 133) - „Kdo je tady router?“

Router Advertisement (Type 134) - „Já jsem router, tady jsou parametry sítě“

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

Neighbor Solicitation (Type 135) - „Kdo má IPv6 adresu X?“

Neighbor Advertisement (Type 136) - „To jsem já, moje MAC je Y“

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:

Type 130 - Multicast Listener Query

Type 131 - Multicast Listener Report (MLDv1)

Type 132 - Multicast Listener Done (MLDv1)

Type 143 - MLDv2 Report

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:

Type 128 - Echo Request (požadavek)

Type 129 - Echo Reply (odpověď)

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:

Postupně zvyšuje Hop Limit (TTL)

Router vrací ICMPv6 Time Exceeded (Type 3)

Ukazuje cestu paketu přes síť

ICMPv6 a bezpečnost

Důležitost ICMPv6

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

Neighbor Discovery (bez něj síť nefunguje)

Path MTU Discovery (bez něj problémy s velkými pakety)

SLAAC (automatická konfigurace)

Doporučení pro firewall

Povolte minimálně tyto ICMPv6 zprávy:

Příchozí (Inbound):

Type 1 (Destination Unreachable)

Type 2 (Packet Too Big) - kritické pro PMTU

Type 3, Code 0 (Time Exceeded)

Type 128 (Echo Request) - pokud chcete odpovídat na ping

Type 133 (Router Solicitation)

Type 135 (Neighbor Solicitation) - kritické pro NDP

Odchozí (Outbound):

Type 129 (Echo Reply)

Type 134 (Router Advertisement) - pokud jste router

Type 136 (Neighbor Advertisement) - kritické pro NDP

Bezpečnostní hrozby:

Rogue Router Advertisements - falešné routery

Neighbor Discovery DoS - záplavy NS/NA zpráv

SLAAC attacks - útok na autokonfiguraci

ICMPv6 floods - zahlcení zpráv

Ochrana:

RA Guard - ochrana proti falešným routerům

NDP Inspection - validace NDP zpráv

Rate limiting - omezení množství ICMPv6 zpráv

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:

Hlášení chyb a diagnostika (ping, traceroute)

Neighbor Discovery - náhrada ARP

Router Discovery - nalezení default gateway

SLAAC - automatická konfigurace bez DHCP

Path MTU Discovery - detekce maximální velikosti paketu

Multicast - správa multicast skupin (MLD)

Klíčové rozdíly oproti ICMPv4:

Mnohem důležitější - nesmí být blokován

Integruje funkce ARP, IGMP, DHCP

Povinné pro všechna IPv6 zařízení

Robustnější bezpečnostní mechanismy

Pamatujte:

Bez ICMPv6 IPv6 síť nefunguje

Vždy povolte minimálně NDP zprávy (Type 133-137)

Path MTU Discovery vyžaduje Type 2 (Packet Too Big)