Discover the comprehensive feature set that makes EtchDNS a powerful solution for DNS caching and security.
Optimized, maintainable codebase with modular design patterns, clear separation of concerns, and efficient error handling for improved stability and performance.
Uses the SIEVE algorithm for optimal memory usage, providing faster responses and reducing upstream load.
Eliminates duplicate in-flight queries to reduce upstream load and improve response times.
Multiple strategies (fastest/p2/random) to distribute queries across upstream servers for optimal performance.
Improves CDN and geolocation-based DNS responses by including client location information in queries.
UDP/TCP (standard DNS) and basic DoH (DNS-over-HTTP) support for flexible deployment options.
Whitelist and blacklist support with allowed/NX zones to control which domains can be queried.
Fine-grained control for each protocol (UDP/TCP/DoH) to prevent abuse and DoS attacks.
Protection against cache poisoning attacks by masking DNS transaction IDs.
Run with minimal system access after initialization for improved security.
Comprehensive DNS packet validation to prevent malformed or malicious requests.
Basic filtering of client IP addresses to silently drop connections from suspicious sources, prevent spoofing, and validate connection integrity.
Immediate detection of server outages for seamless query routing to available servers.
Continue serving expired cache entries during upstream failures to maintain service availability.
Regular probing of upstream servers to ensure availability and optimal performance.
Ensures consistent response times even during upstream slowdowns or partial outages.
Comprehensive observability with Prometheus endpoint for detailed performance monitoring.
HTTP interface for status monitoring and cache management, allowing remote administration.
Configurable query logging with customizable details for troubleshooting and analysis.
Create custom plugins in any language that compiles to WebAssembly (C/C++, Zig, AssemblyScript, etc.)
Implement advanced filtering logic beyond static blocklists for more sophisticated control.
Modify DNS responses based on custom business logic to implement complex policies.
Maintain state across DNS queries for complex policy enforcement and behavioral analysis.