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.0.2 fixes VPN stability issues, blocklist cache corruption, and adds parallel filter-list downloads.
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
- Stability Fixes
- Fixed issue where VPN appeared running but DNS was unresponsive after quick stop/start. - Fixed crash when VPN permission was revoked during interface setup; startup failures now display a clear error. - Fixed START_STICKY not automatically restarting VPN after system reboot. - Fixed blocklist cache corruption from interrupted writes (now using atomic writes). - Fixed configuration corruption where a single invalid entry would erase all custom DNS and filter lists (now error-tolerant per entry). - Fixed concurrent modification conflicts when editing DNS servers and filter lists (DataStore atomic read-write). - Fixed statistics getting stuck when system time was modified (now using monotonic clock throttling). - Fixed hosts parser misinterpreting plain IP lines as domains.
- Internal Improvements
- Unified IPv4/IPv6 packet processing and extracted PacketRewriter (checksum/header rewrite); DnsVpnService reduced from 933 to 530 lines. - Removed redundant request merging layer in service; query merging now handled exclusively by DnsQueryExecutor. - Added VpnStateHolder as single source of truth for VPN state; UI now subscribes to state flow; removed polling and background pause logic. - Multi-source parallel download for filter lists — significantly faster refresh. - Completed repository interfaces; ServiceLocator now a singleton; ViewModel factory migrated to viewModelFactory. - Added unit tests for hosts parsing and IP/UDP checksums (including RFC test vectors).
- Download Notes
- General users: choose app-universal-release.apk. - ARM64 devices may also use app-arm64-v8a-release.apk. - Other APKs are architecture-specific builds for corresponding CPU architectures.
About this version
- Version
- 3.0.2 (35)
- Size
- 2.78 MB
- Requires Android
- 10
- Target SDK
- 29
- Architecture
- arm64-v8a, armeabi-v7a, x86, x86_64
- Downloads
- 35
- Updated
- Aug 22, 2026
- Package
- com.deatrg.dnsfilter
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10