I have a home network with an internal DNS resolver. I have some subdomains (public) that maps to a real world IP address, and maps to the home server private address when inside home.

In short, i use unbound and have added some local-data entries so that when at home, those subdomains points to 192.168.x.y instead.

All works perfectly fine from Windows and from Linux PCs.

Android, instead, doesnt work.

With dynamic DHCP allocation on android, the names cannot be resolved (ping will fail…) from the android devices. With specific global DNS servers (like dns.adguard.com) of course will always resolve to the public IP.

The only solution i found is to disable DHCP for the Wifi on android and set a static IP with the 192.168.x.y as DNS server, in this case it will work.

But why? Aynbody has any hints?

It’s like Android has some kind of DNS binding protection enabled by default, but i cannot find any information at all.

  • @theit8514
    link
    English
    321 days ago

    You mentioned ping. If you’re using Termux you may need to manually update its DNS settings (different from the system DNS). The file is /data/data/com.termux/files/usr/etc/resolv.conf

    To make it roam you probably want your home dns first then some internet resolvers after that.

    • ShimitarOP
      link
      fedilink
      English
      121 days ago

      Thanks! This explains a few things… But not why Android is IGNORING my DNS pushed via DHCP even if private DNS is disabled…