WIP: debug logs for app connector debugging

This commit is contained in:
Andrew Lytvynov 2025-01-09 15:36:35 -08:00
parent 6ddeae7556
commit 51774b3382
No known key found for this signature in database
3 changed files with 39 additions and 7 deletions

View File

@ -7,6 +7,7 @@ import (
"context"
"errors"
"fmt"
"log"
"net/http"
"sync"
"sync/atomic"
@ -423,6 +424,11 @@ type mapRoutineState struct {
var _ NetmapDeltaUpdater = mapRoutineState{}
func (mrs mapRoutineState) UpdateFullNetmap(nm *netmap.NetworkMap) {
for _, p := range nm.Peers {
if routes := p.PrimaryRoutes(); routes.Len() > 0 {
log.Printf("DEBUG: node %q routes %q", p.Name(), routes.AsSlice())
}
}
c := mrs.c
c.mu.Lock()

View File

@ -6,9 +6,7 @@ package resolver
import (
"bytes"
"context"
"crypto/sha256"
"crypto/tls"
"encoding/base64"
"encoding/binary"
"errors"
"fmt"
@ -23,6 +21,7 @@ import (
"sync/atomic"
"time"
"golang.org/x/net/dns/dnsmessage"
dns "golang.org/x/net/dns/dnsmessage"
"tailscale.com/control/controlknobs"
"tailscale.com/envknob"
@ -938,6 +937,11 @@ func (f *forwarder) forwardWithDestChan(ctx context.Context, query packet, respo
if len(resolvers) == 0 {
resolvers = f.resolvers(domain)
names := make([]string, len(resolvers))
for _, r := range resolvers {
names = append(names, r.name.Addr)
}
f.logf("DEBUG: resolvers for %q: %q", domain, names)
if len(resolvers) == 0 {
metricDNSFwdErrorNoUpstream.Add(1)
f.health.SetUnhealthy(dnsForwarderFailing, health.Args{health.ArgDNSServers: ""})
@ -974,9 +978,9 @@ func (f *forwarder) forwardWithDestChan(ctx context.Context, query packet, respo
defer fq.closeOnCtxDone.Close()
if verboseDNSForward() {
domainSha256 := sha256.Sum256([]byte(domain))
domainSig := base64.RawStdEncoding.EncodeToString(domainSha256[:3])
f.logf("request(%d, %v, %d, %s) %d...", fq.txid, typ, len(domain), domainSig, len(fq.packet))
//domainSha256 := sha256.Sum256([]byte(domain))
//domainSig := base64.RawStdEncoding.EncodeToString(domainSha256[:3])
f.logf("request(%d, %v, %q, %s) %d...", fq.txid, typ, len(domain), domain, len(fq.packet))
}
resc := make(chan []byte, 1) // it's fine buffered or not
@ -1018,8 +1022,29 @@ func (f *forwarder) forwardWithDestChan(ctx context.Context, query packet, respo
metricDNSFwdErrorContext.Add(1)
return fmt.Errorf("waiting to send response: %w", ctx.Err())
case responseChan <- packet{v, query.family, query.addr}:
if verboseDNSForward() {
f.logf("response(%d, %v, %d) = %d, nil", fq.txid, typ, len(domain), len(v))
answers, err := func() ([]string, error) {
p := new(dnsmessage.Parser)
_, err := p.Start(v)
if err != nil {
return nil, err
}
if err := p.SkipAllQuestions(); err != nil {
return nil, err
}
ans, err := p.AllAnswers()
if err != nil {
return nil, err
}
var res []string
for _, a := range ans {
res = append(res, a.Body.GoString())
}
return res, nil
}()
if err != nil {
f.logf("failed to parse DNS response: %v", err)
} else {
f.logf("response(%d, %v, %q) = %q, nil", fq.txid, typ, domain, answers)
}
metricDNSFwdSuccess.Add(1)
f.health.SetHealthy(dnsForwarderFailing)

View File

@ -1297,6 +1297,7 @@ func (r *Resolver) respond(query []byte) ([]byte, error) {
if rcode == dns.RCodeRefused {
return nil, errNotOurName // sentinel error return value: it requests forwarding
}
r.logf("DEBUG: resolveLocal(%q) ip: %q code: %q", name, ip, rcode)
resp := parser.response()
resp.Header.RCode = rcode