Skip to main content

Django-doh

Django-doh is a simple Django app to serve a DOH (DNS Over HTTPS) Proxy. It resolves DNS query on HTTP.

Quick start

  1. Install via pip:
pip install django-doh
  1. Add 'doh_server' to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [
    ...
    'doh_server',
]
  1. Include the doh_server URLconf in your project urls.py like this:
path('dns-query', include('doh_server.urls')),
  1. Add the conf in your settings like this:
DOH_SERVER = {
    "RESOLVER": "internal",
    # "RESOLVER": "8.8.8.8",
    "AUTHORITY": "",
    "LOGGER_LEVEL": "DEBUG",
}

To use the local resolver on the server where you run Django, use "internal".

Implementation

RFC 8484

Json implementation

Use with Firefox

in about:config edit:

network.trr.mode;3
network.trr.uri;https://127.0.0.1/dns-query

For the URI, add your URI for your reverse proxy serving Django.

You can use Nginx as reverse proxy :

events {
}
http {
    server {
        listen 443 ssl http2 default_server;
        location /dns-query {
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8000/dns-query;
        }
        ssl_certificate /etc/nginx/cert.pem;
        ssl_certificate_key /etc/nginx/key.pem;
    }
}

Test suite

Run using tox.

tox --parallel

Benchmark

Macbook Pro 2019 Processor 2,4 GHz Intel Core i5 Memory 8 GB 2133 MHz LPDDR3

Server Django and a reverse proxy Nginx in a Docker container.

apib -c 100 -d 60 @benchmark_get_url.txt

HTTP/1.1
Duration:             60.032 seconds
Attempted requests:   7911
Successful requests:  7911
Non-200 results:      0
Connections opened:   104
Socket errors:        0

Throughput:           131.780 requests/second
Average latency:      734.647 milliseconds
Minimum latency:      27.760 milliseconds
Maximum latency:      9819.022 milliseconds
Latency std. dev:     710.929 milliseconds
50% latency:          606.548 milliseconds
90% latency:          1360.734 milliseconds
98% latency:          2845.927 milliseconds
99% latency:          3612.085 milliseconds

Client CPU average:    0%
Client CPU max:        0%
Client memory usage:    0%

Total bytes sent:      1.15 megabytes
Total bytes received:  2.44 megabytes
Send bandwidth:        0.15 megabits / second
Receive bandwidth:     0.33 megabits / second

Metadata

Release files for django-doh 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-doh 0.1.1
File Size Uploaded
django-doh-0.1.1.tar.gz 9.7 kB Details

Release files / django-doh-0.1.1.tar.gz

Download URL django-doh-0.1.1.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5fc14c97fcdbd509faa2184c52abf2c953039c0741cd4ddf64bb88c943a10c54
BLAKE2b-256 checksum
How to use checksums
829150513c4b77dd3c25534fe062b53310a5f2498ac60d933fdf2a42a2b2e8b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page