We practice what we preach

Cookieless analytics, fully managed by ByteRon. No personal data collected, no invasive tracking. Ever.

Privacy Policy →

AdGuard Home Configuration: Blocklists, Rules, and Fine-Tuning

Published: at 10:00

TL;DR

Configure AdGuard Home for network-wide ad blocking and tracker prevention. This guide covers blocklist selection, custom filtering rules, and DNS optimization.

Prerequisites:

  • AdGuard Home installed and running
  • Access to AdGuard UI (default port 3000, or 3080 on OPNsense)
  • Basic understanding of DNS
  • Optional: OPNsense setup guide if running AdGuard on OPNsense

What you’ll configure:

  • Blocklist selection strategy (conservative to aggressive)
  • Custom filtering rules and whitelisting
  • DNS settings and query logging
  • Monitoring and maintenance

Blocklist Selection Strategy

Navigate to Filters → DNS Blocklists in AdGuard UI.

Philosophy

Two approaches:

  1. Start slow, add lists gradually and monitor your query logs and whitelist false positives.
  2. Alternatively, enable all lists and then constantly troubleshoot when things don’t work. And they won’t!

I highly recommend the first approach, the second one leads to many unhappy family members.

The lists below are what I currently use alongside my custom filtering rules. My setup changes regularly, so don’t blindly copy it. Figure out what lists work best for your own use case and network.

Essential Blocklists

ListDomainsPurpose
AdGuard DNS filter~145KBuilt-in, standard ads and trackers
AdGuard DNS Popup Hosts filter~1.3KPopup and redirect ads
AdAway Default Blocklist~6.5KMobile ad servers
AWAvenue Ads Rule~86Chinese ad networks
OISD Big~263KComprehensive balanced blocking
HaGeZi Pro++~229KAds, tracking, telemetry, malware

Most of these are available directly through Add BlocklistChoose from the list in AdGuard. For any that aren’t, use Add a custom list and paste the URL.

AdGuard Home Add Blocklist dialog showing available built-in lists

HaGeZi Device Tracker Lists

HaGeZi maintains device-specific tracker lists that block telemetry without breaking functionality:

ListDomainsPurpose
Samsung Tracker~196Samsung TV and phone telemetry
Windows/Office Tracker~380Microsoft telemetry and diagnostics
Xiaomi Tracker~353Xiaomi device telemetry

HaGeZi Security Lists

ListDomainsPurpose
Threat Intelligence Feeds~584KMalware, phishing, C2 servers
Badware Hoster~1.3KHosting providers known for malware
Most Abused TLDs~435Blocks entire TLDs used almost exclusively for spam
DynDNS~1.4KDynamic DNS services abused by malware
Encrypted DNS/VPN/TOR/Proxy BypassPrevents devices from bypassing your DNS filtering
DNS Rebind Protection~11Blocks DNS rebinding attacks

HaGeZi also provides an Allowlist Referral list (~912 domains) that prevents false positives from aggressive blocklists. Worth enabling if you’re running Pro++ or multiple lists.

Other Security Lists

ListDomainsPurpose
Steven Black’s List~79KAds + malware + fake news
Phishing Army~156KPhishing domains
Phishing URL Blocklist~22KPhishTank and OpenPhish combined
URLHaus~8KMalware distribution sites
ShadowWhisperer’s Malware~42KMalware domains
ShadowWhisperer’s Dating~1.3KBlocks dating sites
Dandelion Sprout’s Anti-MalwareAdditional malware protection
AdGuard Home DNS Blocklists page showing all enabled filter lists

Custom Filtering Rules

Navigate to Filters → Custom Filtering Rules.

AdGuard Home Custom Filtering Rules page

Rule Syntax

||example.com^          # Block domain and all subdomains
||ads.example.com^      # Block specific subdomain
@@||example.com^        # Whitelist/unblock domain

Whitelisting False Positives

Aggressive lists block legitimate services. Whitelist as needed:

@@||cdn.jsdelivr.net^
@@||fonts.googleapis.com^
@@||ajax.googleapis.com^

Finding what to whitelist:

  1. Navigate to Query Log
  2. Filter by client IP having issues
  3. Look for blocked domains during failure
  4. If domain looks legitimate, whitelist it

DNS Configuration Optimization

Disable DNS Caching

Navigate to Settings → DNS Settings → DNS Cache Configuration.

Set everything to zero:

cache_size: 0
cache_ttl_min: 0
cache_ttl_max: 0

Disable AdGuard’s cache if you have an upstream resolver (like Unbound) that already handles caching. Two cache layers cause stale entries, inconsistent results, and harder debugging.

AdGuard Home DNS Cache Configuration set to zero

DNS Server Settings

Navigate to Settings → DNS Settings → DNS Server Configuration.

SettingValueReason
Rate Limit0Trusted network
EDNS Client SubnetDisablePrevents leaking subnet info
DNSSECEnableValidate responses
Disable IPv6EnablePrevents IPv6 DNS leaks
Blocking ModeDefaultReturn NXDOMAIN
AdGuard Home DNS Server Configuration settings

Query Logging

Navigate to Settings → General Settings → Query Log.

Retention Settings

Query log retention: 90 days
Statistics retention: 90 days

I use 90 days for historical troubleshooting. Longer retention uses more disk space, so adjust based on what you have available.

Client IP Anonymization

Anonymize client IPs: Disable

I disable this for per-device visibility. Enable if multiple people share your network and you want privacy.


Client Settings and Parental Controls

Navigate to Settings → Client Settings.

AdGuard supports per-client blocking levels and client tags for bulk management. Tags like kids-devices, iot-devices, or work-devices let you apply different filtering policies without configuring each device individually.

Settings → Parental Control offers Safe Browsing (Google Safe Browsing API) and Safe Search (forced safe search on Google, Bing, DuckDuckGo). Both send data to Google, so consider the privacy trade-off. I don’t use either since blocklists already cover malware protection and all traffic goes through VPN.


Monitoring and Maintenance

Dashboard Metrics

Navigate to Dashboard in AdGuard UI.

AdGuard Home Dashboard showing query statistics
MetricWhat to look for
Blocked Queries15-25% average is typical. Higher suggests over-blocking
Top Blocked DomainsReview regularly, whitelist legitimate services
Top ClientsDevices making excessive queries could indicate malware or misconfigured apps

Using Query Log

Navigate to Query Log.

AdGuard Home Query Log showing blocked and allowed queries

Filters:

  • Blocked: Show only blocked queries
  • Client: Filter by device IP
  • Domain: Search specific domain

Troubleshooting workflow when user reports broken site:

  1. Filter query log by client IP
  2. Look for blocked queries during failure
  3. Match blocked domain to broken service
  4. Whitelist if false positive

Backups and Updates

Back up your config at Settings → General Settings → Backup and Restore before making major changes. Blocklists auto-update every 24 hours.


General Advice

Avoid enabling too many blocklists at once. Lists overlap, and stacking them blindly makes it harder to trace what blocked what when something breaks. Add lists one at a time and give each a few days before adding the next.

Regularly review your query logs and whitelist anything that shouldn’t be blocked. False positives are inevitable with any blocklist, and catching them early saves you from chasing down “why doesn’t this site work” later.

[references]
AdGuard Home:
  1. [1.1]
    AdGuard Home GitHub — Official repository and documentation
  2. [1.2]
    AdGuard Home Wiki — Configuration guides and advanced setup
Blocklists:
  1. [2.1]
    OISD Blocklist — Comprehensive domain blocklists
  2. [2.2]
    Firebog — Collection of reputable blocklists
  3. [2.3]
    Hagezi's DNS Blocklists — Multi-category DNS blocking lists
Community:
  1. [3.1]
    r/AdGuard — AdGuard subreddit
  2. [3.2]
    OPNsense Forum — OPNsense community support
[changelog]
2025-01-20:
  • Initial publication

Disclaimer

Use the information provided here at your own risk, but if you find errors or issues in this guide, leave a comment and I’ll try to address them ASAP.

RO

Ronaldo

BSc Mathematics | MSc Information Security

  • Technical problem-solver with unusually broad capabilities & interests
  • I figure things out and get things done

Comments

Table of Contents