mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-11 10:44:41 +00:00
net/dns{,/resolver}: quiet DNS output logging
It was a huge chunk of the overall log output and made debugging difficult. Omit and summarize the spammy *.arpa parts instead. Fixes tailscale/corp#2066 (to which nobody had opinions, so)
This commit is contained in:
parent
b6d70203d3
commit
e74d37d30f
@ -5,9 +5,12 @@
|
|||||||
package dns
|
package dns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"inet.af/netaddr"
|
"inet.af/netaddr"
|
||||||
|
"tailscale.com/net/dns/resolver"
|
||||||
"tailscale.com/util/dnsname"
|
"tailscale.com/util/dnsname"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,6 +41,20 @@ type Config struct {
|
|||||||
Hosts map[dnsname.FQDN][]netaddr.IP
|
Hosts map[dnsname.FQDN][]netaddr.IP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WriteToBufioWriter write a debug version of c for logs to w, omitting
|
||||||
|
// spammy stuff like *.arpa entries and replacing it with a total count.
|
||||||
|
func (c *Config) WriteToBufioWriter(w *bufio.Writer) {
|
||||||
|
w.WriteString("{DefaultResolvers:")
|
||||||
|
resolver.WriteIPPorts(w, c.DefaultResolvers)
|
||||||
|
|
||||||
|
w.WriteString(" Routes:")
|
||||||
|
resolver.WriteRoutes(w, c.Routes)
|
||||||
|
|
||||||
|
fmt.Fprintf(w, " SearchDomains:%v", c.SearchDomains)
|
||||||
|
fmt.Fprintf(w, " Hosts:%v", len(c.Hosts))
|
||||||
|
w.WriteString("}")
|
||||||
|
}
|
||||||
|
|
||||||
// needsAnyResolvers reports whether c requires a resolver to be set
|
// needsAnyResolvers reports whether c requires a resolver to be set
|
||||||
// at the OS level.
|
// at the OS level.
|
||||||
func (c Config) needsOSResolver() bool {
|
func (c Config) needsOSResolver() bool {
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
package dns
|
package dns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"runtime"
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -50,14 +51,18 @@ func NewManager(logf logger.Logf, oscfg OSConfigurator, linkMon *monitor.Mon, li
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) Set(cfg Config) error {
|
func (m *Manager) Set(cfg Config) error {
|
||||||
m.logf("Set: %+v", cfg)
|
m.logf("Set: %v", logger.ArgWriter(func(w *bufio.Writer) {
|
||||||
|
cfg.WriteToBufioWriter(w)
|
||||||
|
}))
|
||||||
|
|
||||||
rcfg, ocfg, err := m.compileConfig(cfg)
|
rcfg, ocfg, err := m.compileConfig(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
m.logf("Resolvercfg: %+v", rcfg)
|
m.logf("Resolvercfg: %v", logger.ArgWriter(func(w *bufio.Writer) {
|
||||||
|
rcfg.WriteToBufioWriter(w)
|
||||||
|
}))
|
||||||
m.logf("OScfg: %+v", ocfg)
|
m.logf("OScfg: %+v", ocfg)
|
||||||
|
|
||||||
if err := m.resolver.SetConfig(rcfg); err != nil {
|
if err := m.resolver.SetConfig(rcfg); err != nil {
|
||||||
|
@ -7,8 +7,10 @@
|
|||||||
package resolver
|
package resolver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
@ -79,6 +81,74 @@ type Config struct {
|
|||||||
LocalDomains []dnsname.FQDN
|
LocalDomains []dnsname.FQDN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WriteToBufioWriter write a debug version of c for logs to w, omitting
|
||||||
|
// spammy stuff like *.arpa entries and replacing it with a total count.
|
||||||
|
func (c *Config) WriteToBufioWriter(w *bufio.Writer) {
|
||||||
|
w.WriteString("{Routes:")
|
||||||
|
WriteRoutes(w, c.Routes)
|
||||||
|
fmt.Fprintf(w, " Hosts:%v LocalDomains:[", len(c.Hosts))
|
||||||
|
space := false
|
||||||
|
arpa := 0
|
||||||
|
for _, d := range c.LocalDomains {
|
||||||
|
if strings.HasSuffix(string(d), ".arpa.") {
|
||||||
|
arpa++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if space {
|
||||||
|
w.WriteByte(' ')
|
||||||
|
}
|
||||||
|
w.WriteString(string(d))
|
||||||
|
space = true
|
||||||
|
}
|
||||||
|
w.WriteString("]")
|
||||||
|
if arpa > 0 {
|
||||||
|
fmt.Fprintf(w, "+%darpa", arpa)
|
||||||
|
}
|
||||||
|
w.WriteString("}")
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteIPPorts writes vv to w.
|
||||||
|
func WriteIPPorts(w *bufio.Writer, vv []netaddr.IPPort) {
|
||||||
|
w.WriteByte('[')
|
||||||
|
var b []byte
|
||||||
|
for i, v := range vv {
|
||||||
|
if i > 0 {
|
||||||
|
w.WriteByte(' ')
|
||||||
|
}
|
||||||
|
b = v.AppendTo(b[:0])
|
||||||
|
w.Write(b)
|
||||||
|
}
|
||||||
|
w.WriteByte(']')
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteRoutes writes routes to w, omitting *.arpa routes and instead
|
||||||
|
// summarizing how many of them there were.
|
||||||
|
func WriteRoutes(w *bufio.Writer, routes map[dnsname.FQDN][]netaddr.IPPort) {
|
||||||
|
var kk []dnsname.FQDN
|
||||||
|
arpa := 0
|
||||||
|
for k := range routes {
|
||||||
|
if strings.HasSuffix(string(k), ".arpa.") {
|
||||||
|
arpa++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
kk = append(kk, k)
|
||||||
|
}
|
||||||
|
sort.Slice(kk, func(i, j int) bool { return kk[i] < kk[j] })
|
||||||
|
w.WriteByte('{')
|
||||||
|
for i, k := range kk {
|
||||||
|
if i > 0 {
|
||||||
|
w.WriteByte(' ')
|
||||||
|
}
|
||||||
|
w.WriteString(string(k))
|
||||||
|
w.WriteByte(':')
|
||||||
|
WriteIPPorts(w, routes[k])
|
||||||
|
}
|
||||||
|
w.WriteByte('}')
|
||||||
|
if arpa > 0 {
|
||||||
|
fmt.Fprintf(w, "+%darpa", arpa)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Resolver is a DNS resolver for nodes on the Tailscale network,
|
// Resolver is a DNS resolver for nodes on the Tailscale network,
|
||||||
// associating them with domain names of the form <mynode>.<mydomain>.<root>.
|
// associating them with domain names of the form <mynode>.<mydomain>.<root>.
|
||||||
// If it is asked to resolve a domain that is not of that form,
|
// If it is asked to resolve a domain that is not of that form,
|
||||||
|
Loading…
Reference in New Issue
Block a user