Overview
editMeziantou.DnsProxy is a DNS server for a machine or a network. Clients send it their queries; it blocks the domains of your filter lists, answers your own records, and forwards the other queries to upstream resolvers over encrypted transports, with a cache. A web page shows the recent queries. It is a .NET tool built on DnsServer, DnsFilter and DnsClient.
What happens to a query
The proxy handles each query in this order, and stops at the first step that answers:
| Step | Answer | Result on the diagnostics page |
|---|---|---|
1. Access policy: the client is not in AllowedClientNetworks | Refused | NotAllowed |
2. Rate limit: the client sent more than MaxDnsQueriesPerClientPerMinute queries this minute | Refused | RateLimited |
3. Custom records: the name and type match a record of CustomRecords | The record | CustomRecord |
| 4. Filter lists: a rule blocks the name | NXDOMAIN | Blocked |
4. Filter lists: a $dnsrewrite rule matches | The rewritten answer | Rewritten |
| 5. Cache: the same question was answered recently | The cached answer | CacheHit |
| 6. Upstreams: the first upstream that gives an answer | The upstream answer | Forwarded, or UpstreamFailure |
Before these steps, a query with an opcode other than Query gets NotImplemented, and a query without exactly one question gets FormError.
Pages
- Running the proxy: install the tool, start it, and point clients at it.
- Configuration: upstreams, filter lists, custom records, cache and limits.
- Serving the network: listen on the network, restrict the clients, and enable DNS over TLS, HTTPS and QUIC.
- Diagnostics: the web page, pausing the filtering, logs and traces.