Netwerken 3
00
Hoofdstuk 5

IPv6

Adressering, header, pakketgrootte, autoconfiguratie en VyOS-configuratie van het nieuwe Internet Protocol.

0%
voltooid

1Waarom IPv6? Verschillen met IPv4

Een toestel stelt zijn eigen IPv6-adres samen uit de prefix van de router en zijn eigen interface ID.
Een toestel stelt zijn eigen IPv6-adres samen uit de prefix van de router en zijn eigen interface ID.

IPv6 (vroeger "IP next generation") is de opvolger van IPv4. IPv5 bestaat wel: een experimenteel streaming-protocol (ST2), nooit gebruikt als opvolger.

Beperking IPv4Gevolg / oplossing in IPv6
32-bit adressen zijn op (NAT is noodverband en breekt protocollen zoals Skype)128-bit adressen: 2^128 = 3,4 x 10^38
Routingtabellen te groot (±400.000 tot 700.000 rijen), adressering niet hiërarchischSterk hiërarchische adressering (RIPE → provider → bedrijf → subnet)
Geen beveiliging in IP zelf (IPsec is optioneel)IPsec ingebouwd: Authentication Header en ESP als extension headers
Beperkte realtime/QoS-ondersteuning (Type of Service wordt onleesbaar bij encryptie)Traffic Class + Flow Label
Handmatige configuratie / DHCP nodigAutoconfiguratie (plug and play)
+25 XP

2Adressen: soorten en notatie

Een IPv6-adres hoort bij een interface, niet bij een node. Eén interface heeft meerdere adressen (link-local + globaal + multicast...). Een subnet-prefix hoort bij een link.

SoortBetekenisVoorbeeld van gebruik
UnicastID van 1 interface. Pakket komt aan bij die ene interface.Je pc die een webserver contacteert; link-local adres voor buren op de link.
MulticastID van een groep interfaces. Pakket komt aan bij ALLE interfaces van de groep. Heeft een scope-veld. Vervangt broadcast. Nooit bronadres.FF02::2 alle routers (router solicitation), FF02::1 alle nodes, FF05::43 alle NTP-servers in de site, FF02::1:2 alle DHCP-servers.
AnycastID van een groep interfaces (meestal verschillende nodes). Pakket gaat naar de dichtstbijzijnde (volgens routing). Enkel voor routers, nooit bronadres.Redundante servers/DNS/NTP: de dichtstbijzijnde antwoordt.
+25 XP

3Notatie en inkorten

Voorkeurvorm: 8 groepen van 4 hex-cijfers, gescheiden door : (8 x 16 bit = 128 bit). Kleine/hoofdletters maakt niet uit.

Inkortregels
Stap 1 van 3
Regel 1: voorloopnullen weglaten

Per groep mag je de nullen vooraan weglaten: 0DB8 → DB8, 0000 → 0, 0008 → 8.

VolledigIngekort
2001:0db8:0000:0000:0000:ff00:0042:83292001:db8::ff00:42:8329
1080:0:0:0:8:800:200C:417A1080::8:800:200C:417A
FF01:0:0:0:0:0:0:101FF01::101
0:0:0:0:0:0:0:1 (loopback)::1
0:0:0:0:0:0:0:0 (ongedefinieerd)::
fe80:0000:0000:0000:0250:56ff:fec0:0008fe80::250:56ff:fec0:8
Oefen: schrijf links uit rechts en omgekeerd.
  • Prefix met lengte: 2001:6A8:540::/48. Masker is altijd een prefixlengte, geen dotted mask.
  • Mixvorm IPv4/IPv6: x:x:x:x:x:x:d.d.d.d, bv. ::FFFF:129.144.52.38 of ::13.1.68.3 (IPv4-compatibel adres: 80 bits nul, 16 bits nul, 32 bits IPv4).
  • Hiërarchie: RIPE NCC 2001:600::/23 → BELNET 2001:6A8::/32 → KdG 2001:6A8:540::/48 → student-subnet 2001:6A8:540:101::/64. Provider geeft meestal een /48, je geeft aan clients een /64.
+25 XP

4Speciale adressen: link-local, unique local, loopback, zones

TypePrefixEigenschappen
Link-localfe80::/10 (bits 1111 1110 10)Enkel geldig binnen de link, nooit door een router doorgestuurd. Bevat interface ID (uit MAC). Elke IPv6-interface heeft er automatisch één. Privaat.
Unique local (ULA)fc00::/7Privé binnen een site/organisatie, niet geroute op internet. Bevat een 40-bit pseudo-random nummer zodat bij samenvoegen van 2 sites weinig kans op conflict is. Opvolger van site-local.
Site-localfec0::/10Afgeschaft sinds 2004 (RFC 3879), vervangen door unique local.
Multicastff00::/8Begint steeds met ff. Daarna flags (well-known of transient), scope (node 1, link 2, site 5, organisatie 8, internet F) en group ID.
Loopback::1/128Virtuele interface om naar jezelf te sturen (testen). Nooit op fysieke interface, nooit geforward.
Ongedefinieerd::/128"Geen adres": enkel als bron (bv. tijdens DAD), nooit als doeladres.
+25 XP

5APIPA-equivalent, zones en de dissectie van fe80::250:56ff:fec0:8%1

Probleem zones: pc met 2 netwerkkaarten, beide met link-local (fe80::1 en fe80::2), en je wil fe80::3 bereiken. Link-local adressen zijn op elke link hetzelfde formaat, dus het OS weet niet langs welke kaart. Oplossing: zones, een postfix %zone-id die de interface of link aanduidt.

OSZone-IDVoorbeeld
Windowsnumeriek (interface-index)fe80::3%1
Linuxinterfacenaamfe80::3%eth0
BSDinterfacenaamfe80::3%pcn0
De zone staat niet altijd zichtbaar in de routetabel (route print / ip -6 route).
Deel van fe80::250:56ff:fec0:8%1Betekenis
fe80Link-local prefix (fe80::/10): adres geldt enkel op deze link, wordt niet doorgestuurd door routers.
::Ingekorte reeks nullen: hier 3 groepen 0000 (48 bit). Voluit fe80:0000:0000:0000:0250:56ff:fec0:0008. De eerste 64 bit zijn dus de prefix, de laatste 64 bit de interface ID.
%1Zone-ID (Windows): interface nummer 1. Zegt via welke netwerkkaart/link dit adres bereikt wordt. Geen deel van het adres zelf.
250:56ff:fec0:8Interface ID (EUI-64). Herkenbaar aan ff:fe in het midden. MAC = 00:50:56:C0:00:08: neem 0250:56 + c0:0008, haal ff:fe weg en flip de 7e bit van het eerste byte terug (02 → 00).
+25 XP

6IPv6 header en extension headers

Veld IPv6 (40 bytes vast)GrootteFunctie
Version4 bit= 6
Traffic Class8 bitSoort verkeer/prioriteit (QoS)
Flow Label20 bitLabel voor 1 verkeersstroom (QoS, realtime)
Payload Length16 bitLengte van alles na de header (incl. extension headers)
Next Header8 bitType van de volgende header (extension of TCP/UDP/ICMPv6)
Hop Limit8 bitElke router -1, bij 0 weggooien
Source / Destination Address2 x 128 bitBron en doel
IPv4IPv6
Header length, Identification, Flags, Fragment offset, Header checksumVerwijderd (fragmentatie zit in Fragment header, checksum door hogere lagen)
Type of Service→ Traffic Class
Total length→ Payload length
Protocol→ Next Header
TTL→ Hop Limit
Options (variabel)→ Extension headers
—Nieuw: Flow Label
Variabele headerlengte (20-60 bytes), 32-bit adressenVaste 40 bytes, 128-bit adressen (header ±2x zo groot, maar eenvoudiger)
Enkel het versienummer behoudt zijn plaats en betekenis.
Volgorde extension headers (keten via Next Header)
Stap 1 van 6
1. IPv6 header

Next Header wijst naar de volgende header.

+25 XP

7TTL wordt Hop Limit, checksum en ICMPv6

  • Checksum: de IPv6-header heeft geen checksum meer (minder werk voor routers). Hogere lagen (TCP/UDP/ICMPv6) moeten zelf checksummen, bij UDP nu verplicht, en ze omvatten de pseudo-header (bron, doel, protocol).
  • ICMPv6 is verplicht voor elke IPv6-node. Het regelt foutmeldingen, ping, autoconfig en buren (vervangt ARP en IGMP).
TypeNaamBetekenis
1Destination Unreachablecode 0 no route, 1 communication prohibited (firewall), 3 address unreachable (doel antwoordt niet), 4 port unreachable
2Packet Too BigPakket groter dan MTU, bevat de MTU (basis van Path MTU Discovery)
3Time Exceededcode 0 hop limit exceeded, 1 fragment reassembly time exceeded
4Parameter Problemfoute header, onbekende Next Header of optie
128 / 129Echo Request / ReplyPing
130 / 131 / 132Group Membership Query/Report/ReductionMulticast-groepen (MLD)
133 / 134Router Solicitation / AdvertisementAutoconfig
135 / 136Neighbor Solicitation / AdvertisementBuren en DAD (vervangt ARP)
137RedirectBetere route aangeven
+25 XP

8Pakketgrootte, MTU en fragmentatie

  • MTU = Maximum Transmission Unit: grootste pakket (in octets) dat over een link past. Path MTU = kleinste link-MTU op het hele pad.
  • Fragmentatie = een te groot pakket opsplitsen in kleinere stukken die de ontvanger weer samenvoegt.
  • IPv6 eist een link-MTU van minimaal 1280 octets. Ethernet-default is 1500. Een link die dat niet haalt moet zelf (laag 2) fragmenteren.
  • Een node moet na reassembly pakketten van minstens 1500 kunnen ontvangen.
  • Met Fragment header is de max. payload 1280 - 40 (IPv6 header) - 8 (Fragment header) = 1232 octets.
IPv4
  • Routers onderweg mogen fragmenteren
  • Header-velden Identification, Flags, Fragment offset in elke header
  • Router belast met opsplitsen en CPU-werk
  • Min. MTU 576 (68)
IPv6
  • Enkel de bron fragmenteert (Fragment header)
  • Fragmentinfo alleen aanwezig wanneer nodig
  • Routers sturen enkel door: sneller
  • Min. MTU 1280, aanbevolen 1500
Wat gebeurt er met een te groot pakket? (Path MTU Discovery)
Stap 1 van 5
Bron verstuurt pakket

Met de MTU van de eigen link (bv. 1500).

+25 XP

9Autoconfiguratie: stateless, stateful en mobiel

Doel: plug and play. Een host krijgt zonder handwerk een adres, prefix, gateway en DNS.

Stateless autoconfiguration (SLAAC)
Stap 1 van 6
1. Link-local adres maken

Host vormt fe80:: + interface ID (EUI-64 uit MAC, of random wegens privacy, RFC 3041/privacy extensions). Zonder router blijft dit werken.

Stateful autoconfiguration (DHCPv6)
Stap 1 van 3
1. Router zet Managed-flag (M) aan in RA

Daarmee zegt de router: "vraag je adres aan een DHCPv6-server". O-flag = enkel de overige info (DNS...) via DHCPv6, adres blijft SLAAC.

Stateless (SLAAC)Stateful (DHCPv6)
Wie geeft adres?Host zelf, uit prefix in RA + interface IDDHCPv6-server
ControleGeenBeheerder (lease, logging)
ProtocollenICMPv6 133/134/135/136UDP 546 (client) → 547 (server), FF02::1:2
RA-flagA-flag (autonomous)M-flag (managed), O-flag (other config)
  • Privacy extensions (RFC 3041): vervang het MAC-gebaseerde interface ID door een willekeurige, wisselende waarde, zodat je toestel niet door het MAC-adres te volgen is.
  • Op Windows toont ipconfig meestal een tijdelijk adres naast het stabiele adres.
+25 XP

10QoS: Traffic Class, Flow Label en beveiliging

  • QoS (Quality of Service) = bepaalde verkeerssoorten (VoIP, video) voorrang/gegarandeerde kwaliteit geven.
  • Traffic Class (8 bit): klasse/prioriteit per pakket. Opvolger van Type of Service.
  • Flow Label (20 bit): label voor één verkeersstroom (zelfde bron/doel/applicatie). Routers kunnen zo alle pakketten van die stroom hetzelfde behandelen zonder in de upper-layer header te kijken, ook als die versleuteld is. Dient voor QoS en realtime-diensten. Nog experimenteel, nodes die het niet ondersteunen zetten het op 0.
Extension headerDoel
AH (Authentication Header)Herkomst, integriteit, bescherming tegen replay en tampering. Velden: SPI (32-bit afgesproken nummer, onbekende SPI geweigerd), volgnummer, ICV (hash met gedeeld geheim, over het hele pakket).
ESP (Encapsulating Security Payload)Alles van AH + vertrouwelijkheid (encryptie), enkel over de payload. Sleuteluitwisseling via UDP poort 500.
IPsec is bij IPv6 standaard voorzien (bij IPv4 optioneel).
+25 XP

11Overgang IPv4 naar IPv6

TechniekWerking
Dual stackHost/router draait IPv4 én IPv6 tegelijk (alle moderne OS). Gebruikt IPv6 indien mogelijk.
TunnelenIPv6-pakket wordt ingepakt in een IPv4-pakket en over de IPv4-infrastructuur getunneld. Een tunnel telt als 1 hop en is onzichtbaar voor traceroute.
6to4Tunnel via IPv4-protocol 41, prefix 2002::/16 (+ het IPv4-adres), RFC 3056.
TeredoIPv6 ingekapseld in UDP (door NAT heen), ingebouwd in Windows XP SP2+. In de praktijk een te grote omweg.
IPv4-compatibel adres::a.b.c.d: 96 bits nul + IPv4-adres in de laagste 32 bit.
NAT64 (algemene kennis)Vertaalt IPv6 ↔ IPv4 op een gateway (bv. met prefix 64:ff9b::/96), zodat IPv6-only hosts IPv4-servers bereiken.
+25 XP

12Praktisch: IPv6 op VyOS

Interface-adressen instellen (globaal, EUI-64, of autoconfig):

bash
configure

# Autoconfiguratie: interface krijgt adres via RA (SLAAC)
set interfaces ethernet eth1 ipv6 address autoconf

# Vast globaal adres
set interfaces ethernet eth1 address '2001:1111:1111:4567::1/64'

# EUI-adres (MAC wordt ingevuld)
set interfaces ethernet eth1 ipv6 address eui64 'fc00:1111:1111::/64'

commit
save
Interface-configuratie IPv6 (slides: "eui" = EUI-64, MAC ingevuld).

DHCPv6-server (stateful). Let op: dit is géén Router Advertisement. Het geeft enkel adressen en opties; de M/O-flag in de RA verwijst hiernaar.

bash
# Adresbereik (leasebereik)
set service dhcpv6-server shared-network-name LAN subnet 2001:1111:1111:4567::/64 address-range start 2001:1111:1111:4567::100 stop 2001:1111:1111:4567::200

# Domain search
set service dhcpv6-server shared-network-name LAN subnet 2001:1111:1111:4567::/64 domain-search kdg.be

# DNS (Google)
set service dhcpv6-server shared-network-name LAN subnet 2001:1111:1111:4567::/64 name-server 2001:4860:4860::8844
DHCPv6 range, domain search en DNS.

Router Advertisements (RA) sturen: de router laat zijn prefix en flags weten (ICMPv6 type 134, doel FF02::1 all nodes). De RS komt van de client (type 133, doel FF02::2).

bash
# Prefix adverteren (meestal /48 van provider, /64 voor clients)
set interfaces ethernet eth0 ipv6 router-advert send-advert true
set interfaces ethernet eth0 ipv6 router-advert prefix 2001:1111:1111:4567::/64

# Flags per prefix
set interfaces ethernet eth0 ipv6 router-advert prefix 2001:1111:1111:4567::/64 on-link-flag true
set interfaces ethernet eth0 ipv6 router-advert prefix 2001:1111:1111:4567::/64 autonomous-flag true
set interfaces ethernet eth0 ipv6 router-advert prefix 2001:1111:1111:4567::/64 valid-lifetime 2592000
set interfaces ethernet eth0 ipv6 router-advert prefix 2001:1111:1111:4567::/64 preferred-lifetime 604800

# Algemene RA-opties
set interfaces ethernet eth0 ipv6 router-advert managed-flag true
set interfaces ethernet eth0 ipv6 router-advert other-config-flag true
set interfaces ethernet eth0 ipv6 router-advert cur-hop-limit 64
set interfaces ethernet eth0 ipv6 router-advert default-lifetime 1800
set interfaces ethernet eth0 ipv6 router-advert reachable-time 0
set interfaces ethernet eth0 ipv6 router-advert retrans-timer 0
set interfaces ethernet eth0 ipv6 router-advert link-mtu 1500
set interfaces ethernet eth0 ipv6 router-advert default-preference high
set interfaces ethernet eth0 ipv6 router-advert name-server 2001:4860:4860::8888
Router Advertisement-opties. De exacte syntaxis kan per VyOS-versie licht verschillen.
bash
# RA's ontvangen op een VyOS-router zelf (als root)
sysctl -w net.ipv6.conf.eth0.accept_ra=2
Een router negeert standaard RA's. accept_ra=2 laat ze toch toe.
VyOS-optieRA-veldBetekenis
autonomous-flag (A)Autonomous address configPrefix mag gebruikt worden voor stateless (SLAAC)
on-link-flag (L)On-linkPrefix is lokaal op deze link bereikbaar
managed-flag (M)Managed address configHost moet stateful DHCPv6 gebruiken voor adres + info
other-config-flag (O)Other configAdres via SLAAC, overige info (DNS) via DHCPv6. Telt niet mee als M al true is
cur-hop-limitCur Hop Limit0-255, standaard Hop Limit voor uitgaande pakketten, 0 = ongedefinieerd
default-lifetimeRouter Lifetime0-65535 s dat de router default router blijft, 0 = geen default router
reachable-timeReachable Timems dat een buur bereikbaar wordt geacht na bevestiging
retrans-timerRetrans Timertijd tussen heruitgezonden Neighbor Solicitations
link-mtuMTUMTU op de link (min. 1280)
valid-lifetimeValid Lifetimes dat de prefix geldig blijft op de link
preferred-lifetimePreferred Lifetimes dat het adres voor nieuwe verbindingen gebruikt mag worden (korter dan valid: tijd om vernieuwing te vragen)
default-preferenceRouter preferencelow / medium / high: voorrang van deze router
bash
# Windows
C:\> ipconfig
C:\> route print -6
::/0            fe80::20a:42ff:feb0:5400   default route
::1/128         On-link                    loopback
2001:db8::/64   On-link                    lokaal subnet
fe80::/64       On-link                    link-local
ff00::/8        On-link                    multicast

# Linux
ip -6 addr
ip -6 route
ping -6 fe80::3%eth0
Controle: /128 = specifiek adres, /64 = subnet, ::/0 = default route, ff00::/8 = multicast.
+25 XP
Volgende stap

Nog niet klaar? Je kan altijd terugkomen.

Leer de begrippen