我将路由器设置为使用 OpenWRT,并将其设置为使用通过 SixXs 隧道的 IPv6。我在使用 radvd 进行无状态自动配置时遇到了问题。在我的计算机上,有线连接可以正常获取其 IPv6 地址,但无线连接却无法获取。
在 OpenWRT 论坛上花了一些时间后,我现在非常确定路由器设置正确,问题出在我的 Windows 设置上。此外,我在 openSUSE 11.3 上获取 IPv6 地址没有任何问题。
那么我应该怎么做才能解决这个问题以及我应该发布什么信息?
以下是有线接口的 radvdump 输出:
interface br-lan
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvReachableTime 0;
AdvRetransTimer 0;
AdvCurHopLimit 64;
AdvDefaultLifetime 1800;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
prefix 2001:15c0:67d0::/64
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
}; # End of prefix definition
}; # End of interface definition
以下是无线接口的 radvdump 输出:
#
# radvd configuration generated by radvdump 1.6
# based on Router Advertisement from fe80::a0b7:deff:fef0:5b34
# received by interface br-lan
#
interface br-lan
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvReachableTime 0;
AdvRetransTimer 0;
AdvCurHopLimit 64;
AdvDefaultLifetime 1800;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
prefix 2001:15c0:67d0::/64
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
}; # End of prefix definition
}; # End of interface definition
#
# radvd configuration generated by radvdump 1.6
# based on Router Advertisement from fe80::a0b7:deff:fef0:5b34
# received by interface br-lan
#
interface br-lan
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvReachableTime 0;
AdvRetransTimer 0;
AdvCurHopLimit 64;
AdvDefaultLifetime 1800;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
prefix 2001:15c0:67d0::/64
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
}; # End of prefix definition
}; # End of interface definition
更新:我在路由器上使用 TP-LINK TL-WR1043ND v1.8 路由器和 Backfire 10.03.1-rc4 固件。
答案1
您能做的最好的事情就是确保在网络连接中,属性显示 TCP/IPv6 已启用,并且参数有意义。此外,注册表项中的
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
DisabledComponents 应设置为零(如果此方法有效,则可能就是这种情况)。
如果所有检查都正确通过,那么唯一的解释就是 Windows 7 与您使用的 OpenWRT 版本不兼容。众所周知,微软不遵守标准,大多数路由器制造商都适应 Windows(而不是相反)。
OpenWRT 与 Linux(就您而言是 openSUSE)兼容是合乎逻辑的,因为两者可能都使用非常相似的软件。但 Windows 并非如此。
您没有提到路由器的品牌。但无论如何,如果制造商宣传其与 Windows 7 或 Vista 兼容,我建议您尝试从制造商的网站下载最新的固件。与 OpenWRT 相比,此固件可能更适合 Windows 7。
编辑1
我查看了您的路由器型号,并且我也认为它的固件不支持 IPv6。
最后一个人通过在 /etc/radvd.conf 中添加“AdvLinkMTU 1440”解决了他的问题。
此外,您可以尝试禁用 Windows TCP/IP 自动调整:
netsh interface tcp set global autotuning=disabled
要恢复默认行为:
netsh interface tcp set global autotuning=normal
编辑2
一些标准的错误修复命令(首先创建系统还原点):
将 WINSOCK 条目重置为安装默认值:
netsh winsock reset catalog
将 IPv4 TCP/IP 堆栈重置为安装默认值。
netsh int ipv4 reset reset.log
将 IPv6 TCP/IP 堆栈重置为安装默认值。
netsh int ipv6 reset reset.log
重新启动机器。
答案2
这很奇怪,但是安装 SP1 for 7 可以为我解决该问题。
更新:不是真的。它只工作了一段时间,现在又坏了。
更新 2:我找到了问题所在。我需要在 radvd 中设置更短的路由器广告时间。结果发现,出于某种原因,当我同时连接有线和无线接口时,Windows 不会处理无线接口连接时发出的广告。radvd 的广告周期设置相当保守,所以我不得不手动设置较短的时间。这样,无线会错过第一个广告,但会捕获第二个广告并获取 IPv6 地址。