Anonymize single-label DNS zones in debug bundles

This commit is contained in:
Viktor Liu
2026-09-04 07:10:57 +02:00
parent 798e4a0546
commit 70d16d7987
6 changed files with 259 additions and 29 deletions
+12 -2
View File
@@ -356,7 +356,7 @@ func (s *DefaultServer) RegisterHandler(domains domain.List, handler dns.Handler
}
func (s *DefaultServer) registerHandler(domains []string, handler dns.Handler, priority int) {
log.Debugf("registering handler %s with priority %d for %v", handler, priority, domains)
log.Debugf("registering handler %s with priority %d for %s", handler, priority, joinDomainsForLog(domains))
for _, domain := range domains {
if domain == "" {
@@ -417,7 +417,7 @@ func (s *DefaultServer) CancelBatch() {
}
func (s *DefaultServer) deregisterHandler(domains []string, priority int) {
log.Debugf("deregistering handler with priority %d for %v", priority, domains)
log.Debugf("deregistering handler with priority %d for %s", priority, joinDomainsForLog(domains))
for _, domain := range domains {
if domain == "" {
@@ -1362,6 +1362,16 @@ func joinAddrPorts(servers []netip.AddrPort) string {
return strings.Join(parts, ", ")
}
// joinDomainsForLog renders domains as domain=<name> tokens, the form the
// debug bundle recognizes as a DNS name when it anonymizes a log line.
func joinDomainsForLog(domains []string) string {
parts := make([]string, 0, len(domains))
for _, d := range domains {
parts = append(parts, "domain="+d)
}
return strings.Join(parts, " ")
}
// generateGroupKey returns a stable identity for an NS group so health
// state (everHealthy / warningActive) survives reorderings in the
// configured nameserver or domain lists.