dprox: a lightweight DNS proxy server

[ bsd3, dns, program ] [ Propose Tags ]

Please see the README on GitHub at https://github.com/bjin/dprox#readme

[Skip to Readme]
Versions [faq] 0.1.0, 0.1.1, 0.1.2,
Dependencies attoparsec (>=0.13), base (>=4.12 && <5), bytestring (>=0.10), containers (>=0.6), dns (>=3.0.4), iproute (>=1.7), network (>=2.8), optparse-applicative (>=0.14), streaming-commons (>=0.2), unix (>=2.7), unordered-containers (>=0.2) [details]
License BSD-3-Clause
Copyright 2019 Bin Jin
Author Bin Jin
Maintainer bjin@ctrl-d.org
Category DNS
Home page https://github.com/bjin/dprox#readme
Bug tracker https://github.com/bjin/dprox/issues
Source repo head: git clone https://github.com/bjin/dprox
Uploaded by BinJin at Thu Jun 13 09:11:05 UTC 2019
Distributions NixOS:
Executables dprox
Downloads 119 total (119 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
Last success reported on 2019-06-13 [all 3 reports]



Enable static build


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for dprox-

[back to package description]


CircleCI Depends Release Hackage AUR License

dprox is a lightweight DNS proxy server. It's created as a drop-in replacement of dnsmasq to work with dnsmasq-china-list, while improving the overall lookup performance over large domain list.


dprox should build and work on all unix-like OS with ghc support, but it's only been tested on Linux and macOS.

While dprox can be built with cabal like any other Hackage packages, for a reliable compilation with pinned dependencies, stack is generally recommended.

stack setup
stack install

For Arch Linux users, an AUR package is also provided.


Only a small subset of dnsmasq options are implemented at the moment, just barely enough to work with dnsmasq-china-list and hosts-blocklists.

Here is the list of implemented dnsmasq options (with server, local, address and bogus-nxdomain options allowed in configuration file):

-u, --user=<username>
-p, --port=<port>
-a, --listen-address=<ipaddr>
-C, --conf-file=<file>
-h, --no-hosts
-H, --addn-hosts=<file>
-S, --local, --server=[/<domain>/]<ipaddr>[#<port>]
-A, --address=[/<domain>/]<ipaddr>
-B, --bogus-nxdomain=<ipaddr>

Use dprox --help or dnsmasq manpage for further details about these options. But be aware that there might be minor differences on some options like --server.

To use dprox with dnsmasq-china-list, with "" as the remote DNS server (systemd user can also use this unit file):

dprox -C /etc/dnsmasq.d/accelerated-domains.china.conf -C /etc/dnsmasq.d/bogus-nxdomain.china.conf -S

To use dprox with hosts-blocklists and the default remote DNS server (""), without loading system hosts file:

dprox -C /opt/hosts-blocklists/domains.txt -H /opt/hosts-blocklists/hostnames.txt -h

Known Issue

  • dprox has fairly large memory footprint at the moment. Over 100MB for current dnsmasq-china-list.


dprox is licensed under the BSD3 license. See LICENSE file for details.