DHCP6 IP's not handed out.



  • Sorry for the long post. I did search extensively before posting. I could not find the info I was looking for. Quite possibly because my keywords are off.

    I am completely confused by the whole IPv6 setup. I thought I had it figured out, but there is something I am missing, probably in the DHCP server setup.

    Here is what I want to do:
    My pfsense box has one WAN interface, and 3 different LAN interfaces. IPv4 is all working great, networks are segmented properly and firewall is setup.

    I now try to add IPv6 for 2 of my 3 networks.

    My provider issues my router with a /60 subnet (according to their documentation, I don't know how to verify this in pfsense). If I understood correctly, I should therefore be able to handle 16 networks each in their own /64 block of IPv6 addresses. With a /64 being the minimum size of a subnet.

    I want prefix index 0 for my LAN network, and prefix 1 for my GUEST network. For now I can do without IPv6 on the XBOX network.

    Here are the settings I have made, in order.

    On WAN interface, I enabled DHCP6 as IPv6 Configuration Type.
    In DHCP6 Client Configuration, I set DHCPv6 Prefix Delegation size to 60, and ticked the "Send an IPv6 prefix hint" tickbox. (Based on an obscure blog post somewhere that said my provider needs it.)

    On LAN interface, I set IPv6 Configuration type to "Track Interface".
    In Track IPv6 Interface, I selected the WAN interface, and set prefix ID to 0.

    On GUEST interface, I set IPv6 Configuration type to "Track Interface".
    In Track Ipv6 Interface, I selected the WAN interface, and set prefix ID to 1.

    Then I went to services DHCPv6 Server & RA. (LAN interface)

    DHCPv6 Server page: I ticked the "Enable DHCPv6 server on interface LAN" tickbox.
    Router Advertisements page: I changed router mode to "Managed"

    Then I went to services DHCPv6 Server & RA. (GUEST interface)

    DHCPv6 Server page: I ticked the "Enable DHCPv6 server on interface GUEST" tickbox.
    Router Advertisements page: I changed router mode to "Managed"

    After a reboot, I login and my interfaces widget shows the following for IPv6:
    WAN: 2a02:181f:0:40a1:f4af:ebdc:20e5:db67
    LAN: 2a02:1811:1419:e900:f66d:4ff:fee8:c24a
    GUEST: 2a02:1811:1419:e901:f66d:4ff:fee8:c24a

    So it would seem that the LAN and GUEST interfaces are on prefix 2a02:1811:1419:e900 and 2a02:1811:1419:e901 respectively, with the same chosen address f66d:4ff:fee8:c24a for both. This looks good to me.

    Now when I reboot my laptop on the LAN network, it only gets an IPv4 address. Not an IPv6.

    rsq@rsq-laptop:~$ ifconfig enp4s0
    enp4s0    Link encap:Ethernet  HWaddr 00:24:be:c0:3e:34 
              inet addr:10.0.119.91  Bcast:10.0.255.255  Mask:255.255.0.0
              inet6 addr: fe80::224:beff:fec0:3e34/64 Scope:Link

    No IPv6 connectivity :( (well, except for the link local address that is always there)

    When I add an ip manually:
    rsq@rsq-laptop:~$ sudo ip -6 addr add 2a02:1811:1419:e900::100/64 dev enp4s0
    rsq@rsq-laptop:~$ ifconfig enp4s0
    enp4s0    Link encap:Ethernet  HWaddr 00:24:be:c0:3e:34 
              inet addr:10.0.119.91  Bcast:10.0.255.255  Mask:255.255.0.0
              inet6 addr: 2a02:1811:1419:e900::100/64 Scope:Global
              inet6 addr: fe80::224:beff:fec0:3e34/64 Scope:Link

    Everything is working, even the routing. I can ping6 www.google.com .

    Can anyone help me find out what is wrong with the DHCP6 server? How can I debug this setup?

    Thanks in advance.



  • I can't say for certain since I don't use Linux (I assume that's what you're using on your PC), but unless your Linux box is set to SPECIFICALLY use DHCPv6, it may not be using it at all, despite the RA "Managed" setting.

    Also of note, Android doesn't support DHCPv6 at all. If your RA isn't "Unmanaged" or "Assisted", Android won't function at all on your IPv6 network, unless the manufacturer of your Android device put in a DHCPv6 client of some sort. Google doesn't seem inclined to change that either, despite pressure from major corporations.

    And lastly, after the Windows 10 Anniversary Update, there appears to be big issues with the DHCPv6 client not automatically renewing IPv6 leases either. Not sure whether intentional or not, but people have reported the issue to Microsoft through forums and the Feedback Hub.

    So given all of the issues surrounding DHCPv6 right now, it may just be easier to run an "unmanaged" (SLAAC/RDNSS only) or "assisted" (SLAAC preferred, DHCPv6 available) IPv6 setup. Personally, my home LAN runs in "assisted" mode now (since most of my computers are Windows 10), and my guest network runs unmanaged.



  • I'm still learning IPv6 myself, but I've found that with DHCP configured as "managed," only my Linux hosts will receive a global IP address  from the DHCP pool, with the desired prefix. With this config, my W10 hosts only show local addresses.

    With DHCP configured as "assisted," both Linux and W10 clients will receive a global address. The Linux host will take an address from the DHCP pool, but the W10 host will use the network prefix and generate its own address.

    I'm still exploring the other config options.



  • Also Android phones do not get anything from DHCPv6, you have to have SLAAC configured for them. In a mixed network your best bet is the Assisted setting.



  • @DLW67:

    I'm still learning IPv6 myself, but I've found that with DHCP configured as "managed," only my Linux hosts will receive a global IP address  from the DHCP pool, with the desired prefix. With this config, my W10 hosts only show local addresses.

    With DHCP configured as "assisted," both Linux and W10 clients will receive a global address. The Linux host will take an address from the DHCP pool, but the W10 host will use the network prefix and generate its own address.

    I'm still exploring the other config options.

    There is a problem with the latest version of windows 10 with DHCP6. Try ipconfig /release6 and ipconfig /renew6 to see if that will cause a lease to be allocated. As was already said, android phones use SLAAC, not DHCP6 due to a design decision by google and you should use assisted, not managed.