ICMPv6 är inte valfritt

I IPv4 är en diagnostisk eftertanke du kan blockera utan att bryta grundläggande anslutbarhet. I IPv6 är ICMPv6 (RFC 4443) bärande: protokollet hänger på det för central länkdrift, så att filtrera det urskillningslöst bryter nätverket. Skälet är att IPv6 flyttade flera jobb som IPv4 spred över , ICMP-routerupptäckt och ICMP-redirects till ett enda ICMPv6-baserat protokoll kallat Grannupptäckt (Neighbor Discovery, RFC 4861). Att förstå Grannupptäckt är att förstå hur en IPv6-länk faktiskt fungerar.

Fem meddelanden gör jobbet

Grannupptäckt definierar fem ICMPv6-meddelandetyper, och nästan allt på en länk är någon kombination av dem:

  • Router Solicitation (RS): en värd ber routrar att tillkännage sig.
  • Router Advertisement (RA): en router tillkännager prefixet och konfigurationsflaggorna (indatan till autokonfiguration i artikeln adresskonfiguration).
  • Neighbor Solicitation (NS): en värd frågar "vem har denna adress, och vad är din länklageradress?"
  • Neighbor Advertisement (NA): svaret som ger den länklageradressen.
  • Redirect: en router berättar för en värd om en bättre nästa hopp för en destination.

Router solicitation och advertisement hanterar "hur konfigurerar jag mig"; neighbor solicitation och advertisement hanterar "hur når jag denna granne"; redirect hanterar "det finns en bättre väg". Det täcker det dagliga livet på en länk.

Adressupplösning utan broadcast

Jobbet ARP gör i IPv4, att mappa en IP-adress till en hårdvaruadress, görs i IPv6 av Neighbor-Solicitation-och-Advertisement-paret. Den viktiga skillnaden är hur frågan ställs. ARP skriker till broadcast-adressen och avbryter varje enhet på segmentet. IPv6 sänder istället Neighbor Solicitation till målets solicited-node-multicast-adress, en grupp som endast den lilla mängden värdar som delar samma adresssuffix kommer att lyssna på. Målet svarar med ett Neighbor Advertisement som bär dess länklageradress. Frågeställaren cachar resultatet, exakt som en ARP-cache fungerar, och omvaliderar det genom Neighbor Unreachability Detection när trafik antyder att en granne kan ha försvunnit.

Solicited-node-multicast-adressen

Solicited-node-multicast-adressen byggs från måladressen: ta prefixet ff02::1:ff00:0/104 och foga till de sista 24 bitarna av målets adress. Eftersom upplösning endast riktar in sig på den handfull värdar som delar de låga 24 bitarna snarare än hela länken, når begäran långt färre maskiner än en ARP-broadcast skulle. Denna konstruktion är varför artikeln adressering behandlar solicited-node-multicast som en del av adressplanen snarare än en eftertanke: varje värd som konfigurerar en adress ansluter automatiskt till motsvarande solicited-node-grupp så att andra kan hitta den.

Ingen broadcast alls

IPv6 har ingen broadcast-adress. Allt IPv4 använde broadcast för, inklusive adressupplösning och routerupptäckt, hanteras av multicast till specifika, väl-avgränsade grupper. Det finns en alla-noder-multicast-grupp (ff02::1) och en alla-routrar-grupp (ff02::2), men rutinmässig upplösning riktar istället in sig på de smala solicited-node-grupperna. Att ersätta "avbryt alla" med "notifiera exakt de relevanta lyssnarna" är mer effektivt på upptagna länkar och är en av de tystare förbättringar IPv6 gör över IPv4.

Att lita på länken

Eftersom Grannupptäckt är oautentiserat som standard kan en illvillig värd på samma länk sända förfalskade Router Advertisements eller Neighbor Advertisements för att omdirigera eller avlyssna trafik, IPv6-analogen till ARP-spoofing. Försvaren lever vid nätverkskanten: RA Guard på switchar släpper router advertisements från portar som inte borde ha routrar, och SEcure Neighbor Discovery (SEND) lägger till kryptografiskt skydd där det driftsätts. Som med IPv4 är den lokala länken en förtroendegräns värd att försvara.

Länkens nervsystem

Sammanfattningen är att IPv6 vek ihop adressupplösning, routerupptäckt och omdirigering till ett enda ICMPv6-baserat protokoll, bytte broadcast-skrik mot riktat multicast, och gjorde det hela väsentligt snarare än valfritt. När du ser en adress i verktyget och lägger märke till dess solicited-node-grupp eller dess link-local-form, tittar du på de delar som Grannupptäckt använder för att låta värdar hitta varandra på en länk utan att någonsin störa grannarna som inte är inblandade.