Pi-Hole works everywhere except Android Phones

Hi @Valiceemo , please, do you remember the process to fix this problem? I have same error in my devices Android but computers and others pi-hole 100% every time.

thanks very mach for help

regards

I think the key was to disable IPV6 on my router.

Android does unusual things with DNS, I have found blocking access to the Internet on port 53 from any device but my pi-hole forces my android stuff to use the pi-hole. Many topics on this, look for port 53 and you'll find them. Also on the pi-hole reddit.

I found a solution for our Pixel 2 phones that was related to Private DNS being enabled. Details here: https://www.reddit.com/r/pihole/comments/aco8iu/later_model_andriod_devices_not_working_with/

1 Like

I had this problem after upgrading to Android Pie. I documented the issue on my Github Project.

Google added a new feature in Chrome called "Async DNS resolver" that ignores your DNS settings and forwards queries to Google instead.This issue can be solved with the following Steps:

* Launch Chrome
* Enter the URL "chrome://flags"
* search for "dns"
* Set "Async DNS resolver" to "Disabled"
* Click on "RELAUNCH NOW" to restart your browser
2 Likes

@Videopac is right.
Here is one solution.
When you have set everything like it should you will notice that ads in Firefox are being blocked.
Ads in Chrome are not blocked.
It is an implementation that Android phone makers add to the setup of the phone. Guess that Google insists on doing so.

How to solve this
Use adb and delete com.android.partnerbrowsercustomizations.chromeHomepage
(or similar, I know it has a slightly different name on Nokia phones)

For a howto on adb goto Google, there is plenty of information.
Just don't use the complete install, use minimal adb and fastboot instead which you can find on XDA.

I'm not sure why you say this....I see no ads in Google chrome, on either desktop nor mobile.
As far as I am aware, Google do not hardcode DNS servers into their software, but they perhaps do hardcode DNS servers into hardware, such as the Chromecast and Google Home devices

The basic summary of this thread is in order to get Pi-Hole functioning on an android device, I had to disable IPV6...at least for my ISP anyway.
confirmed by a fellow Sky (UK ISP provider) here in another thread

adb uninstall --user 0 com.android.partnerbrowsercustomizations.chromeHomepage

If having this issue because selecting a DNS from Android device while on WiFi causes your ISP ip6 DNS to be used, install DNS CHANGER which uses local VPN (so you can't use it with other VPNs from your Android) but you can turn off IP6 in the app and mobile browsing will have ads blocked.

I needed to do this since I can't direct my router to a DNS, and my Pi isn't set up as a VPN.

Holy thread ressurection batman! :wink:
This is one workaround yes. But kind of defeats the point of a network wide ad blocker.
Easiest and most efficient solution is to disable IPV6 on the router as discussed way back.

1 Like

My point was when that isn't an option, that people aren't left out of options. Googling about Android issues with this still comes here, and it was no help for me a month or so back, because I cannot configure my IPS provided modem + router, and then I found
this workaround which works until I can get a proper router. Answer provided for those in my same situation who land here like I did, Robin.

No offence meant chap, apologies if it came across that way.
Just thought it had been discussed further up the thread

I believe this topic is still alive because there's not a clear answer. For example, I can't disable IPv6 DNS from my router. Also, I have a solution and I have figured out what Chrome on Android is doing.

First, what Android Chrome is doing. When Android gets the DNS servers when it connects to Wi-Fi it gets two addresses. The first, is pi-hole (for example 192.168.0.200) and the second DNS is typically a backup in case pi-hole is down (something external like 1.1.1.1). Chrome does a DNS lookup for an ad domain and pi-hole blocks it properly. But, Chrome then tries the secondary DNS because the first one didn't return a result. So Chrome then gets the ip of the ad domain from 1.1.1.1 which then causes the ad to show.

I've been able to confirm this action by changing my second DNS server to the Wi-Fi port on my pi-hole (IP 192.168.0.201 in my case). Now, when Android tries both DNS 1 & 2 for an ad domain, they both fail because both are pointing to my pi-hole.

While this does create a situation where if the pi-hole fails no DNS works, that has yet to happen. But, it does pinpoint the source of the problem. Android Chrome is not doing DNS correctly, it's trying DNS 2 when we're on purpose causing the DNS 1 lookup to fail.

Good luck getting Google to "fix" this, as they probably see it as a "feature". But the short answer is to point both DNS 1 and DNS 2 to your pi-hole (Ethernet port and Wi-Fi). If you don't have both Ethernet and Wi-Fi on your pi-hole, just set DNS 2 to 127.0.0.1 which is your localhost.

Tim

1 Like

I have just installed 2 days ago Pi-Hole today for blocking some distraccions for sudiying (YouTube) and I have ad blocking working on Android with Samsung internet explorer, Google Chrome and all apps. I'll explain what I did:

  1. Set Android pone IP to an static one from the router.
  2. On the Android Device, go to wifi settings, select your wifi network, advaced settings, set IP to static (check that it is the same static ip you set on router).
  3. On DNS 1 write the Pi-Hole static IP (I suppose you set Pi-Hole IP to static on router when you did the Pi-Hole installation).
  4. On DNS 2 write any DNS you like (I have Google DNS 8.8.4.4). This let you to have normal internet when you turn off the raspberry or lost conection for any reason.

Extra: I had everything working at this point but I highly recommend to add more blocking lists, I did it from this (excellent work): [UPDATE] The best blocking lists for the Pi-Hole + Alternative DNS servers 2019

I hope I could help you.

EDIT: More details. I set Google DNS on Pi-Hole. Raspberry model: Pi 3B. Android device: Samsung Galaxy S9+, Android 9.0. I think that Android versión and device's Brand are not the problem but I add this details for more info.

TL:DR: This might work for some. Disable advanced DNS on your phone if you have it. Settings/Network & internet/Advanced/Private DNS/Off. AND/OR Turn off any DNS adblocker on your phone like dns66 or DoH client like cloudflared as they will also bypass pihole.

Good morning all, I had the same problem and hopefully this is helpful for some but it might not be for all. I have pfsense blocking all dns requests outbound and IPv6 off yet I was still getting ads on my phone (pixel 3 xl). I have cloudflared (DoH, I highly recommend setting this up if you aren't doing this already) running on my pihole server and that tunnels dns requests out via 443. I get no ads on anything at home except my phone. I was pulling my hair out trying to figure it out.

If you have advanced DNS configured, your phone will tunnel dns requests out using the servers that are configured in advanced DNS and bypass pihole. Also, if you run any other DNS redirect service on your phone like dns66 or cloudflared for DoH on your phone, that will bypass pihole. Turn those off.

Hopefully this helps some. Cheers!

EDIT: grammar

1 Like

Amazing! That was my solution. I verified that phone has proper DNS from router but this Private DNS setting on Android phone was bypassing it. Once I turned it off, everything started working!

1 Like

Had a similar issue in 2020, set up dhcp on pihole and none of my android phones saw it or used it, all showed connected, no internet. Things were fixed when i gave them static IP addresses in phone. hope this helps.

My issue I was having was not only was my Android phone not connecting to pi-hole, but not all devices was showing up in the network interface section in the menus for pi-hole.
I had to turn off ipv6 on my router, turn off auto dns settings on my phone, and Enable the DHCP server on the pi-hole ( it was not checked) and disable DHCP server on my router.

As soon as I did the last step all devices showed on my pi-hole including my phone and now my Android phone finally blocks ads!

This is quite a bit you had to do. I also switched to the Pi-hole DHCP server some long time ago because it just seems to be really good. Not only as for fixing such DNS problems, but I also realized another difference:
When switching on Wi-Fi on my Android phone, it can take up to 10 (!!) seconds until the device finally shows being connected when using the router's DHCP server. However, as soon as I switch to the Pi-hole DHCP server (with rapid-commit enabled), I switch on Wi-Fi and BOOM, not even one seconds and I'm instantaneously connected. This is a clear day/night difference.

A bit earlier in the thread I think this was covered.

From my experience and testing it's related to ipv6 and Android, and the fact that some (possibly all) android devices use Google DNS resolvers (8.8.8.8), with it being baked into the OS.

All my problems were solved as soon as I disabled ipv6 on my ISP provided router :smile: