I am having trouble setting up IPv6 in my home network. Here’s my setup: My ISP provides a Fritz!Box 7360 with an IPv6 prefix (/48) and an address (outside the prefix). The Fritz!Box in turn provides an address and (via via prefix delegation) a /62 prefix to my Mikrotik 750G r2 (running RouterOS 6.36.3). All clients are connected to the Mikrotik router and receive a global IPv6 address with that prefix. So far so good. But none of the clients know a default route, hence they cannot reach the Internet over IPv6. It works after manually adding the default route, but this is not a solution for all clients (e.g. smartphones).
Is there anything obvious that I am missing here? Googling and searching this forum did not turn up any solution to this problem. Let me know if specific configuration details are needed. Help is greatly appreciated!
Make sure that your router has the prefix active in the ND prefixes menu.
Clients should hear the Mikrotik’s RA messages and automatically set the Mikrotik as the default GW… but not the public prefix address…
They’ll use the link-local address of your Mikrotik router’s LAN interface.
This is normal in IPv6.
Make sure your LAN interfaces are using /64 as the network prefix length on any end-system interface. SLAAC requires /64 in order to work properly, and if you’re assigning a /62 directly to the LAN interface, then the client devices could be getting confused by this / the Mikrotik may not be properly advertising the prefix due to its unstandard size.
Thanks for your response! I am not sure what you mean by ‘active’. The prefix does appear in the list … as /64. But that’s about it:
[admin@MikroTik] > /ipv6 nd prefix print
Flags: X - disabled, I - invalid, D - dynamic
0 D prefix=2001:XXXX:YYYY:fc::/64 interface=bridge1 on-link=yes autonomous=yes valid-lifetime=4w2d preferred-lifetime=1w
[admin@MikroTik] > /ipv6 address print
Flags: X - disabled, I - invalid, D - dynamic, G - global, L - link-local
# ADDRESS FROM-POOL INTERFACE ADVERTISE
0 G 2001:XXXX:YYYY:fc::/64 dhcp6 bridge1 yes
1 DL fe80::AAAA:BBBB:CCCC:DDe7/64 bridge1 no
2 DL fe80::AAAA:BBBB:CCCC:DDe6/64 ether1 no
3 DG 2001:XXXX:YYYY:0:AAAA:BBBB:CCCC:DDe6/64 ether1 no
(ether1 is connected to the Fritz!Box, bridge1 is the local network)
I also created a dump of the RA messages as received by a Linux box. But now I notice that AdvRouterAddr is off, while probably it should be on. But I have no idea how.
#
# radvd configuration generated by radvdump 1.9.1
# based on Router Advertisement from fe80::AAAA:BBBB:CCCC:DDe7
# received by interface eth0
#
interface eth0
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvReachableTime 0;
AdvRetransTimer 0;
AdvCurHopLimit 0;
AdvDefaultLifetime 0;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
RDNSS fd00::1111:2222:3333:4444
{
AdvRDNSSLifetime 900;
}; # End of RDNSS definition
prefix 2001:XXXX:YYYY:fc::/64
{
AdvValidLifetime 2592000;
AdvPreferredLifetime 604800;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
}; # End of prefix definition
}; # End of interface definition
One thing that may be worth mentioning: the Mikrotik is able to ping global addresses, e.g. IPv6 Google DNS. Its routing table also includes ::/0.
[admin@MikroTik] > /ipv6 route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, o - ospf, b - bgp, U - unreachable
# DST-ADDRESS GATEWAY DISTANCE
0 ADS ::/0 fe80::1111:2222:3333:... 1
1 ADC 2001:XXXX:YYYY::/64 ether1 0
2 ADSU 2001:XXXX:YYYY:fc::/62 1
3 ADC 2001:XXXX:YYYY:fc::/64 bridge1 0
For the bridge1 interface, the options are set accordingly for the global address (advertise=yes, eui64=no). For all others, and specifically the link-local address of bridge1, those options are unchecked and disabled. So I cannot change them …
Just for giggles - can you try setting the router’s address to be ::1/64 on the bridge interface? (as opposed to being ::/64)
I think the all-zero host ID is actually valid in IPv6 and is implicitly defined as being “the router” for any given subnet, but I don’t remember where I read that so it could be that an interface address with all-zero host bits is not valid…
I tried that just now (::1/64 vs ::/64), but the Router Advertisement messages (via radvdump) remain exactly the same, specifically “AdvRouterAddr” is still off.
I now enabled logging for topics “route” and “radvd” and found that when the router is building the RA, it only shows MAC, DNS and prefix being added .. no router address here either.
radvd, debug received Router Solicitation on interface=bridge1
radvd, debug sending Router Advertisement on bridge1
radvd, debug adding link-layer address option, mac-address=11:22:33:44:55:66
radvd, debug adding DNS server option, address= fd00::1111:2222:3333:4444
radvd, debug adding prefix= 2001:XXXX:YYYY:fc::/64
In the logs I also saw Router Advertisements from another router connected to bridge1. While this is actually expected, I disconnected that router to see if that makes a difference for the Mikrotik. But that also did not help.
Not sure what else I can do. I don’t see a reason why it won’t advertise itself as the default router. Could this be a bug in RouterOS?