简洁版本
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
长版
RFC6724定义了首选地址的更改。有了这种更改,在几乎每种情况下,IPv6不再是首选地址:(
2012年6月,RFC 对此问题进行了“修复”,该问题于2012年6 月提出。根据您的Windows版本,您可能已立即使用了该新策略(Windows 8.1),或者可能已经通过更新提供了此策略( Windows 8,Windows 7,Windows Vista)。
我们在这里是因为我们要使用IPv6。我们希望撤消更改。
如何放回去
如果您为单个主机获得多个IP地址,则您的计算机必须决定它将使用哪个地址。排名示例可能是:
- IPv6环回
- 本机IPv6
- 唯一本地地址(ULA),例如fdxx ::
- 本地站点,例如fec0
- 6骨
- 6对4
- IPv4兼容
- IPv4
- 特雷多(Teredo),例如2001
在Windows计算机上,此排名称为前缀策略。
前缀政策
您可以通过运行以下命令查看计算机的前缀策略:
>netsh int ipv6 show prefixpolicies
在较早的时期(最初由RFC 3484定义),前缀策略为:
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
因此,您会看到它几乎总是使用IPv6(是的!):
- IPv6环回
- 本地IPv6,ULA,站点本地,6one
- 6对4
- IPv4兼容
- IPv4
- 特雷多
如果您努力进行IPv6部署:它将奏效。
新的前缀政策
在2012年,RFC6724定义了新的优先顺序。如今,前缀策略几乎可以确保您永远不会使用IPv6:
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
您将看到您将永远无法使用您的唯一本地地址或站点本地地址;永久损坏:
- IPv6环回
- 本机IPv6
- IPv4
- 6对4
- 特雷多
- ULA
- 本地站点
- 6骨
- IPv6兼容
如何解决?
我们想要的是修复IPv6,以使ULA比IPv4更受青睐。至少我们希望将ULA(fc00::/7
)的使用推到IPv4之上:
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
这是通过以下方式完成的:
>netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=37 label=13 store=active
这只会使其保持活动状态,直到下一次重新启动。要使更改永久生效:
>netsh interface ipv6 set prefixpolicy fc00::/7 37 13
如果我:
- 努力为我的/ 48生成ULA全局前缀
- 并为我的/ 64选择一个子网ID
- 并将ULA部署到企业中的每台机器
- 并更新DNS服务器以返回除IPv4地址之外的IPv6 ULA地址
计算机至少可以做到的是,出于礼貌使用地址。
奖金Chat不休
的fc00::/7
范围被划分为两个部分:
fd00::/8
-本地生成的GlobalID前缀
fc00::/8
-???
从来没有人真正决定过这样做fc
会是件好事,所以就坐在那里。
该fd
地址被定义为:
fd
[40-bit random GlobalID]
[16-bit subnet]
[64-bits for host assignment]
因此,如果您生成a4d7f6dd66
了一个随机的40位GlobalID作为您的密码,那么您将获得/ 48:
fda4:d7f5:dd66::
/ 48
fda4:d7f5:dd66:face::
/ 64(在face
子网中)
fda4:d7f5:dd66:face::825
作为主机IP地址
SixXS维护了具有唯一本地地址GlobalID前缀的公共数据库,以减少发生冲突的机会,例如:
fdee:e004:2208::/48
:Apple Inc-豹OSX
fdd4:43c8:ba34::/48
:TekSavvy-丹尼·默里(Danny Murray)
fdac:afbd:fea1::/48
:IBM Rational Build Forge-克里斯·富勒
但是由于使用缓慢,以及最初的可疑价值,SixXS于2018年停止了服务。
奖励阅读
netsh interface ipv6 show prefixpolicy
。我明天可能会发布更详细的答案。