Windows 7 客户端获取错误的 IPv6 前缀长度

Windows 7 客户端获取错误的 IPv6 前缀长度

我目前正在我的专用网络上为 Server 2008 R2 设置 IPv6 和 DHCPv6 以进行测试。我能够通过配置静态,然后设置范围来使 DHCPv6 工作。我还能够配置我的 Centos 机箱以获取 DHCPv6。我无法让 Windows 7 获取正确的前缀长度。

Centos 盒子正确配置了它的链接本地和唯一本地地址:

inet6 addr: fd00:17ef::383a:a9d:4735:9c73/64 Scope:Global
inet6 addr: fe80::400b:1eff:feb5:f9be/64 Scope:Link

并且 Windows 2008 R2 服务器(DHCPv6)也配置正确:

IPv6 Address. . . . . . . . . . . : fd00:17ef::80ed:975c:20ac:fbcd
IPv6 Address. . . . . . . . . . . : fd00:17ef::80ed:975c:20ac:fbce
Link-local IPv6 Address . . . . . : fe80::bd83:34ec:9de4:41d7%11

Windows 7 框似乎具有正确的 IPv6 地址:

IPv6 Address. . . . . . . . . . . : fd00:17ef::395a:803e:4fc5:dfae

Centos 服务器可以在所有 IPv6 接口上 ping 通 DHCP 服务器:

[root@jofs1 ~]# ping6 -c 1 fd00:17ef::80ed:975c:20ac:fbcd
PING fd00:17ef::80ed:975c:20ac:fbcd(fd00:17ef::80ed:975c:20ac:fbcd) 56 data bytes
64 bytes from fd00:17ef::80ed:975c:20ac:fbcd: icmp_seq=1 ttl=128 time=0.422 ms

[root@jofs1 ~]# ping6 -c 1 fd00:17ef::80ed:975c:20ac:fbce
PING fd00:17ef::80ed:975c:20ac:fbce(fd00:17ef::80ed:975c:20ac:fbce) 56 data bytes
64 bytes from fd00:17ef::80ed:975c:20ac:fbce: icmp_seq=1 ttl=128 time=0.378 ms

[root@jofs1 ~]# ping6 -c 1 -I eth0 fe80::bd83:34ec:9de4:41d7 
PING fe80::bd83:34ec:9de4:41d7(fe80::bd83:34ec:9de4:41d7) from fe80::400b:1eff:feb5:f9be eth0: 56 data bytes
64 bytes from fe80::bd83:34ec:9de4:41d7: icmp_seq=1 ttl=128 time=0.194 ms

并且Server 2008 R2服务器可以ping通Centos服务器:

C:\Windows\system32>ping -n 1 fd00:17ef::383a:a9d:4735:9c73

Pinging fd00:17ef::383a:a9d:4735:9c73 with 32 bytes of data:
Reply from fd00:17ef::383a:a9d:4735:9c73: time<1ms

C:\Windows\system32>ping -n 1 fe80::400b:1eff:feb5:f9be

Pinging fe80::400b:1eff:feb5:f9be with 32 bytes of data:
Reply from fe80::400b:1eff:feb5:f9be: time<1ms

Windows 7 机器无法通过 DHCP 分配的地址 ping 通这两台服务器中的任何一台:

C:\Windows\system32>ping -n 1 fd00:17ef::383a:a9d:4735:9c73

Pinging fd00:17ef::383a:a9d:4735:9c73 with 32 bytes of data:
PING: transmit failed. General failure.

C:\Windows\system32>ping -n 1 fd00:17ef::383a:a9d:4735:9c73

Pinging fd00:17ef::383a:a9d:4735:9c73 with 32 bytes of data:
PING: transmit failed. General failure.

链路本地地址有效。检查路由列表,似乎前缀设置不正确:

11    276 fd00:17ef::395a:803e:4fc5:dfae/128                                    On-link

netsh 显示站点前缀长度为 64。我找不到有关为 Server 2008 R2 服务器或 Windows 7 客户端设置 IPv6 前缀长度的任何文档。有没有办法设置正确的前缀长度?

我确实知道 Server 2008 R2 DHCPv6 仅允许 /64 范围。我想知道我是否错过了允许其推出 /64 范围的设置。

答案1

如果你在 Windows 客户端机器上发出route print命令,你就会发现存在类似这样的情况:

  ::1/128                            On-link
  fe80::/64                          On-link
  fe80::/64                          On-link
  fe80::4538:b2f1:41f0:213/128       On-link
  fe80::88a8:ec4a:b2d:fea6/128       On-link
  fd00:17ef::395a:803e:4fc5:dfae/128 On-link

请注意没有 /64 前缀fd00:17ef::这是因为 Windows 中的 DHCPv6 没有发出前缀长度。路由器应该这样做。如果 IPv6 测试实验室中没有路由器,您就无法正确测试 IPv6。

但是如果您想将 Windows 机器用作 IPv6 路由器,这里有一个简单的修复方法(在 Windows 服务器上运行):

netsh interface ipv6 set interface "Local Area Connection" advertise=enabled
netsh interface ipv6 set route fd00:17ef::/64 "Local Area Connection" publish=yes

请注意,您应该根据 RFC 4193 生成 ULA 地址 - 或单击此处:http://unique-local-ipv6.com/

附言:我意识到这是一个 3 年前的问题,但谷歌仍然返回它,所以我做了一些研究并将其放在这里以便其他人可以找到:)

相关内容