# adguardteam/dnsproxy

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/adguardteam-dnsproxy).**

2,997 stars · 312 forks · Go · apache-2.0

## Links

- GitHub: https://github.com/AdguardTeam/dnsproxy
- awesome-repositories: https://awesome-repositories.com/repository/adguardteam-dnsproxy.md

## Topics

`dns` `dns-over-https` `dns-over-quic` `dns-over-tls` `dnscrypt` `golang` `open-source` `proxy`

## Description

dnsproxy is an encrypted DNS proxy and traffic router that translates and forwards DNS requests between clients and upstream resolvers. It functions as a server for multiple secure protocols, including DNS-over-HTTPS, DNS-over-TLS, DNS-over-QUIC, and DNSCrypt, to protect queries from eavesdropping and tampering.

The project differentiates itself through advanced routing and optimization capabilities. It utilizes a domain-based routing engine to direct queries to specific upstream servers via wildcard rules and employs parallel querying to return responses from the fastest responding network address. It also provides IPv6 connectivity transition by synthesizing IPv6 addresses for IPv4-only destinations.

The server includes additional traffic management and security features, such as TTL-based response caching, request rate limiting, and basic authentication for encrypted endpoints. It supports forwarding client subnet information to upstream resolvers for geographically optimized results and can transform specific IP responses into non-existent domain errors.

The project can be deployed as a container image.

## Tags

### Networking & Communication

- [Multi-Protocol Encrypted DNS Servers](https://awesome-repositories.com/f/networking-communication/dns-servers/dns-over-https-servers/multi-protocol-encrypted-dns-servers.md) — Provides a multi-protocol server supporting DNS-over-HTTPS, TLS, QUIC, and DNSCrypt. ([source](https://github.com/AdguardTeam/dnsproxy#readme))
- [DNS Forwarding Routing](https://awesome-repositories.com/f/networking-communication/dns-forwarding-routing.md) — Routes DNS queries to specific external servers using standard or encrypted protocols. ([source](https://github.com/AdguardTeam/dnsproxy#readme))
- [DNS Query Optimization](https://awesome-repositories.com/f/networking-communication/dns-query-optimization.md) — Minimizes resolution latency by querying multiple upstreams in parallel and returning the fastest response.
- [DNS Query Routers](https://awesome-repositories.com/f/networking-communication/dns-query-routers.md) — Functions as a router that directs DNS queries to specific upstreams based on domain names.
- [DNS Routing Overrides](https://awesome-repositories.com/f/networking-communication/dns-routing-overrides.md) — Maps specific domains or private network ranges to designated upstream resolvers.
- [DNS-over-HTTPS Servers](https://awesome-repositories.com/f/networking-communication/dns-servers/dns-over-https-servers.md) — Provides a network service that resolves DNS queries over the encrypted HTTPS protocol.
- [DNS-over-TLS Servers](https://awesome-repositories.com/f/networking-communication/dns-servers/dns-over-tls-servers.md) — Provides a server that wraps DNS queries in TLS encryption to prevent eavesdropping.
- [Encrypted DNS Servers](https://awesome-repositories.com/f/networking-communication/encrypted-dns-servers.md) — Hosts encrypted DNS endpoints using TLS certificates or DNSCrypt configurations to secure client connections. ([source](https://github.com/AdguardTeam/dnsproxy/blob/master/README.md))
- [Protocol Translation Proxies](https://awesome-repositories.com/f/networking-communication/http-2-support/protocol-translation-proxies.md) — Translates DNS requests between encrypted transport protocols and standard upstream resolver formats.
- [Domain-Based Routing](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-infrastructure-configuration/network-and-server-infrastructure/domain-name-system-services/domain-based-routing.md) — Provides a routing engine that directs DNS queries to specific upstream servers based on domain name wildcard rules.
- [DNS-over-QUIC Servers](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/quic-implementations/dns-over-quic-servers.md) — Implements a DNS-over-QUIC server for low-latency encrypted name resolution.
- [DNS64 Translation](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-protocols/ipv6-network-stacks/dns64-translation.md) — Synthesizes IPv6 addresses from IPv4 records to enable IPv6-only clients to access IPv4 resources. ([source](https://github.com/AdguardTeam/dnsproxy/blob/master/README.md))
- [IPv4-Mapped IPv6 Address Techniques](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-protocols/ipv6-network-stacks/ipv4-mapped-ipv6-address-techniques.md) — Synthesizes IPv6 addresses for IPv4-only destinations to enable connectivity for IPv6-only clients.
- [EDNS Client Subnet Routing](https://awesome-repositories.com/f/networking-communication/edns-client-subnet-routing.md) — Implements the EDNS0 extension to forward client subnet information for geographically optimized DNS responses.
- [IPv6 Implementations](https://awesome-repositories.com/f/networking-communication/ipv6-implementations.md) — Translates IPv4 addresses into synthetic IPv6 addresses to enable connectivity for IPv6-only clients.
- [Upstream Response Racing](https://awesome-repositories.com/f/networking-communication/upstream-response-racing.md) — Queries multiple upstream servers in parallel and returns the result from the fastest network address. ([source](https://github.com/AdguardTeam/dnsproxy/blob/master/README.md))

### Security & Cryptography

- [Encrypted DNS Resolvers](https://awesome-repositories.com/f/security-cryptography/encrypted-dns-resolvers.md) — Acts as an encrypted DNS proxy that translates and forwards requests using secure protocols like DoH and DoT. ([source](https://github.com/AdguardTeam/dnsproxy/blob/master/README.md))
- [Encrypted DNS Proxies](https://awesome-repositories.com/f/security-cryptography/encrypted-dns-resolvers/multi-protocol-resolvers/encrypted-dns-proxies.md) — Functions as an encrypted DNS proxy translating between protocols like DoH, DoT, and DNSCrypt.
- [DNSCrypt Implementations](https://awesome-repositories.com/f/security-cryptography/dnscrypt-implementations.md) — Implements the DNSCrypt protocol to ensure secure and authenticated communication with DNS resolvers.
- [DNS Access Controls](https://awesome-repositories.com/f/security-cryptography/application-access-controls/dns-access-controls.md) — Controls DNS server access through basic authentication and rate limiting.
- [Request Rate Limiting](https://awesome-repositories.com/f/security-cryptography/request-rate-limiting.md) — Tracks incoming query volume per client and drops traffic exceeding thresholds to prevent resource exhaustion.
- [Client Request Quotas](https://awesome-repositories.com/f/security-cryptography/request-size-limiters/request-limiters/request-throttling/client-request-quotas.md) — Implements per-client request quotas to protect the DNS server from resource exhaustion.

### Data & Databases

- [Latency Optimization Strategies](https://awesome-repositories.com/f/data-databases/api-response-optimizations/latency-optimization-strategies.md) — Identifies the fastest responding IP address from multiple upstream servers to optimize response latency. ([source](https://github.com/AdguardTeam/dnsproxy#readme))
- [Response Caching](https://awesome-repositories.com/f/data-databases/key-value-stores/response-caching.md) — Stores DNS lookup results locally using TTL values to reduce upstream load and network latency.
- [DNS Caches](https://awesome-repositories.com/f/data-databases/performance-caching-systems/dns-caches.md) — Caches resolved domain lookups locally to accelerate subsequent requests and reduce upstream load. ([source](https://github.com/AdguardTeam/dnsproxy#readme))

### Development Tools & Productivity

- [Parallel Action Racing](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution/parallel-action-racing.md) — Employs a racing pattern to return the DNS result from the fastest responding upstream network address.
- [Parallel Provider Calls](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution/parallel-provider-calls.md) — Queries multiple upstream servers simultaneously and returns the first successful response to minimize latency.
