All Projects → commonshost → playdoh

commonshost / playdoh

Licence: other
🛢 DNS over HTTPS Trusted Root Resolver for Commons Host

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to playdoh

dnscrypt-proxy
dnscrypt-proxy 2 - A flexible DNS proxy, with support for encrypted DNS protocols.
Stars: ✭ 9,198 (+30560%)
Mutual labels:  doh
DoTH-DNS
Your server doth DNS the safe way if you use DoTH-DNS.
Stars: ✭ 26 (-13.33%)
Mutual labels:  doh
fastly-terrarium-examples
Example code you can run in Fastly Terrarium: https://www.fastlylabs.com/
Stars: ✭ 28 (-6.67%)
Mutual labels:  doh
HealthDeterminants
Social Determinants of Health Visualization
Stars: ✭ 58 (+93.33%)
Mutual labels:  doh
DNS-over-HTTPS
An implementation of RFC 8484 - DNS Queries over HTTPS (DoH).
Stars: ✭ 27 (-10%)
Mutual labels:  doh
doh-server
Fast, mature, secure DoH and ODoH server proxy written in Rust. Previously known as doh-proxy and rust-doh.
Stars: ✭ 526 (+1653.33%)
Mutual labels:  doh
harddns
RFC8484 and DoH/JSON resolver
Stars: ✭ 35 (+16.67%)
Mutual labels:  doh
blocklists
An opinionated collection of blocklists for RethinkDNS.
Stars: ✭ 50 (+66.67%)
Mutual labels:  doh
DNS-over-Discord
A 1.1.1.1 DNS resolver built for Discord
Stars: ✭ 228 (+660%)
Mutual labels:  doh
go-doh-client
A DNS over HTTPS client implementation written in Go
Stars: ✭ 45 (+50%)
Mutual labels:  doh
ansible-cloudflared
Install cloudflared and systemd service for DNS-Over-HTTPS
Stars: ✭ 18 (-40%)
Mutual labels:  doh
Smartdns
A local DNS server to obtain the fastest website IP for the best Internet experience, 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验。
Stars: ✭ 4,333 (+14343.33%)
Mutual labels:  doh
dns-resolver-infra
Privacy DNS infrastructure
Stars: ✭ 39 (+30%)
Mutual labels:  doh
q
A tiny command line DNS client with support for UDP, TCP, DoT, DoH, DoQ and ODoH.
Stars: ✭ 453 (+1410%)
Mutual labels:  doh
encrypted-dns-server
An easy to install, high-performance, zero maintenance proxy to run an encrypted DNS server.
Stars: ✭ 566 (+1786.67%)
Mutual labels:  doh
luci-app-dnscrypt-proxy2
LuCI support for dnscrypt-proxy version2 https://github.com/DNSCrypt/dnscrypt-proxy
Stars: ✭ 25 (-16.67%)
Mutual labels:  doh
dnsredir
Yet another seems better forward/proxy plugin for CoreDNS
Stars: ✭ 58 (+93.33%)
Mutual labels:  doh
dohjs
DNS over HTTPS client for use in the browser
Stars: ✭ 71 (+136.67%)
Mutual labels:  doh
fastdns
Fast DNS package for Go. Tuned for high performance. Zero memory allocations in almost paths. Up to 1M QPS on a single host.
Stars: ✭ 67 (+123.33%)
Mutual labels:  doh
updns
Public Adfree DNS over HTTPS Server
Stars: ✭ 23 (-23.33%)
Mutual labels:  doh

playdoh 🛢

Build Status npm version

Middleware for Node.js web servers to expose DNS over HTTPS (DoH).

Implement: DNS Queries over HTTPS (DoH) [RFC8484].

Demo: Try it with Firefox

Configure Firefox to use Commons Host DNS over HTTPS in 3 steps. Enjoy a more private and secure Internet.

Playdoh powers the 🐑 Commons Host DNS over HTTPS service running on >20 global edge servers. The service is free and public. No tampering, no filtering, no logging.

Using Firefox 64+

  1. Open Preferences and under Network Settings press the Settings... button.

  2. Check Enable DNS over HTTPS

  3. Enter in the URL field: https://commons.host

Firefox DoH settings

Using Firefox 62

  1. Browse to: about:config

  2. Search: network.trr.

  3. Configure:

    Preference Name Value
    network.trr.mode 2
    network.trr.uri https://commons.host

Firefox settings

Usage

Note: HTTP/2 is the minimum recommended version of HTTP for use with DoH.

const { playdoh } = require('playdoh')

// Defaults
const 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 = playdoh(options)

Returns: middleware(request, response, next)

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 = require('connect')
const { createSecureServer } = require('http2')
const app = connect()
app.use(middleware)
const options = {
  key: fs.readFileSync('server-key.pem'),
  cert: fs.readFileSync('server-cert.pem')
}
const server = createSecureServer(options, app)
server.listen(443)

Fastify

const fastify = require('fastify')({
  http2: true,
  https: {
    key: fs.readFileSync('server-key.pem'),
    cert: fs.readFileSync('server-cert.pem')
  }
})
fastify.use(middleware)
fastify.listen(443)

References

Credits

Made by Kenny Shen and Sebastiaan Deckers for 🐑 Commons Host.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].