Skip to main content

How to Configure IPv6 on a MikroTik Router

Get your MikroTik router fully IPv6-ready with Neptune Internet in just a few minutes.

Written by Murray
Updated yesterday

Summary

IPv6 is the modern internet protocol that provides a virtually unlimited pool of addresses, replacing the increasingly scarce IPv4 space. If you're a Neptune Internet customer using a MikroTik router, enabling IPv6 is straightforward. It only takes a handful of commands. This guide walks you through each step, from requesting an IPv6 prefix via DHCPv6 to assigning addresses to devices on your local network.

This guide was prepared with the help of our customer β€” @gvn.

Bottom Line Up Front

Here's the whole set of CLI commands to get it working if you don't want to read the full guide.

/ipv6 dhcp-client add add-default-route=yes interface=ether1 pool-name=ipv6-pool request=address,prefix 
/ipv6 address add from-pool=ipv6-pool interface=bridge advertise=yes eui-64=yes
/ipv6 nd set [ find default=yes ]
/ipv6 settings set accept-router-advertisements=yes
/ipv6 nd prefix add interface=bridge

Before you start

We assume that you have a Mikrotik router and is comfortable with either WInbox or SSH.

The steps below handle IPv6 addressing and routing only. You should also review your IPv6 firewall rules to ensure your network is properly protected. MikroTik does not apply IPv4 firewall rules to IPv6 traffic β€” these are configured separately under /ipv6 firewall.

At a minimum, consider allowing established and related connections, permitting ICMPv6 (which is essential for IPv6 to function correctly), and dropping invalid or unwanted inbound traffic.

Creating DHCPv6 Client

The first step is to configure your router to request an IPv6 address and prefix from Neptune via DHCPv6 on your WAN interface.

Note: Replace ether1 with the name of your WAN interface if it differs on your setup.

CLI

Connect via SSH to the router and type the following command to create a client.

/ipv6 dhcp-client add add-default-route=yes interface=ether1 pool-name=ipv6-pool request=address,prefix

Winbox

Navigate to IPv6 > DHCPv6 Client, then click New. Configure the following settings:

  • Interface: ether1

  • Request: tick address and prefix

  • Pool Name: ipv6-pool

  • Add Default Route: ticked

It will configure your router to do the following:

  • Request both an IPv6 address and a delegated prefix from Neptune.

  • Automatically add a default IPv6 route so your router knows where to send IPv6 traffic.

  • Store the delegated prefix in a pool called ipv6-pool, which you'll use in the next step.

LAN Configuration

Next, configure your LAN bridge to use the delegated prefix so that devices on your network can receive IPv6 addresses.

You can do this either via CLI or Winbox

/ipv6 address add from-pool=ipv6-pool interface=bridge advertise=yes eui-64=yes

Winbox

Navigate to IPv6 > Addresses, then click New. Configure the following settings:

  • From Pool: ipv6-pool

  • Interface: bridge

  • EUI64: ticked

  • Advertise: ticked

Click Apply, then OK.

Your router is going to do the following with your settings:

  • Pull an address from the ipv6-pool you created in Step 1.

  • Assign it to your bridge interface (your LAN).

  • Enable Router Advertisement (RA) so local devices automatically discover and configure their own IPv6 addresses via SLAAC.

  • Use EUI-64 to generate the interface identifier portion of the address.

Enable Neighbour Discovery

Ensure the default Neighbour Discovery (ND) settings are active so your router can advertise itself to LAN clients.

/ipv6 nd set [ find default=yes ]

Accept Router Advertisements on the WAN

Tell RouterOS to accept Router Advertisements from Neptune's upstream router.

/ipv6 settings set accept-router-advertisements=yes

Navigate to IPv6 > Settings. Set the following:

  • Accept Router Advertisements: yes

Add a Neighbour Discovery Prefix

For quick reference, here are all five commands together. You can paste these directly into a MikroTik terminal or the WinBox terminal window:

/ipv6 nd prefix add interface=bridge

Verification

Print dhcp client status. You should see prefixes being assigned.

/ipv6 dhcp-client print

Check the ip addresses:

/ipv6 address print

Run a ping test

/ping 2401:dc20:cafe::53
/ping 2001:4860:4860::8888

Did this answer your question?