Skip to main content
wigster
New Member
March 5, 2025
Question

Adding IPv6 ULA to interface already configured with Prefix Delegation

  • March 5, 2025
  • 8 replies
  • 2330 views

Hello, 

My ISP delegates an IPv6 prefix but, unfortunately, it's dynamic and changes weekly. It works though and two LAN interfaces successfully have prefixes. Great!

I would now like to add a ULA to an interface but cannot see a way to add a second IPv6 address if the interface is set dynamically. For testing (please excuse the short ULA), I switched from the interface itself having a prefix delegated to having a ULA:

 

 

config ipv6   set ip6-address fdfc:c::40/64   set ip6-allowaccess ping https   set ip6-send-adv enable   set ip6-other-flag enable   config ip6-prefix-list     edit fdfc:c::/64     next   end   config ip6-delegated-prefix-list     edit 1     set upstream-interface "wan1"     set delegated-prefix-iaid 1     set subnet 0:0:0:1::/64    set rdnss-service default   next   end end

 

 

I have (accidentally) stumbled upon a solution. It seems to work but is this actually valid configuration?

Many thanks for reading

8 replies

Anthony_E
Staff
Staff
March 10, 2025

Hello,


Thank you for using the Community Forum. I will seek to get you an answer or help. We will reply to this thread with an update as soon as possible.


Thanks,

Best Regards
Anthony_E
Staff
Staff
March 13, 2025

Hello,

 

We are still looking for someone to help you.

We will come back to you ASAP.


Thanks,

Best Regards
Anthony_E
Staff
Staff
March 14, 2025

To add an IPv6 Unique Local Address (ULA) to an interface already configured with prefix delegation on a FortiGate:

  1. Access the CLI: Log in to your FortiGate device using the CLI.
  2. Edit the Interface: Enter the configuration mode for the specific interface where you want to add the ULA.

shell
config system interface
edit "port5" <----- Replace "port5" with your actual interface name.

  1. Configure IPv6 ULA: Add the ULA to the interface configuration:

 

shell
config ipv6
set ip6-address fdxx:xxxx:xxxx::1/64 <----- Replace with your ULA.
end

  1. Retain Existing Configuration: Ensure that the existing prefix delegation settings remain unchanged.
  2. Save and Exit: Save the configuration and exit.

shell
end

Best Regards
wigster
wigsterAuthor
New Member
March 14, 2025

Hi Anthony, 

Thanks for getting back to me, it's appreciated. 

If an interface is configured to use a delegated prefix, trying to set ip6-address returns an error:

(ipv6) # set ip6-address fdfc:c::40/64 Can't change dynamic IPv6. Command fail. Return code -651


Is it actually possible to add a ULA to an interface with prefix delegation?

Thanks again


Anthony_E
Staff
Staff
March 14, 2025

Hello,

 

I really hope we will find an answer and fix your issue :)!

I will try to find an expert for your question, and will come back to you ASAP.

 

Regards,

Best Regards
ITmized
New Member
June 18, 2025

Still no solution for the issue?

wigster
wigsterAuthor
New Member
June 18, 2025

Hi,

I never found a solution. 

Sadly, I gave up and use NAT66 instead of prefix delegation. In other words, clients downstream of the FortiGate use a ULA instead of a 'proper' prefix. This works faultlessly for me as there is no incoming traffic but it's a bit sad that I had to resort to NAT.

bam
Staff
Staff
August 7, 2026

Hi, I believe I might have a solution for you. I have a FortiGate with /56 PD assigned by ISP, sliced and distributed using SLAAC to local networks through delegation. So my local interface would have configuration like this:

config sys interface
edit lanXX
  config ipv6
    ip6-mode delegated
    ip6-send-adv enable
    ip6-delegated-prefix-iaid 2
    ip6-upstream-interface "isp1-intf"
    set ip6-subnet ::99:0:0:0:1/64
    config ip6-delegated-prefix-list
      edit 1
        set upstream-interface "isp1-intf"
        set delegated-prefix-iaid 2
        set subnet 0:0:0:99::/64
        set rdnss-service delegated
       next
     end
   end
 next
end

Now, as this whole network depends on working ISP configuration, addressing might change, or the whole ISP might change I want to have critical local services running over ULA rather than GUA. In my case I needed BGP peering with my k8s cluster in that network. Adding ULA to the setup comes in few steps. First - configure prefix and route for your lan:

config sys interface
  edit lanXX
    config ipv6
      config ip6-prefix-list
        edit fd00::/64
        next
end
    end
  next
end

config route static6
edit 1
    set dst fd00::/64
    set device lanXX
  next
end

At this point for FortiGate should advertise fd00::/64 as secondary prefix and devices in the network should configure both GUA and ULA addresses. You need a firewall rule with NAT for local addresses to access Internet, obviously.

Now to the most interesting part - local address on FortiGate itself. You already noticed that you cannot mix static and delegated addresses on the same interface. The question is WHY do you want a local address on interface. You don’t need it for routing (this goes through link local rather than ULA). If it’s: “I need static local address to run services on FGT”, your solution is loopback address. “BGP on loopback” is our standard approach in modern firmware versions and can be replicated here:

config system interface
   edit "bgp"
       set vdom "root"
       set type loopback
       config ipv6
           set ip6-address fdf0::/128
       end
   next
end

Add a firewall rule allowing traffic from lanXX to bgp interface and you should be good to go!

Thought Leadership Security Summit. Outpace New Threats with AI - enhanced defense. Tuesday, Septmeber 15, 8:30 AM - 2:30 PM PT. The Golf Club at Newcastle, WA.
Virtual event | September 2026. SASE summit. The age of autonomous trust. Register here!