How to Fix DNS-Based Ad-Blockers on Chrome
Google recently added support for a feature known as asynchronous DNS to Google Chrome. It aims to lower page loading times by determining the IP address of a website before you click the link by scanning a web page as it loads, finding any domain names linked and using a Domain Name Server (DNS) to find the IP address associated with each of them. Google says it should use the DNS server that the user has configured on-device, but in some instances, this seems not to be the case.
Users are reporting that DNS based ad-blockers such as AdHell and DNS66 no longer function correctly on the latest version of Chrome, which has DNS prefetching enabled. The problem is likely due to Google defaulting to its own DNS servers instead of the ones configured on-device. DNS-based ad-blockers use a separate DNS server from that of Google, allowing them to block domains that host ads. Firewall-based ad-blockers such as NetGuard continue working as intended.
Here’s how to get your DNS-based ad-blockers working again. The fix may result in slightly longer page load times, as the whole point of asynchronous DNS is to reduce it.
Step 1: Disable asynchronous DNS
First, you’ll need to navigate to chrome://flags in your URL bar, where you’ll be brought to a menu where you can enable and disable features from within Chrome. Search for “async DNS” and change the flag from default to disabled.
Step 2: Clear DNS cache
Now you’ll need to clear the device DNS cache. This is because Google will still have many different domain names resolved to their IP addresses and have stored them in a file stored on the device, which means that toggling the async DNS feature isn’t enough. If you’ve seen any advertisements so far, then Google Chrome will still have their IP address stored. We can clear this cache easily by navigating to the chrome://net-internals page. Navigate to the DNS tab and tap “Clear host cache.”
Step 3: Restart Chrome
The last step is the simplest of the lot. Just restart Chrome by either force stopping it from the settings or swiping it from the recents menu.
We can expect Chrome’s asynchronous DNS functions to operate with the on-device DNS server in future releases, but for now, you can either have a DNS-based Adblock or slightly faster page loading times, not both.
Source: XDA developers