Korte versie
Before September 2012 After September 2012
Precedence Prefix Precedence Prefix
---------- ------------- ---------- -------------
50 ::1/128 IPv6 loopback 50 ::1/128 IPv6 loopback
40 ::/0 Native IPv6 40 ::/0 Native IPv6
40 fc00::/7 ULAs 35 ::ffff:0:0/96 IPv4
40 fec0::/10 site-local 30 2002::/16 6to4
40 3ffe::/16 6bone 5 2001::/32 Teredo
30 2002::/16 6to4 3 fc00::/7 ULAs
20 ::/96 IPv4compat 1 fec0::/10 site-local
10 ::ffff:0:0/96 IPv4 1 3ffe::/16 6bone
5 2001::/32 Teredo 1 ::/96 IPv4compat
Lange versie
RFC6724 definieerde een verandering in hoe adressen de voorkeur moeten krijgen. Met deze verandering is IPv6 niet langer het voorkeursadres in bijna alle gevallen :(
Deze vraag, die in juni 2012 werd gesteld, werd “opgelost” door een RFC van september 2012. Afhankelijk van uw Windows-versie, had u dit nieuwe beleid al uit de doos (Windows 8.1), of waarschijnlijk al geleverd via een update (Windows 8, Windows 7, Windows Vista).
We zijn hier omdat we willen dat IPv6 gebruikt wordt; we willen die verandering ongedaan maken.
Hoe het terug te zetten
Als je meerdere IP adressen voor een host krijgt, moet je machine beslissen welk adres hij gaat gebruiken. Een voorbeeld rangschikking zou kunnen zijn:
- IPv6 loopback
- Native IPv6
- Unique-Local adressen (ULA’s), bijv. fdxx::
- Site-local, bijv. fec0
- 6bone
- 6to4
- IPv4compat
- IPv4
- Teredo, b.v. 2001
Op uw Windows machine wordt deze rangschikking de prefix policy genoemd.
Prefix policy
Je kunt de prefix policy van je computer bekijken door te draaien:
>netsh int ipv6 show prefixpolicies
In de oude tijden (oorspronkelijk gedefinieerd door RFC 3484 ), was de prefix policy:
Precedence Prefix
---------- -------------
50 ::1/128 IPv6 loopback
40 ::/0 Native IPv6
40 fc00::/7 ULAs
40 fec0::/10 site-local
40 3ffe::/16 6bone
30 2002::/16 6to4
20 ::/96 IPv4compat
10 ::ffff:0:0/96 IPv4
5 2001::/32 Teredo
Dus je ziet dat het vrijwel altijd IPv6 zou gebruiken (yay!):
- IPv6 loopback
- IPv6 loopback
- Native IPv6, ULAs, site-local, 6one
- 6to4
- IPv4compat
- IPv4
- Teredo
Als je de moeite hebt genomen om IPv6 te implementeren: het is gewoon gelukt.
Nieuwe Prefix Policy
In 2012 werd een nieuwe voorkeursvolgorde gedefinieerd door RFC6724 . Tegenwoordig zorgt de prefix policy er zo'n beetje voor dat je IPv6 nooit zult gebruiken:
Precedence Prefix
---------- -------------
50 ::1/128
40 ::/0 Native IPv6
35 ::ffff:0:0/96 IPv4
30 2002::/16
5 2001::/32
3 fc00::/7 ULAs
1 fec0::/10 site-local
1 3ffe::/16
1 ::/96
Je zult zien dat je nooit in staat zult zijn om je Unique Local Addresses, of site-local adres te gebruiken; het is eeuwig kapot:
- IPv6 loopback
- Native IPv6
- IPv4
- 6to4
- Teredo
- ULAs
- site-local
- 6bone
- IPv6compat
Hoe los je het op?
Wat we willen is om IPv6 zo te maken dat ULAs de voorkeur krijgen boven IPv4. Op zijn minst willen we het gebruik van ULA’s (fc00::/7
) boven dat van IPv4 duwen:
Precedence Prefix
---------- -------------
50 ::1/128
40 ::/0 Native IPv6
37 fc00::/7 ULAs <---------- from 3 up to 37
35 ::ffff:0:0/96 IPv4
30 2002::/16
5 2001::/32
1 fec0::/10 site-local
1 3ffe::/16
1 ::/96
Wat gedaan wordt door:
>netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=37 label=13 store=active
Dat zal het slechts actief houden tot de volgende reboot. Om de verandering permanent te maken:
>netsh interface ipv6 set prefixpolicy fc00::/7 37 13
Als ik:
- de moeite heb genomen om een globale ULA prefix te genereren voor mijn /48
- en een subnet id te kiezen voor mijn /64
- en ULA’s heb uitgerold naar iedere machine in de onderneming
- en de DNS servers heb geupdate om IPv6 ULA adressen terug te geven naast IPv4 adressen
het minste wat de computer kan doen is de beleefdheid hebben om het adres te gebruiken.
Bonus Chatter
De fc00::/7
reeks is verdeeld in twee delen:
fd00::/8
- GlobalID prefix lokaal gegenereerd
fc00::/8
- ???
Niemand heeft ooit echt besloten waar fc
goed voor zou zijn, en dus staat het daar maar.
De fd
adressen zijn gedefinieerd als:
fd
[40-bit random GlobalID]
[16-bit subnet]
Dus als je [64-bits for host assignment]
hebt gegenereerd als je cryptoghpcallly random 40-bit GlobalID, levert dat je /48 op:
a4d7f6dd66
/48
fda4:d7f5:dd66::
/64 (in het fda4:d7f5:dd66:face::
subnet)
face
als host IP adres
SixXS onderhoudt een openbare database van Unieke Local Address GlobalID voorvoegsels om de kans op collissies te verkleinen, bijv. b.v.:
fda4:d7f5:dd66:face::825
: Apple Inc - Leopard OSX
fdee:e004:2208::/48
: TekSavvy - Danny Murray
fdd4:43c8:ba34::/48
: IBM Rational Build Forge - Chris Fuller
Maar vanwege het vertragende gebruik, en de dubieuze waarde in de eerste plaats, stopte SixXS de dienst in 2018.
Bonus Reading