SixXS::Sunset 2017-06-06

Windows 7 site prefix push using DHCPv6
[ch] Shadow Hawkins on Monday, 25 April 2011 16:30:50
Since 2 days I am struggling with a specific IPv6 problem where I don't know whom I might ask. As a lot of experts seem to be available here in the forum I just try it here :) I am currently running an IPv6 local network on unique local addresses (ULA). My prefix has been registered at http://www.sixxs.net/tools/grh/ula/. What I would like to achieve is to add global addresses to the same clients. So my clients will have a global IPv6 address when the IPv6 tunnel is up and only ULA addresses when the tunnel is unavailable. Specifically I would like to keep ULA addresses for local services like HTTP, Proxy, DNS etc. Therefore I would like that my clients always access the local services using ULA addresses and public internet services using the global address. To achieve this I am running a local Linux server: IPv6 ULA prefix : fdaa:a:a:1::/64 IPv6 ULA address (Server): fdaa:a:a:1::1/64 IPv6 Global prefix : 2001:a:a:1::/64 (SixXS tunnel) To configure clients I am using radvd and ISC DHCPv6 My radvd.conf (minified):
interface eth0 { AdvManagedFlag on; AdvOtherConfigFlag on; AdvSendAdvert on; MaxRtrAdvInterval 300; prefix fdaa:a:a:1::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; # SIXXS tunnel prefix 2001:a:a:1::/64 { AdvOnLink on; AdvRouterAddr on; AdvAutonomous off; }; };
This is my dhcpd.conf file (minified):
option domain-name "domain.local"; option auto-proxy-config "http://wpad.domain.local/wpad.dat"; host special-host { fixed-address6 fdaa:a:a:a:b::c; hardware ethernet 00:00:00:00:00:00; } subnet6 fdaa:a:a:1::/64 { range6 fdaa:a:a:1::10 fdaa:a:a:1::FF; }
As you can guess I would like to assign some fixed IPv6 addresses to special hosts (which is the main reason why I don't want to use autonomous configuration for ULA addresses. Now my Windows 7 clients (32-bit and 64-bit) correctly get both prefixes and Windows automatically assigns a "Public" and "Temporary" address from the global pool as well as it gets the DHCP address:
> netsh int ipv6 show addresses Interface 10: LAN Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- ------------------------ Public Preferred 23h59m58s 3h59m58s 2001:a:a:1:8:8:8:8 Temporary Preferred 23h59m58s 3h59m58s 2001:a:a:1:9:9:9:9 Dhcp Preferred 29d23h59m59s 6d23h59m59s fdaa:a:a:1::72 Other Preferred infinite infinite fe80::3d68:1f0e:fccf:57b6%10
Unfortunately now when I try to access my server the source IP address chosen by Windows is the global one (2001:a:a:1:9:9:9:9) and not fdaa:a:a:1::72 which is in the same scope. According to Microsoft source and destination address selection algorithm documented at http://technet.microsoft.com/en-us/library/bb877985.aspx I would have expected that an address within the scope fdaa:a:a:1::/64 is preferred over a global address accessing the server at fdaa:a:a:1::1. Instead Windows decides to send packets from 2001:a:a:1:9:9:9:9 to fdaa:a:a:1::1. Then I did (just to try) a small change in radvd.conf to change AdvAutonomous to "on". So Windows uses stateless autoconfiguration on ULA address space too. After this the address mapping looks as follows:
> netsh int ipv6 show addresses Interface 10: LAN Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- ------------------------ Temporary Preferred 23h59m56s 3h59m56s 2001:a:a:1:9:9:9:9 Public Preferred 23h59m56s 3h59m56s 2001:a:a:1:8:8:8:8 Temporary Preferred 23h59m56s 3h59m56s fdaa:a:a:1:9:9:9:9 Public Preferred 23h59m56s 3h59m56s fdaa:a:a:1:8:8:8:8 Other Preferred infinite infinite fe80::3d68:1f0e:fccf:57b6%10
And surprisingly when accessing fdaa:a:a:1::1 Windows selects fdaa:a:a:1:8:8:8:8 as the source address. Digging a bit further the only difference between these two cases I found ware the siteprefixes shown by Windows. Using Autonomous configuration (the one which works) Windows presents the following:
> netsh interface ipv6 show siteprefixes Prefix Lifetime Interface ------------------------ ------------ ------------------------------ fdea:5b48:d4c1:1::/64 1d23h59m59s LAN 2001:1620:f35:1::/64 1d23h59m59s LAN
When using DHCP the following is shown:
> netsh interface ipv6 show siteprefixes Prefix Lifetime Interface ------------------------ ------------ ------------------------------ 2001:1620:f35:1::/64 1d23h59m43s LAN
This is confusing for me since I advertise exactly the same prefixes to Windows in both cases. Maybe there is some DHCP option which tells winodws to add the prefix to IPv6 site prefixes. Does anybody know how I could push Windows to insert the correct prefix even in non-autonomous mode? Is it even a bug? Thanks a lot for your replies.
Windows 7 site prefix push using DHCPv6
[ch] Jeroen Massar SixXS Staff on Monday, 25 April 2011 16:35:58
What I would like to achieve is to add global addresses to the same clients.
So my clients will have a global IPv6 address when the IPv6 tunnel is up
and only ULA addresses when the tunnel is unavailable.
Or you could just use a single global prefix and forego the troubles of running two prefixes. When the tunnel would be down (for whatever reason) the prefix in your local network still keeps on working. I still have not found another reason for using ULA except for a site that never ever will be connected to the Internet. Good thing of ULA of course is that it is unique for the case that you interconnect to another network, but then again, so is a global prefix.
As you can guess I would like to assign some fixed IPv6 addresses to special
hosts (which is the main reason why I don't want to use autonomous configuration
for ULA addresses.
As long as the MAC address the IP will stay 'fixed' too thus unless you want 'easy to remember' addresses, EUI-64 works just fine.
Windows 7 site prefix push using DHCPv6
[ch] Shadow Hawkins on Monday, 25 April 2011 17:12:53
Tag [/quote] is not closed

Please note Posting is only allowed when you are logged in.

Static Sunset Edition of SixXS
©2001-2017 SixXS - IPv6 Deployment & Tunnel Broker