playdoh 🛢
Middleware for Node.js web servers to expose DNS over HTTPS (DoH).
Implemented draft specification: DNS Queries over HTTPS (DoH) version 14 [draft-ietf-doh-dns-over-https-14].
Demo: Try it with Firefox
Playdoh powers the 🐑 Commons Host DNS over HTTPS service.
Configure Firefox to use Commons Host DNS over HTTPS in 3 steps.
-
Use Firefox 62+
-
Browse to:
about:config
-
Search:
network.trr.
-
Configure:
Preference Name Value network.trr.mode
2 network.trr.uri
https://commons.host
Done! You are now using the Trusted Recursive Resolver (TRR). Enjoy a more private and secure Internet.
Usage
Note: HTTP/2 is the minimum recommended version of HTTP for use with DoH.
const playdoh = // Defaultsconst options = // udp4 (IPv4) or udp6 (IPv6) protocol: 'udp4' // Defaults to 0.0.0.0 (udp4) or ::0 (udp6) localAddress: '' // Defaults to 127.0.0.1 (udp4) or ::1 (udp6) resolverAddress: '' // Standard DNS port resolverPort: 53 // Maximum DNS lookup duration timeout: 10000 const middleware =
middleware(request, response, next)
Returns: The middleware function follows the Node.js convention and is compatible with most popular web server frameworks.
Options
protocol
Default: udp4
Can be either udp4
or udp6
to indicate whether to connect to the resolver over IPv4 or IPv6 respectively.
localAddress
Default: 0.0.0.0
(IPv4) or ::0
(IPv6)
The UDP socket is bound to this address.
Use a loopback IP address (''
empty string, localhost
, 127.0.0.1
, or ::1
) to only accept local DNS resolver responses.
Use a wildcard IP address (0.0.0.0
or ::0
) to accept remote DNS resolver responses.
resolverAddress
Default: 127.0.0.1
(IPv4) or ::1
(IPv6)
The IP address of the DNS resolver. Queries are sent via UDP.
See also: List of public DNS service operators on Wikipedia.
resolverPort
Default: 53
The port of the DNS resolver.
timeout
Default: 10000
Number of milliseconds to wait for a response from the DNS resolver.
Connect
const connect = const createSecureServer = const app = appconst options = key: fs cert: fsconst server = server
Fastify
const fastify = http2: true https: key: fs cert: fs fastifyfastify
Credits
Made by Kenny Shen and Sebastiaan Deckers for 🐑 Commons Host.