Overview

edit

Meziantou.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:

StepAnswerResult on the diagnostics page
1. Access policy: the client is not in AllowedClientNetworksRefusedNotAllowed
2. Rate limit: the client sent more than MaxDnsQueriesPerClientPerMinute queries this minuteRefusedRateLimited
3. Custom records: the name and type match a record of CustomRecordsThe recordCustomRecord
4. Filter lists: a rule blocks the nameNXDOMAINBlocked
4. Filter lists: a $dnsrewrite rule matchesThe rewritten answerRewritten
5. Cache: the same question was answered recentlyThe cached answerCacheHit
6. Upstreams: the first upstream that gives an answerThe upstream answerForwarded, 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.