PiHole is pretty cool, very 'plug n play' which I like. A sufficiently advanced average user can set it up without too much trouble just following on a guide, even a relatively tech savvy 'lay' person can do this.
If you like a more technical solution I prefer something like running a Unbound + NSD server
Here's some great tutorials on that:
(Kudos to the people who write Calomel, i really liked these tutorials, it was a great way for me to get started and look into these services deeper once understanding what was going on here)
https://calomel.org/nsd_dns.html
https://calomel.org/unbound_dns.html
Pairing that with squid proxy can be the ultimate win:
https://calomel.org/squid.html
https://calomel.org/squid_adservers.html
https://calomel.org/squid_ua_random.html
and don't forget dnscrypt people!
https://dnscrypt.org/
I'm really big into having ones own DNS server on the network instead of completely using outside solutions. There is little overhead with a sufficiently modern implementation.
Also, these solutions run on FreeBSD/OpenBSD for those who prefer.
As a complete aside. Aren't most routers, esp. business class routers, running modified Unix/Linux anyway? Why on earth hasn't a reputable company made a guns ready router that lets you have access to the Linux/Unix underpinnings without flashing (albeit awesome) Open Source alternatives? I would think in the 'business/enterprise' class hardware side this would be more prevalent.
Maybe I just don't know of any solutions like that available stateside. I found one in Europe:
https://omnia.turris.cz/en/
Can't get it stateside though :(
I instead custom built most of my networking hardware...but still.