I’ve used this list generating package for years now with great results: https://github.com/opencoff/unbound-adblock/tree/master
It is designed to generate blocking lists that can be used with unbound, the DNS resolver. There are even instructions for how to configure unbound so if you are new to it all you can follow along.
I use the resulting lists in my two local DNS name servers, running unbound.
The way it works is that if a query for a blocked address comes in to one of thenlocal DNS servers it returns a domain not found result. If the address is not on the block list then it forwards the query on to an internet DNS resolver securely using DoT.
You can gain further control over your DNS results by choosing those upstream resolvers carefully. Quad9 and Cloudflare etc all offer DoT resolving, along with some further filtering (eg. for malware), or completely unfiltered DNS if that’s what you want.
Services like cleanbrowsing.org offer more fine grained filtering, useful if you want a family-friendly set of DNS results, based off categorify.org. You can pay for really fine tuned results, or there is a free layer which provides still very useful basic categories.
Combining the two forms of filtering, local advert and tracking blocking, along with open internet content categorisation, seems to be very effective.
I get complaints about too many adverts when my kids are on WiFi away from home. I take it as a compliment.
This approach sounds good.
I think the correct approach is both, if you have the option.
Most devices accept two name servers. Redundancy is always good, especially for DNS.