在 Windows Vista 及更高版本中,您可以通过 GUI 或使用 为接口分配静态 IPv6 地址和网关netsh
。在 Windows XP 上,也可以使用以下方法静态配置地址:
netsh interface ipv6 add address "Local Area Network" 2001:db8::bad:f00d
默认路由如下:
netsh interface ipv6 add route ::/0 "Local Area Network" 2001:db8::1
但问题在于,如果链路上存在 RA 发射路由器,Windows XP 还将根据通告的前缀为自己分配一个自动生成的地址,并将fe80::
路由器的链路本地 () 地址作为默认网关。
如果主机是静态寻址的,我该如何关闭自动配置?
更新
似乎没有直接的方法可以在不禁用 IPv6 本身的情况下禁用 SLAAC。是否有注册表设置可以执行此操作?
答案1
在我的本地 IPv6 网络上安装 XP 盒子……很有趣。但并不。
因此,从一张图片可以看出,问题在于:XP 对 IPv6 的支持最多只能算是最低限度的。我不认为可能的禁用无状态自动配置 - 甚至使用其他任何方法。
首先,我能够顺利地获得无状态自动配置以及我的隐私地址。隐私地址在全球互联网上有效,我通过访问以下网址确认了这一点:我的 IP 地址工具在 Google Chrome 中。
因此我们开始摆弄。
首先,GUI 不提供任何 IPv6 配置选项;请注意,“属性”是灰色的。您可能需要执行的所有操作都必须通过命令行完成。
@MikePennington 的建议routerdiscovery=disabled
不起作用,因为此命令在 XP 上根本不受支持。它需要 Vista 或更高版本。
所谓的Windows XP 高级网络包可以为 SP1 系统下载,但此功能包含在 SP2 中并且它提供的任何内容都应该可以在任何 SP2 或更高版本的系统上使用。
安装后,ipv6
命令将可用,但它没有提供任何相关信息禁用邻居发现。
不幸的是,XP 上的 Windows 防火墙不区分 IPv4 和 IPv6 连接,因此无法选择在防火墙中阻止 ICMPv6 消息。这排除了任何 Windows 防火墙解决方法。
最后,XP 甚至不支持 DHCPv6。
IPv6 本身自 2003 年发布此代码以来已经成熟(微软似乎从未在 XP 上更新它),因此它受到近十年前对 IPv6 的了解的限制。据我所知,Windows XP 中的 IPv6 支持应被视为“技术预览”,不应在生产中使用,或者至少应非常谨慎地使用并充分了解其局限性。
当然,XP 现在已经接近其使用寿命的终点(有些人会说它已经过了使用寿命的终点),所以如果你能升级盒子,这可能是最简单的解决方案。
TL;DR:看看这幅美丽的图画。哭吧。升级到最新版本的 Windows。
答案2
如果主机是静态寻址的,我该如何关闭自动配置?
如果您的路由器上已经有 IPv6 自动配置,那么值得问的是为什么要分配静态默认值和地址。
但是,为了完成您要查找的操作,请从管理员cmd.exe
shell 中使用此命令...
netsh interface ipv6 set interface "Local Area Connection" routerdiscovery=disabled
来源:MSDN 技术网
编辑
由于您使用的是 XP,请使用 Windows 防火墙阻止 RA 消息。
答案3
我无法具体说出哪一款防火墙具有此功能,但内置的 XP 防火墙并不是唯一可用的软件防火墙。也许其他防火墙软件包可以帮您拦截这些数据包?