Windows 7 Client gets incorrect IPv6 Prefix Length

dhcpipv6windows 7windows-server-2008-r2

I am currently setting up IPv6 and DHCPv6 for Server 2008 R2 on my private network for testing. I was able to get DHCPv6 to work by configuring a static, then setting up the scope. I was also able to configured my Centos box to get DHCPv6. I am having problems getting Windows 7 to get the correct prefix length.

Centos box configures its link local and unique local address correctly:

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

And Windows 2008 R2 server (DHCPv6) is configured correctly too:

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

The Windows 7 box appears to have the correct IPv6 address:

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

The Centos server can ping the DHCP server on all IPv6 interfaces:

[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

And the Server 2008 R2 server can ping the Centos server:

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

The Windows 7 box cannot ping either of these two servers by the DHCP assigned address:

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.

The link-local address works. Checking the route list, it seems the prefix is not getting set correctly:

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

The netsh shows the site prefix length to be 64. I can't find any documents on setting the IPv6 prefix length for either the Server 2008 R2 server or the Windows 7 client. Is there a way to set the correct prefix length?

I do know that Server 2008 R2 DHCPv6 only allows /64 scopes. I'm wondering if there's a setting I missed to allow it to push out the /64 scope.

Best Answer

Provided you issue route print command on Windows Client machine you would realize that something like this is present:

  ::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

Notice that there is NO /64 prefix for your fd00:17ef:: this is because DHCPv6 in Windows is not issuing Prefix Lenght. Router is supposed to do that. If you have no router in IPv6 test-lab you can't ever test IPv6 properly.

However if you want to use your Windows machine as a IPv6 router here is an easy fix for you (run on Windows server):

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

Please note that you should generate ULA adresses according to RFC 4193 - or click here: http://unique-local-ipv6.com/

PS: I have realized this is 3 years old question, but google still returns it, so I did some research and put it here so others can find:)