Android unable to resolve local IPs after IPv6 implementation

Hello,

I recently changed my ISP. New ISP have IPv6 and I somehow made it work. Devices are getting IPv6 addresses, ping is working and online IPv6 test shows everything is working. However I noticed that my android devices are no longer able to resolve local IP addresses. If I disable IPv6 DNS resolving starts working immediately.

How to I fix this issue?

Here is stripped down version of my IPv6 config:

/ipv6 address
add address=::xxxx:xxxx:xxxx:xxxx eui-64=yes from-pool=ipv6-pool interface=\
    bridge
/ipv6 dhcp-client
add add-default-route=yes interface=ether1 pool-name=ipv6-pool prefix-hint=\
    ::/64 request=address,prefix
/ipv6 nd
set [ find default=yes ] dns=\
    2620:fe::fe,2606:4700:4700::1111,2001:4860:4860::8888 \
    managed-address-configuration=yes other-configuration=yes
/ipv6 nd prefix
add autonomous=no interface=bridge
/ipv6 settings
set accept-redirects=no accept-router-advertisements=yes \
    max-neighbor-entries=8192

What do you mean with “local IP addresses”? Are you using RouterOS as DNS server and have added static DNS entries to it? If you want to use the router as DNS server for IPv6 devices in your LAN (the “bridge” interface), you can do the following steps:

  • Make a copy of the current default entry in IPv6 → ND.
  • Change the interface to “bridge” instead of “all”
  • Remove the 3 GUA addresses currently in the DNS Addresses field. They are public DNS servers.
  • Go to IPv6 → Addresses. Look for the fe80:xxx IP address of the interface “bridge” and copy it, but without the prefix length /64.
  • Put that address (without /64) in the DNS field of the newly created DNS Addresses entry.
  • Make sure the Advertise DNS checkbox is turned on

You probably have to wait a bit for the new info to propagate (or you can turn off / turn on WiFi on those Android devices for immediate effect).

Thank you,
It seems to be working now.

I have few questions.

Should I change original “all” entry to use interface “ether1” only and remove all DNS entries from there. Also tick only Advertise MAC Address for this entry?

set [ find default=yes ] dns=2620:fe::fe,2606:4700:4700::1111,2001:4860:4860::8888 managed-address-configuration=yes other-configuration=yes
add dns=fe80::6e3b:6bff:fe51:4cc6 interface=bridge managed-address-configuration=yes other-configuration=yes
add advertise-dns=no disabled=yes interface=ether1 ra-lifetime=none

from the above example should i disable “all” and enable “ether1” entry with configuration shown?

And about those private ipv6 address do they stay static? Same question for the public ipv6 addresses i receive?
I don’t have DHCPv6 enabled.

If ether1 is your WAN interface, then you actually should NOT enable router advertisement on it. You can either disable the entry for “all” and not adding any entry at all for ether1.

There are cases, however, where the entry for “all” cannot be disabled. For example, you have SSTP clients with support for IPv6. Each connected client gets their own dynamic interface, so you won’t be able to add ND entries in advance (like you did with bridge) and have to rely on the “all” ND entry. Im that case you can disable RA for ether1 by adding an ND entry for it and clear all the values and checkboxes that can be cleared.

The private IPv6 addresses (fe80:xxx) on the interfaces like bridge use EUI64 and are tied to the MAC addresses. If the MAC addresses of the interfaces don’t change then the private addresses will stay the same.

Whether the public (GUA) addresses from your ISP always stay the same or change with each redial / reconnection depends on your ISP.