AI summary
Local VPN-based DNS proxy that blocks ads and trackers using customizable blocklists. Queries multiple upstream servers concurrently and returns the fastest response, with LRU caching and query deduplication for low overhead. Version 3.0.4 fixes a bug where filter list update times weren't displayed due to a Kotlin string template error in cached filenames.
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
更新内容 问题修复 修复过滤列表页不显示各条目更新时间的问题。 根因:3.0.2 引入的缓存临时文件名写法有误(Kotlin 字符串模板缺少 ${}),data class 的 toString 被带进文件名,其中的 URL 含 "/" 导致缓存与元数据始终写入失败。该失败被静默捕获,而域名数据仍在内存中生效,因此拦截正常、但更新时间永远无法显示,且每次启动都会重新下载 blocklist。 其他 新增文件名生成回归测试,防止同类问题再次出现。
About this version
- Version
- 3.0.4 (37)
- Size
- 2.78 MB
- Requires Android
- 10
- Target SDK
- 29
- Architecture
- arm64-v8a, armeabi-v7a, x86, x86_64
- Downloads
- 26
- Updated
- Aug 23, 2026
- Package
- com.deatrg.dnsfilter
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10