1

I am trying to understand the prefixpolicies. Could somebody explain to me what the table from netsh interface ipv6 show prefixpolicies means on windows?

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        35      4  ::ffff:0:0/96
        30      2  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      3  ::/96

Above is an example from my laptop. I know that the leftmost column means priority. The higher it is, the more likely that it will be used. I guess the label is just for identifying the different rules. But why are these specific rules there? I understand that the rule labeled 3 is representing the range the ipv4 addresses cover and I assume that this is rated lowest because then, windows will prefer any available ipv6 connection over its ipv4 counterpart. And the rule labeled 0 is probably the loopback address.

What are the other rules there for? Why do the addresses starting with 2002 and 2001:0000 have less priority than basically every other address? (Comparing the priority of rules 1, 2, 5)

Edit: ::ffff:0:0/96 regards the IPv4-mapped IPv6 addresses as described here

IPv4 address embedding is used to create a relationship between an IPv4 address and an IPv6 address to aid in the transition from IPv4 to IPv6. One type, the IPv4-compatible IPv6 address, is used for devices that are compatible with both IPv4 and IPv6; it begins with 96 zero bits. The other, the IPv4-mapped address, is used for mapping IPv4 devices that are not compatible with IPv6 into the IPv6 address space; it begins with 80 zeroes followed by 16 ones.

So that means my windows prefers mapped IPv4 connections over the real IPv4 addresses. Not sure why, just adding this for completeness.

  • (eventually, I'm trying to find out how to temporarily enforce using IPv4 because my VPN does not support ipv6, but this is a different question) – lucidbrot May 30 '17 at 7:02
1

2002::/16 is a specific prefix used for 6to4 translations. It can be used to tunnel IPv6 through IPv4.

2001::/32 is reserved for Teredo, another IPv6 tunneling mechanism.

Both of these should have a low priority, since they should only be used if no native IPv6 is available.

  • Thanks! Do you happen to also know why ULA (fc00::/7) has low precedence and why the afaik deprecated fec0::/10 is still listed? I assume 6bone (3ffe::/16) has the same reason as the two you mentioned, but according to wikipedia, this address space was returned to IANA so why is it there in my table? – lucidbrot May 30 '17 at 7:48
  • 1
    For the ULA space it shouldn't matter much. You usually have ULA space with a more specific netmask (if any at all) so that route should always win, there's not much chance of overlapping routes. I have no idea why fec0::/10 is assigned to your interface or why 6BONE space is used, but I'm no Windows expert. – Teun Vink May 30 '17 at 7:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.