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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-doh-0.1.1.tar.gz (9.7 kB view details)

Uploaded Source

File details

Details for the file django-doh-0.1.1.tar.gz.

File metadata

  • Download URL: django-doh-0.1.1.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for django-doh-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5fc14c97fcdbd509faa2184c52abf2c953039c0741cd4ddf64bb88c943a10c54
MD5 cf0c625111a5543aad1140f009062019
BLAKE2b-256 829150513c4b77dd3c25534fe062b53310a5f2498ac60d933fdf2a42a2b2e8b3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page