new(
cfg) ->resolver,err
Create a new DNS resolver
Configuration fields:
servers — list of upstream DNS servers (required); entries
can be IP strings ("1.1.1.1") or tables
({ host = "1.1.1.1", port = 5353 }); port is
optional and defaults to 53 (or 853 for TLS)timeout — socket timeout in seconds (default 5)retries — retry attempts per query (default 2)use_tcp — force TCP for all queries (default false)use_tls — use DNS-over-TLS on port 853 (default false)ndots — search list dot threshold (default 1)search — search domain list (default {})edns_buffer_size — EDNS advertised UDP payload size (default 4096)use_0x20 — enable 0x20 query name encoding (default false)cache — dns.cache instance for caching (default nil, no caching)server_name — TLS SNI hostname (TLS only)cafile — path to CA certificate bundle (TLS only)capath — path to CA certificate directory (TLS only)verify — enable TLS certificate verification (default true)local dns_client = require("dns.client")
local dns_cache = require("dns.cache")
-- Simple resolver
local r = dns_client.new({ servers = { "1.1.1.1", "8.8.8.8" } })
local answers, err = r:resolve("example.com", "A")
-- Per-server port
local r = dns_client.new({
servers = { { host = "127.0.0.1", port = 5353 }, "8.8.8.8" },
})
-- From system resolv.conf
local sys = dns_client.parse_resolv_conf()
local r = dns_client.new(sys)
-- DNS-over-TLS
local r = dns_client.new({
servers = { "1.1.1.1" },
use_tls = true,
})