AI summary
Local DNS filtering proxy that blocks ads and trackers via a split-tunnel VPN. Queries multiple upstream servers concurrently and caches responses for speed. Version 3.1.1 fixes prefetch, eliminates update gaps, raises TUN MTU for large packets, and improves socket reuse for faster DNS resolution.
Generated by AI. May contain inaccuracies.
About this app
A fast local DNS filtering proxy for Android. Intercepts DNS queries via Android's VpnService, blocks ads and tracking domains using customizable blocklists, and forwards to multiple upstream servers concurrently for the fastest response.
Features
- Local VPN-based DNS Proxy — Routes only DNS traffic into the app via split-tunnel VPN, all other traffic goes through normally - Domain Blocking — Filters against AdAway-format blocklists. Supports multiple lists, add/remove/toggle, and manual refresh - Concurrent Multi-Server Queries — Sends DNS queries to all enabled upstream servers simultaneously, uses the fastest successful response - DNS Response Caching — 16,384-entry LRU cache with bounded TTL (30s–60min), stale-while-revalidate, and popular-domain prefetch - In-flight Query Deduplication — Concurrent requests for the same domain share a single upstream query - UDP Socket Pooling — Reusable socket pool per upstream server (4 per server) reduces connection overhead - Statistics — In-memory query counter with batched persistence (every 5s), live display (total, blocked, block rate, avg response time) - Dashboard — Protection status, start/stop toggle, statistics grid - DNS Server Management — Configure multiple upstream servers with enable/disable toggle - Foreground Service — Runs as a foreground service with notification and stop action - Low Overhead — Packet buffer recycling, lock-free cache, minimal allocations in hot path
How It Works
1. Creates a local VPN interface routing only traffic to virtual DNS addresses (10.10.10.10, fd00::10) 2. Reads raw IP/UDP packets from the VPN interface 3. Parses the DNS question from each packet 4. Checks against loaded blocklists — blocked domains get an immediate NXDOMAIN response 5. Checks the local LRU cache — fresh entries skip the upstream query entirely 6. Forwards to all enabled upstream DNS servers concurrently via plain UDP 7. Returns the fastest successful response, caches it, patches back into the original packet
License
Apache 2.0
What's new
- Fixes
- Prefetch now works: hot domains are refreshed in the background before and after they expire, so the first expired query no longer hits an old 30-second TTL. - List updates no longer cause a gap: build-then-swap keeps the old list serving until new data is ready, removing the ad-allowed window during updates. - Fixed a large-response black hole: TUN MTU increased from 1500 to 8000, so large upstream packets are delivered in one go instead of a TC=1 the client cannot handle. - UDP receive buffer increased from 2048 to 4096; suspicious truncated packets are automatically retried over TCP to the same server. - Wildcard-only lists are no longer mistaken for "not loaded", which previously blocked VPN startup.
- DNS response speed
- Losing upstream sockets are no longer destroyed: drained and reused with question validation, saving N-1 connection setups per query. - Blocking upstream sockets moved to a dedicated 256-concurrency scheduler, no longer competing with the shared IO thread pool.
About this version
- Version
- 3.1.1 (39)
- Size
- 2.79 MB
- Requires Android
- 10
- Target SDK
- 29
- Architecture
- x86, x86_64, arm64-v8a, armeabi-v7a
- Downloads
- 31
- Updated
- Sep 25, 2026
- Package
- com.deatrg.dnsfilter
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10