Link-local adresser

Link-local adresser ger IPv6 unika egenskaper som IPv4 inte kan erbjuda. Till exempel en nätverksenhet kan själv konstruera sin egen IPv6 link-lokal adress ur sin MAC-adress, utan hjälp från någon DHCPv6 server. Den egen konstruerade adressen kan sedan användas för att kommunicera med alla nätverksenheter på det lokala delnätet, inklusive med den lokala routern eller den lokala DHCPv6-server. Kommunikationen med routrar eller DHCPv6 servrar är oftast med syfte att få låna en global unicast-adress.

Vissa operativsystem som Windows kör IPv6 som default eftersom en IPv6 link-local adress konstrueras vid start. Även om link-local adresser underlättar den lokala kommunikationen kan de öppna möjlighet till olika risker exempelvis MITM (Man In The Middle) och DoS attacker. Ett sätt att undvika sådana attacker är en korrekt och fullständigt IPv6 konfiguration.

Link-local adresser har flera användningsområden:

  • När IPv6 globala unicast adresser tilldelas dynamiskt via DHCPv6 servrar använder nätverksenheter sin link-local adress för kommunikation med DHCPv6 servrar
  • Förutom IPv6 globala unicast adress får nätverksenheter andra nödvändiga adresser som till exempel default gateway adress.
  • Routrar som kör olika routing-protokoll använder sina link-local adresser för att upptäcka nätverkstopologin så att närliggande routrar kan detekteras.
  • Routrar kan använda link-local adresser som nästa-hopp adresser. Dessa link-local adresser finns i routing-tabeller via dynamiska processer.

Struktur av en link-lokal unicast adress

Bild 1: Link-local unicast adress – format

Bild 1 visar formatet för en link-local unicast-adress. Link-local unicast adresser ligger i intervallet fe80:: /10.

  • De minst signifikanta 64 bitarna används som interface ID.
  • De mest signifikanta 10 bitar används för prefixet
  • Användning av prefixet fe80 :: /10 resulterar i ett antal adresser från fe80 :: /10 till febf :: /10

Adressintervallet från fe80 till febf kan illustreras i binärt format som följande:

Hexadecimalt hextet Binärt
fe80::/10 FE80 1111 1110 1000 0000
FE90 1111 1110 1001 0000
FEA0 1111 1110 1010 0000
FEBF 1111 1110 1011 1111

Med prefix /10 är de första bitar till vänster fördefinierat som fe80 (f=1111, e=1110, 8=1000) vilket illustreras i tabellen ovan. Eftersom en IPv6 adress består av 128 bitar, därav normalt tilldelas 64 bitar till Interface ID, återstår 64 bitar för det globala prefixet som inkluderar subnet ID. Med link-local adresser värda 10 bitar återstår 54 bitar som kan ta alla möjliga kombinationer. Att använda vilka kombinationer som helst för dessa 54 bitar kan ställa till för vissa operativsystem därför brukas de lämnas alla 54 bitar som nollor. Till exempel följande link-local adress:

fe80::5aac:7ff:fe93:da00 eller fe80:0000:0000:0000:5aac:7ff:fe93:da00

De 54 bitarna i ovan link-local adressen har färgmarkerats.

Automatisk konfiguration av en link-local adress

De flesta operativsystem såsom Windows, Linux, och Mac OS X aktiverar IPv6 som default. Det innebär att dessa operativsystem stödjer egna konstruerade adresser eller link-local adresser. Det finns två sätt att konstruera en link-local adress:

  • EUI-64 som används av Cisco IOS, MAC OS X, och Linux exempelvis Ubuntu.
  • Slumpmässigt som används av Windows

EUI-64 link-local adresskonstruktion

Standardiseringsorganisationen IEEE definierar EUI-64 metoden (Extended Unique Identifier). Enligt EUI-64 ska användas MAC adresser (48 bitar) för att konstruera link-local adresser. Link-local adresser har som global prefix fe80::/64 och den slumpmässiga konstruktionen kan illustreras som följande:

Bild 2: EUI-64 link-local uppbyggande
  1. MAC adressen konverteras från hexadecimalt till binärt
  2. MAC adressen delas upp i mitten, det vill säga 24 bitar OUI och 24 bitar DI.
  3. Hexadecimal tal fffe (16 bitar) eller 1111 1111 1111 1110 sätts in i mitten av MAC adressen, det vill säga mellan OUI och DI. fffe är ett fördefinierat värde som regleras av IEEE.
  4. Invertera den universal/lokal bit (sjunde bit i första byte) för att indikera om link-local adressen är unique/universell (0) eller lokal administrerat (1).

En automatisk konfiguration eller dynamisk konfiguration är oftast bästa alternativ för de flesta nätverksenheter men inte för nätverkshanterare som behöver identifieras av nätverksadministratören.

Link-local adresser

Slumpmässigt link-local adresskonstruktion

Att använda EUI-64 för att skapa automatiskt ett 64-bitars Interface ID från en 48-bitars MAC-adress är en lämplig och praktisk teknik. Men det introducerar en vis komplexitet i adresskonstruktionen när den fysiska adressen ska identifieras först. Det leder att vissa operativsystem föredrar använda en annan metod, en slumpmässigt genererande 64-bitars Interface ID.

Cisco IOS, Linux Ubuntu, Mac OS X använder EUI-64 däremot använder Windows operativsystem, senare än Windows XP, ett slumpmässigt genererat Interface ID.

Zone ID

Bredvid en slumpmässigt genererat link-local adress visas Zone ID, ett decimalt nummer som föregås av procenttecken exempelvis %19. Detta är känt som zone ID, eller Scope ID eller Interface Scope, på svenska användningsområde, räckvidd eller identifiering av ett interface och dess räckvidd.

Operativsystem som Windows, Linux och Mac OS använder Zone ID för att associera en link-lokal adress med ett visst interface. Zone ID hjälper till att avgöra vilket Interface som ska användas när en enhet har flera, var och en på en separat länk (delnät). Zone ID är endast lokalt signifikant.

Min dator använder trådlöst Internetuppkoppling men även trådbundet nät. Med Loopback, Bluetooth-nätverksanslutning, VirtualBox och tunneling har min dator upp till 7 interface. Varje Interface bör ha en IPv6 link-local addres. Det är nu som Zone ID hjälper till att identifiera ett specifikt interface.

Här nedan visas min dators IP konfiguration för Ethernet interface en link-local adress med Zone ID %6. Observera IPv4 adressen som är 192.168.1.110

Bild 7: Link-local adress och Zone ID

Här nedan visas min dators WiFi IP konfiguration en link-local adress med Zone ID %19. Observera IPv4 adressen 10.27.75.243

Bild 8: Link-local adress och Zone ID

En dator med två interface kommer att ha två link-lokal adresser. När ett paket ska skickas ut till någon mottagare behövs ett specifikt interface identifieras. Som sagt, Zone ID används för att identifiera rätt interface. På bilden ovan har det ena interface Zone ID %6 och det andra %19.

Med kommandot netsh interface ipv6 show interfaces kan alla Zone ID tas fram:

Bild 9: Zone ID

Duplicate Address Detection

Hur detekteras dubbletter? Link-local adresser byggs upp helt automatisk i varje nätverksenhet och då finns risken för till exempel två lika link-local adresser. IPv6 använder Duplicate Address Detection eller DAD för att säkra att inte förekommer dubbla IPv6 link-local adresser. Förenklat kan vi säga att DAD är ett protokoll som gör att nätverksenheter skickar ut meddelande till andra nätverksenheter och informerar vad för link-local adress som enheten har. Alla andra nätverksenheter kontrollerar att de inte har samma link-local adress.

Om någon mottagare i länken (delnät) detekterar samma link-local adress svarar denne till avsändaren. Hur situationen åtgärdas varierar beroende på operativsystem. Om ingen annan mottagare svarar till avsändaren kan denne verifiera att ingen annan har samma link-local adress.

Detektering av dubbla link-local adresser görs innan adressen tilldelas till en host.