I'm new to IPV6. I'm trying to configure IPV6 server on my Linux VM using isc dhcp.
we have the following content dhcpd6.conf file

default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet6 2001:db8:0:1::/64 {
        # Range for clients
        range6 2001:db8:0:1::129 2001:db8:0:1::254;
        # Additional options
        option dhcp6.name-servers fec0:0:0:1::1;
        option dhcp6.domain-search "domain.example";

On another PC, I have dhcp6 client running. Both the PC's are connected together via ethernet cable.
When we run the server after sometime, I'm getting the following message

Information-request message from fe80::d6be:d9ff:fe9a:ba64 port 546, transaction ID 0xE987FC00
Sending Reply to fe80::d6be:d9ff:fe9a:ba64 port 546

On wireshark I'm seeing that the server responds to Neighbour Solicitation but not to router solicitation.

The client is not able to get the new IPV6 address. I'm not sure what I'm missing. Any help is really apreciated.



IPv6 provisioning works a bit differently than IPv4 provisioning. The first and most important part of IPv6 provisioning is the Router Advertisement (RA). It is sent by a router to advertise its presence and to communicate the basic network settings of the local network. It contains (amongst other information):

  • whether the router can be used as a default gateway and for how long
  • whether there is a stateful DHCPv6 server available
  • whether there is a stateless DHCPv6 server available
  • which prefixes are used on the local network
  • for each prefix: whether that prefix may be used for auto-configuration
  • it may also contain DNS domains and resolvers

In the most simple case the RA tells the devices on the network that it's a default gateway, that there is no DHCPv6 server and one prefix with auto-configuration enabled. In that case the devices on the network can just configure their own address based on the network prefix. You'd miss the DNS settings though.

DNS settings can be communicated inside the RA but not every OS recognises that option. So usually you combine this network configuration with a stateless DHCPv6 server. Such a server doesn't give out addresses but it does provide other configuration information such as DNS settings.

If you want more control over the addresses that devices get then you probably want to disable auto-configuration and set the flag in the RA that says that a stateful DHCPv6 server is available. Devices on the network then know they have to ask the DHCPv6 server for their address. And this is where the DHCPv6 server configuration you show comes in.

You will have to configure your router to send the correct RA. If your Linux box is the router you do this with radvd:

interface eth0
    AdvSendAdvert on;
    # The network is managed: there is a stateful DHCPv6 server       
    AdvManagedFlag on;

    # Your prefix
    prefix 2001:db8:0:1::/64
        AdvOnLink on;
        # No auto-configuration
        AdvAutonomous off;

    # Configure both Google public DNS resolvers
    RDNSS 2001:4860:4860::8888 2001:4860:4860::8844

    # Configure the DNS search list
    DNSSL domain.example.com example.com

When clients receive this RA then they will start querying the DHCPv6 server.

PS: site-local addresses (those starting with fec0:) have been long deprecated. You should use ULA instead.

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.