// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package dns import ( "inet.af/netaddr" ) // Config is a DNS configuration. type Config struct { // DefaultResolvers are the DNS resolvers to use for DNS names // which aren't covered by more specific per-domain routes below. // If empty, the OS's default resolvers (the ones that predate // Tailscale altering the configuration) are used. DefaultResolvers []netaddr.IPPort // Routes maps a DNS suffix to the resolvers that should be used // for queries that fall within that suffix. // If a query doesn't match any entry in Routes, the // DefaultResolvers are used. Routes map[string][]netaddr.IPPort // SearchDomains are DNS suffixes to try when expanding // single-label queries. SearchDomains []string // Hosts maps DNS FQDNs to their IPs, which can be a mix of IPv4 // and IPv6. // Queries matching entries in Hosts are resolved locally without // recursing off-machine. Hosts map[string][]netaddr.IP // AuthoritativeSuffixes is a list of fully-qualified DNS suffixes // for which the in-process Tailscale resolver is authoritative. // Queries for names within AuthoritativeSuffixes can only be // fulfilled by entries in Hosts. Queries with no match in Hosts // return NXDOMAIN. AuthoritativeSuffixes []string }