[Solved] Some Android devices have limited IPV6 Connectivity

Hello,

I have a working IPV6 network. Devices do get SLAAC and DHCP from router advertisement.

I have setup a CAP AX with a simple Access Point configuration. The CAP AX is getting a proper IPV6 connectivity (can ping any IPV6 of the internet)

But, Android 16 connected devices, which are all getting a proper IPV6 address, can only ping and access the advertised /64 network they are in.

The configuration :

/interface bridge
add admin-mac=XX:XX:XX:XX:XX:12 auto-mac=no comment=defconf name=bridge
/interface wifi
set [ find default-name=wifi2 ] channel.band=2ghz-ax .skip-dfs-channels=\
    10min-cac .width=20/40mhz configuration.mode=ap .ssid=MikroTik-557213 \
    datapath.bridge=bridge disabled=no name="Master 2Ghz" \
    security.authentication-types=wpa2-psk,wpa3-psk .ft=yes .ft-over-ds=yes \
    .passphrase=xxxxxxxx
set [ find default-name=wifi1 ] channel.band=5ghz-ax .skip-dfs-channels=\
    10min-cac .width=20/40/80mhz configuration.mode=ap .ssid=MikroTik-557213 \
    datapath.bridge=bridge disabled=no name="Master 5Ghz" \
    security.authentication-types=wpa2-psk,wpa3-psk .ft=yes .ft-over-ds=yes \
    .passphrase=xxxxxxxx
/disk settings
set auto-media-interface=bridge auto-media-sharing=yes auto-smb-sharing=yes
/interface bridge port
add bridge=bridge comment=defconf interface=ether1
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface="Master 5Ghz"
add bridge=bridge comment=defconf interface="Master 2Ghz"
/ip neighbor discovery-settings
set discover-interface-list=!dynamic
/ipv6 settings
set accept-router-advertisements=yes
/ip dhcp-client
add interface=bridge
/ipv6 dhcp-client
add add-default-route=yes interface=bridge request=address
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
/ipv6 nd
set [ find default=yes ] disabled=yes
/system clock
set time-zone-name=Pacific/Noumea
/system identity
set name=AccessPoint-1
/system routerboard mode-button
set enabled=yes on-event=dark-mode
/system script
add comment=defconf dont-require-permissions=no name=dark-mode owner=*sys \
    policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
    source="\r\
    \n   :if ([system leds settings get all-leds-off] = \"never\") do={\r\
    \n     /system leds settings set all-leds-off=immediate \r\
    \n   } else={\r\
    \n     /system leds settings set all-leds-off=never \r\
    \n   }\r\
    \n "
/tool mac-server
set allowed-interface-list=*2000011

Found it. Since version 15, Android ignores RA values with duration lower than 180 to save power.

Ref: https://www.reddit.com/r/ipv6/comments/1iciujl/comment/m9r3v9s/