dns-over-tls for node
npm install dns-over-tlsdns-over-tls is a Node.js DNS-over-TLS API. Here's a blog post that explains how it works.




~~~
$ npm install dns-over-tls
~~~
We import as follows:
~~~js
const dnstls = require('dns-over-tls')
~~~
All API usages return a Promise that resolves to a DNS response object.
#### dnstls.query(name)
~~~js
(async () => {
const dnsResponse = await dnstls.query('sagi.io')
})()
~~~
Sends a DNS-over-TLS request of domain name 'sagi.io' to
Cloudflare'sdns-over-tls server (host is '1.1.1.1' and servername is 'cloudflare-dns.com').
#### dnstls.query(host, servername, name)
~~~js
(async () => {
const dnsResponse = await dnstls.query('9.9.9.9', 'dns.quad9.net', 'sagi.io')
})()
~~~
Sends a DNS-over-TLS request of domain name 'sagi.io' to host '9.9.9.9' withservername 'dns.quad9.net'.
#### dnstls.query({ host, servername, name, klass = 'IN', type = 'A', port = 853 })
Allows for more advanced DNS queries.
~~~js
(async () => {
const options = {
name: 'authors.bind',
host: '145.100.185.15',
servername: 'dnsovertls.sinodun.com',
klass: 'CH',
type: 'TXT'
};
const dnsResponse = await dnstls.query(options)
})
~~~
Sends a DNS-over-TLS request of domain name 'authors.bind' to host '145.100.185.15' withservername 'dnsovertls.sinodun.com', class 'CH' and type 'TXT'.
Say we'd like to get the NS records of domain sagi.io:
~~~js
const options = {
name: 'sagi.io',
host: '1.1.1.1',
servername: 'cloudflare-dns.com',
type: 'NS',
};
const dnsResponse = await dnstls.query(options);
console.log(JSON.stringify(dnsResponse, null, 2));
~~~
Code from example.
Output:
~~~json
{
"id": 46597,
"type": "response",
"flags": 384,
"flag_qr": true,
"opcode": "QUERY",
"flag_aa": false,
"flag_tc": false,
"flag_rd": true,
"flag_ra": true,
"flag_z": false,
"flag_ad": false,
"flag_cd": false,
"rcode": "NOERROR",
"questions": [
{
"name": "sagi.io",
"type": "NS",
"class": "IN"
}
],
"answers": [
{
"name": "sagi.io",
"type": "NS",
"ttl": 10703,
"class": "IN",
"flush": false,
"data": "cass.ns.cloudflare.com"
},
{
"name": "sagi.io",
"type": "NS",
"ttl": 10703,
"class": "IN",
"flush": false,
"data": "dave.ns.cloudflare.com"
}
],
"authorities": [],
"additionals": []
}
~~~