๐ Enable IPv6 on your Atomic fibre internet #
The IPv6 protocol is the default and quickest way to start up a new internet connection in most modern operating systems. Despite not technically needing to use IPv6, if you want to enjoy the benefits and future-proof your network you are welcome to do so.
๐ค Why use IPv6? #
IPv4 address space is running out. Many ISPs have started using CGNAT (Carrier-Grade Network Address Translation), not giving customers their own public IP. IPv4 usually involves NAT (Network Address Translation) on your router – so devices on your LAN are communicating with services on the internet via a translation layer.
With IPv6 there is lots of IP space, so each customer can get a (massive) number of public IPs. IPv6 gives you end-to-end connectivity between the devices on your LAN and many popular services that are IPv6 enabled (META, Google etc).
IPv6 end-to-end traffic can be routed via an ASIC (hardware acceleration), and does not need to pass through software or a CPU to get translated. This gives you lower and more consistent latency. Enable IPv6 hardware offload on your router.
โ ๏ธ Atomic does not do any CGNAT.
โ ๏ธ Remember to check that your router has firewall rules to protect the devices on your LAN if they get public IPv6 addresses. With IPv4 the devices on your LAN will usually be protected by NAT on your router.
๐ค Why static IPv6? #
With dynamic IPv6, the devices on your LAN will need to renumber from time to time. Your router will update as soon as you connect, but the devices on your LAN can take a while to work out that they need to get new IPs. For IoT devices like security cameras, it’s best to keep your v6 IPs static.
๐ค Can I run single-stack IPv6? #
At the moment, most customers with IPv6 have a dual-stack solution using both IPv4 and IPv6. IPv6 is preferred so you can expect about half your traffic to be IPv6. We don’t officially support single-stack IPv6 yet, but it should be possible if you enable DNS64 and NAT64 on your router. We’re happy to help if you want to configure single-stack IPv6.
โณ๏ธ Before we start #
Your router needs to support IPv6, and the underlying Fibre Network Operator you are connected to needs to support IPv6. Below is the IPv6 compatibility across Fibre Networks:
- โ Octotel ๐
- โ Frogfoot ๐ธ – Check that you have a Calix ONT
- โ Openserve ๐ฆ PPPoE
- โ Vumatel ๐ฐ GPON
- ๐พ Vumatel ๐ฐ AE / Active Ethernet – No native support (IPv4 only)
๐ Octotel, ๐ธ Frogfoot and ๐ฐ Vumatel GPON (Layer2 / DHCPv6) #
We provide a /48 block of IPv6 address space to each customer router. You need to enable DHCPv6 on your router (steps are below).
๐ฆ Openserve (PPPoE) #
For Openserve we provide IPv6 over a PPPoE session. Your router will use DHCPv6 over the PPPoE session.
Static IPv6 support by router OS:
- Known to work: OpenWRT, Unifi, Reyee, Fortinet
- Known to have problems with static IPv6: Cisco Meraki MX
- Untested: EdgeOS, Mikrotik ROS7, Cudy, TP-Link, Tenda, Asus, D-link, Netgear, Lynksis, Zyxel
- Last updated Nov 2025
๐ฒ On Device IPv6 #
You can use IPv6 from your laptop or phone via a tunnel or VPN like Cloudflareโs WARP service: https://1.1.1.1/
โ๏ธ Static IPv6 #
Note: Since early 2024, we have enabled dynamic v6 on all networks (other than Vumatel AE). Dynamic v4 and dynamic v6 public IPs do not have an extra cost.
Current pricing: Static v6 is included in our Static IP (v4) service price. This is because creating static leases involves admin and maintenance on our side. We can also set up custom DNS PTR records for customers buying the Static IP add-on service.
If you would like a static /48, please order a Static IP service via our change request form.
๐ต๏ธโโ๏ธ How to check IPv6 is working #
As a first step, connect your laptop directly to the fibre box / ONT. You should get an IPv6 IP and the following should work:
โ IPv6 status checking tools #
- http://ipv6-test.com (slow recently)
- https://test-ipv6.com
If you use a Firefox or Chrome browser, here are add-ons which are useful:
- Chrome: IPvFoo
- Firefox: SixIndicator
Why does this test say my browser prefers IPv4? Because of the โhappy eyeballsโ feature in your browser, it will start an IPv4 connection 300ms after the IPv6 connection. If IPv4 wins it will use that. Try a different browser and see what that says.

#
โ๏ธ Enabling IPv6 on your Router #
Configure your routerโs WAN interface to ask for a DHCPv6 lease and a PD Pool of /48.
On the LAN side, enable IPv6 Router Advertisements / SLAAC.
Here is an example static lease config on our side:{
"duid": "00:03:00:01:88:d7:f6:b7:cc:70",
"ip-addresses": [ "2c0f:ef18:1000::2" ],
"prefixes": [ "2c0f:ef18:1402::/48" ]
},
Details for several router brands are below.
Router config: Unifi #
WAN:

LAN:

If you want the perfect 20/20 score in ipv6-test.com as above, allow ICMPv6

Router config: Mikrotik – for Octotel / Frogfoot / Vumatel GPON use #
/ipv6 address
add address=::/64 advertise=yes disabled=no eui-64=no from-pool=IPv6-delegated-pool interface=\
ether2-master no-dad=no
/ipv6 dhcp-client
add add-default-route=yes disabled=no interface=ether1 pool-name=IPv6-delegated-pool \
pool-prefix-length=64 prefix-hint=::/0 request=address,prefix use-peer-dns=yes
/ipv6 firewall filter
add action=accept chain=forward in-interface=ether1 protocol=icmpv6
add action=drop chain=forward connection-state=invalid,new in-interface=ether1
/ipv6 nd
set [ find default=yes ] advertise-dns=no advertise-mac-address=yes disabled=no hop-limit=\
unspecified interface=all managed-address-configuration=no mtu=unspecified other-configuration=\
no ra-delay=3s ra-interval=3m20s-10m ra-lifetime=30m reachable-time=unspecified \
retransmit-interval=unspecified
/ipv6 nd prefix default
set autonomous=yes preferred-lifetime=1w valid-lifetime=4w2d
/ipv6 settings
set accept-redirects=yes-if-forwarding-disabled accept-router-advertisements=\
yes-if-forwarding-disabled forward=yes max-neighbor-entries=8192
…
with some background…
The idea is to get a WAN address from the DHCP server, plus some network space for the LAN. Then we split up the LAN space and hand it out using SLAAC:
/ipv6 dhcp-client
add add-default-route=yes interface=ether1 pool-name=IPv6-delegated-pool request=address,prefix
My WAN interface is ether1. We access a DHCPv6 address on it as well as a pool for the LAN, putting into LAN address pool “IPv6-delegated pool”.
/ipv6 address
add from-pool=IPv6-delegated-pool interface=ether2-master
My LAN interface is ether2-master. I seem to remember having to do a bit more configuration to get the delegated /48 into /64’s but that should work for a start.
Router config: TP-Link #



Asus IPv6 settings #
Log into your router and go to: WAN โ IP Version โ IPv4 / IPv6
Set MTU as 1500 (standard).
There is more information here: https://www.asus.com/support/FAQ/113990/
Edgerouter #
Router: Ubiquiti EdgeRouter X SFP 6-Port
Solution for EdgeMax in general: https://community.ui.com/questions/DHCPv6-PD-stop-dor-set-DUID/79aa052b-0933-434c-b2ef-3d0275a10eeb
Perl script needed a bit of tweaking: /opt/vyatta/sbin/dhcpv6-pd-duid.pl
function: set_duid
comment out these 2 lines:
# my $buf = pack("n", $len);
# print $FH $buf || die "duid length write failed: $!\n";
Add new:
my $buf;
my $endian = $Config{byteorder};
if ($endian == 1234 or $endian == 12345678) {
$buf = pack("v", $len);
}else{
$buf = pack("n", $len);
} print $FH $buf || die "duid length write failed: $!\n";
In configuration set static duid:
set interfaces ethernet eth0 dhcpv6-pd duid 0001000126a975547483c2484390