IPv6 Neighbor Discovery Configuration
IPv6 Neighbor Discovery Configuration
Section titled “IPv6 Neighbor Discovery Configuration”TL;DR (Quick Start)
Section titled “TL;DR (Quick Start)”For the impatient: enable IPv6 router advertisements on your LAN interface so clients get addresses via SLAAC.
/ipv6 address add address=2001:db8:1::1/64 interface=bridge advertise=yesVerify clients receive addresses:
/ipv6 neighbor printOverview
Section titled “Overview”What this does: IPv6 Neighbor Discovery (ND) replaces ARP from IPv4 and enables Stateless Address Autoconfiguration (SLAAC). RouterOS acts as a Router Advertisement Daemon (RADVD), announcing network prefixes so clients automatically configure their IPv6 addresses.
When to use this:
- Providing IPv6 connectivity to LAN clients
- Enabling SLAAC for automatic address configuration
- Advertising DNS servers over IPv6
- Configuring ND Proxy for routing between segments
Prerequisites:
- IPv6 package enabled (included by default in v7)
- An IPv6 prefix from your ISP or tunnel broker
- Basic understanding of IPv6 addressing
Configuration Steps
Section titled “Configuration Steps”Step 1: Add IPv6 Address with Advertisement
Section titled “Step 1: Add IPv6 Address with Advertisement”Add an IPv6 address to your LAN interface with router advertisement enabled.
/ipv6 address add address=2001:db8:1::1/64 interface=bridge advertise=yesThe advertise=yes flag tells RouterOS to include this prefix in Router Advertisements, enabling SLAAC for clients.
Step 2: Verify ND Configuration
Section titled “Step 2: Verify ND Configuration”Check the Neighbor Discovery settings for the interface.
/ipv6 nd printExpected output:
Flags: D - dynamic, X - disabled, I - invalid 0 interface=bridge ra-interval=3m20s-10m ra-delay=3s mtu=unspecified reachable-time=unspecified retransmit-interval=unspecified ra-lifetime=30m ra-preference=medium hop-limit=unspecified advertise-mac-address=yes advertise-dns=yes managed-address-configuration=no other-configuration=noStep 3: Verify Prefix Advertisement
Section titled “Step 3: Verify Prefix Advertisement”Check which prefixes are being advertised.
/ipv6 nd prefix printExpected output:
Flags: D - dynamic, X - disabled, I - invalid 0 D interface=bridge prefix=2001:db8:1::/64 valid-lifetime=4w2d preferred-lifetime=1w autonomous=yesStep 4: Check Client Neighbors
Section titled “Step 4: Check Client Neighbors”Verify clients are receiving addresses and appearing in the neighbor table.
/ipv6 neighbor printExpected output:
Flags: R - ROUTER # INTERFACE ADDRESS MAC-ADDRESS STATUS 0 bridge 2001:db8:1::a1b2:c3d4:e5f6:7890 AA:BB:CC:DD:EE:FF reachable 1 bridge fe80::aabb:ccff:fedd:eeff AA:BB:CC:DD:EE:FF reachableCommon Scenarios
Section titled “Common Scenarios”Scenario: Basic LAN with SLAAC
Section titled “Scenario: Basic LAN with SLAAC”Provide automatic IPv6 addresses to all LAN clients:
# Add IPv6 address to LAN interface/ipv6 address add address=2001:db8:1::1/64 interface=bridge advertise=yes
# Verify ND is enabled (should be automatic)/ipv6 nd print
# Clients will automatically get addresses like:# 2001:db8:1::aabb:ccdd:eeff:1122Scenario: Advertise DNS Servers
Section titled “Scenario: Advertise DNS Servers”Include DNS server information in Router Advertisements (RDNSS):
# Enable DNS advertisement (default is yes)/ipv6 nd set [find interface=bridge] advertise-dns=yes
# Configure DNS servers (these will be advertised)/ip dns set servers=2606:4700:4700::1111,2001:4860:4860::8888Clients supporting RFC 8106 will automatically use these DNS servers.
DNS advertisement options:
yes- Advertise configured DNS servers from/ip dnsno- Don’t include DNS in Router Advertisementsself- Advertise the router’s own link-local address as DNS server (router must be running DNS)
# Advertise router as DNS server (requires /ip dns enabled)/ipv6 nd set [find interface=bridge] advertise-dns=selfScenario: Use DHCPv6 for Addresses (Stateful)
Section titled “Scenario: Use DHCPv6 for Addresses (Stateful)”For networks requiring DHCPv6 instead of SLAAC:
# Tell clients to use DHCPv6 for addresses/ipv6 nd set [find interface=bridge] managed-address-configuration=yes
# Optionally keep SLAAC disabled/ipv6 address set [find interface=bridge] advertise=noScenario: DHCPv6 for DNS Only (Stateless DHCPv6)
Section titled “Scenario: DHCPv6 for DNS Only (Stateless DHCPv6)”Use SLAAC for addresses but DHCPv6 for DNS and other options:
# Keep managed=no (SLAAC for addresses)# Enable other-configuration for DHCPv6 options/ipv6 nd set [find interface=bridge] other-configuration=yesScenario: Receive IPv6 via SLAAC (Router as Client)
Section titled “Scenario: Receive IPv6 via SLAAC (Router as Client)”To receive an IPv6 address from an upstream router via SLAAC:
# Enable accepting Router Advertisements (important for v7)/ipv6 settings set accept-router-advertisements=yes
# Note: By default this is "yes-if-forwarding-disabled"# Change to "yes" if you have forwarding enabledScenario: Adjust RA Timing
Section titled “Scenario: Adjust RA Timing”For faster client configuration or reduced network traffic:
# Faster initial client configuration/ipv6 nd set [find interface=bridge] ra-interval=20s-1m
# Longer router lifetime (how long clients consider this router valid)/ipv6 nd set [find interface=bridge] ra-lifetime=1hScenario: ND Proxy
Section titled “Scenario: ND Proxy”Enable ND Proxy to allow routing between segments while appearing on the same link:
# Enable proxy on specific address/ipv6 address set [find address~"2001:db8:1::"] nd-proxy=yesScenario: EUI-64 Auto-Generated Address
Section titled “Scenario: EUI-64 Auto-Generated Address”Let RouterOS automatically generate the host portion from the interface MAC address:
# Add address with EUI-64 host part generation/ipv6 address add address=2001:db8:1::/64 interface=bridge eui-64=yes advertise=yesThe router generates an address like 2001:db8:1::aabb:ccff:fedd:eeff/64 based on the interface MAC.
Scenario: Skip Duplicate Address Detection
Section titled “Scenario: Skip Duplicate Address Detection”For faster address assignment in controlled environments:
# Skip DAD (only in trusted environments)/ipv6 address add address=2001:db8:1::1/64 interface=bridge no-dad=yesDAD Bypass Risk
Only use no-dad=yes in environments where you’re certain no address conflicts exist. Skipping DAD can cause silent connectivity issues if duplicates exist.
Scenario: Disable ND on Interface
Section titled “Scenario: Disable ND on Interface”Stop advertising on a specific interface:
/ipv6 nd set [find interface=bridge] disabled=yesOr stop advertising a specific prefix while keeping ND active:
/ipv6 address set [find interface=bridge] advertise=noVerification
Section titled “Verification”Check 1: Verify ND is Active
Section titled “Check 1: Verify ND is Active”/ipv6 nd print where disabled=noExpected: Shows interface with ND enabled.
Check 2: Verify Prefix is Advertised
Section titled “Check 2: Verify Prefix is Advertised”/ipv6 nd prefix printExpected: Shows dynamic prefix entry with autonomous=yes.
Check 3: Verify Neighbors are Reachable
Section titled “Check 3: Verify Neighbors are Reachable”/ipv6 neighbor print where status=reachableExpected: Client IPv6 addresses appear with reachable status.
Check 4: Test Client Connectivity
Section titled “Check 4: Test Client Connectivity”From a client, ping the router:
ping6 2001:db8:1::1Expected: Replies received.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Cause | Solution |
|---|---|---|
| Clients not getting IPv6 addresses | advertise=no on IPv6 address | Set advertise=yes on the address |
| Clients not getting addresses | ND disabled on interface | Enable: /ipv6 nd set [find interface=X] disabled=no |
| Router not accepting SLAAC addresses | Accept RA disabled or conditional | Set /ipv6 settings set accept-router-advertisements=yes |
| SLAAC breaks when forwarding enabled | v7 bug (fixed in 7.1+) | Upgrade RouterOS or set accept-router-advertisements=yes |
| Addresses deprecated immediately | advertise=no was set after yes | Clients cache prefixes; disconnect/reconnect or wait for lifetime expiry |
| DNS not received via RA | Client doesn’t support RDNSS (RFC 8106) | Use DHCPv6 with other-configuration=yes |
| Duplicate address detected | Two devices with same address or rogue RA | Check for rogue RA sources; verify EUI-64 uniqueness; use no-dad=yes only if trusted |
| Neighbors stuck in “incomplete” | Layer 2 issue (neighbor solicitation not reaching target) | Check switch config, VLAN tagging, firewall rules for ICMPv6 |
| Neighbors stuck in “stale” | No recent communication | Normal state; will refresh on next communication attempt |
| Neighbors stuck in “delay”/“probe” | Address resolution in progress | Wait briefly; if persistent, check ICMPv6 connectivity |
Common Mistakes
- Don’t forget
advertise=yes- Adding an IPv6 address doesn’t automatically advertise it - Don’t confuse ND with IP neighbors -
/ipv6 neighboris ND;/ip neighboris discovery protocol (MNDP/LLDP) - Don’t ignore
accept-router-advertisementssetting - Critical for receiving SLAAC as a client in v7 - Don’t expect immediate prefix deprecation - Clients cache prefixes according to lifetime values
- Don’t use very short lifetimes in production - Can cause address instability
Address States Reference
Section titled “Address States Reference”| State | Description |
|---|---|
tentative | Address undergoing Duplicate Address Detection (DAD) |
preferred | Address verified unique and active for all communication |
deprecated | Address valid but not used for new connections |
invalid | Address expired, cannot be used |
Related Topics
Section titled “Related Topics”IPv6 address assignment
Section titled “IPv6 address assignment”- IPv6 Addresses - manual IPv6 address configuration
- IPv6 DHCP Server - stateful address assignment (DHCPv6)
- IPv6 DHCP Client - obtain prefix from ISP
Security
Section titled “Security”- IPv6 Firewall - protect IPv6 hosts
IPv4 equivalent
Section titled “IPv4 equivalent”- DHCP Server - IPv4 DHCP
Reference
Section titled “Reference”- MikroTik IPv6 ND Documentation
- RFC 4861 - Neighbor Discovery for IPv6
- RFC 4862 - IPv6 Stateless Address Autoconfiguration
ND Properties Reference
Section titled “ND Properties Reference”| Property | Type | Default | Description |
|---|---|---|---|
interface | string | - | Interface for ND (required) |
disabled | yes/no | no | Disable ND on interface |
ra-interval | time range | 3m20s-10m | Unsolicited RA interval |
ra-delay | time | 3s | Delay between solicited RAs |
ra-lifetime | time | 30m | Router validity period (0 = not default router) |
ra-preference | low/medium/high | medium | Router selection priority |
advertise-dns | yes/no/self | yes | Include DNS in RA |
advertise-mac-address | yes/no | yes | Include source link-layer address |
managed-address-configuration | yes/no | no | Tell clients to use DHCPv6 for addresses |
other-configuration | yes/no | no | Tell clients to use DHCPv6 for other info |
mtu | integer | unspecified | Advertised MTU |
hop-limit | integer | unspecified | Advertised hop limit |
IPv6 Address Properties Reference
Section titled “IPv6 Address Properties Reference”| Property | Type | Default | Description |
|---|---|---|---|
address | IPv6/prefix | - | IPv6 address with prefix length |
interface | string | - | Interface to assign address |
advertise | yes/no | no | Include prefix in Router Advertisements |
eui-64 | yes/no | no | Auto-generate host part from interface MAC |
no-dad | yes/no | no | Skip Duplicate Address Detection |
Prefix Properties Reference
Section titled “Prefix Properties Reference”| Property | Type | Default | Description |
|---|---|---|---|
prefix | IPv6 prefix | - | Prefix to advertise |
interface | string | - | Interface for prefix |
autonomous | yes/no | yes | Allow SLAAC address generation |
on-link | yes/no | yes | Prefix is on-link |
valid-lifetime | time | 4w2d | Address validity period |
preferred-lifetime | time | 1w | Preferred address period |
Command Reference
Section titled “Command Reference”| Command | Description |
|---|---|
/ipv6 nd print | Display ND configuration |
/ipv6 nd set | Modify ND settings |
/ipv6 nd prefix print | Show advertised prefixes |
/ipv6 nd prefix default print | Show default prefix settings |
/ipv6 neighbor print | Display neighbor table |
/ipv6 settings print | Show IPv6 global settings |