我目前正在我的专用网络上为 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 年前的问题,但谷歌仍然返回它,所以我做了一些研究并将其放在这里以便其他人可以找到:)