Skip to content

Commit 471d035

Browse files
committed
dnsx: prefix transport addrs for debug only
1 parent 7c53bd6 commit 471d035

8 files changed

Lines changed: 54 additions & 55 deletions

File tree

intra/backend/dnsx_listener.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ type DNSSummary struct {
5555
DO bool
5656
// True if DNSSEC validation was successful.
5757
AD bool
58+
// True if TLS Encrypted Client Hello was used by this transport, if applicable.
59+
ECH bool
5860
// Diag message from Transport, if any. Typically, "no error"
5961
Msg string
6062
// Region of the Rethink DNS+ server (if used)

intra/dns53/dot.go

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -344,10 +344,8 @@ func (t *dot) Query(network string, q *dns.Msg, smm *x.DNSSummary) (ans *dns.Msg
344344
smm.RData = xdns.GetInterestingRData(ans)
345345
smm.RCode = xdns.Rcode(ans)
346346
smm.RTtl = xdns.RTtl(ans)
347-
smm.Server = t.getAddr()
348-
if ech {
349-
smm.Server = dnsx.EchPrefix + smm.Server
350-
}
347+
smm.Server = t.GetAddr()
348+
smm.ECH = ech
351349
smm.PID = pid // may be local dnsx.IsLocalProxy
352350
smm.RPID = rpid // may be empty
353351
if err != nil {
@@ -376,10 +374,6 @@ func (t *dot) P50() int64 {
376374
return t.est.Get()
377375
}
378376

379-
func (t *dot) GetAddr() string {
380-
return t.getAddr()
381-
}
382-
383377
func (t *dot) GetRelay() x.Proxy {
384378
if r := t.relay; len(r) > 0 {
385379
px, _ := t.proxies.ProxyFor(r)
@@ -388,15 +382,10 @@ func (t *dot) GetRelay() x.Proxy {
388382
return nil
389383
}
390384

391-
func (t *dot) getAddr() (addr string) {
392-
if t.echconfig.Load() != nil {
393-
addr = dnsx.EchPrefix + t.addrport
394-
} else if t.skipTLSVerify {
395-
addr = dnsx.NoPkiPrefix + t.addrport
396-
} else {
397-
addr = t.addrport
398-
}
399-
return addr
385+
func (t *dot) GetAddr() string {
386+
prefix0 := dnsx.CryptoPrefix(t.skipTLSVerify, t.echconfig.Load() != nil)
387+
prefix1 := dnsx.TransportPrefix(t.id)
388+
return prefix0 + prefix1 + t.addrport
400389
}
401390

402391
func (t *dot) IPPorts() (ipps []netip.AddrPort) {

intra/dns53/upstream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ func (t *transport) getAddr() string {
349349
addr = t.addrport
350350
}
351351

352-
prefix := dnsx.PrefixFor(t.id)
352+
prefix := dnsx.TransportPrefix(t.id)
353353
if len(prefix) > 0 {
354354
addr = prefix + addr
355355
}

intra/dnsx/alg.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -902,8 +902,6 @@ func NewDNSGateway(pctx context.Context, fakeaddrs []netip.AddrPort, outer RdnsR
902902
}
903903

904904
func (t *dnsgateway) translate(tr, fix bool) {
905-
// fixed transport can only be used if translation is on
906-
fix = tr && fix
907905
prevtr := t.mod.Swap(tr)
908906
prevfix := t.fix.Swap(fix)
909907
log.I("alg: translate? prevtr(%t) > nowtr(%t); prevfix(%t) > nowfix(%t)", prevtr, tr, prevfix, fix)
@@ -918,6 +916,7 @@ func (t *dnsgateway) splitTunnel() {
918916
}
919917

920918
func (t *dnsgateway) fixedTransport() bool {
919+
// fixed transport can only be used if translation "mod" is on.
921920
return t.mod.Load() && t.split.Load() && t.fix.Load()
922921
}
923922

@@ -1485,7 +1484,7 @@ func withDNS64Summary(ans64 *dns.Msg, s *x.DNSSummary) {
14851484
s.RData = xdns.GetInterestingRData(ans64)
14861485
s.RTtl = xdns.RTtl(ans64)
14871486
if settings.Debug {
1488-
prefix := PrefixFor(AlgDNS64)
1487+
prefix := TransportPrefix(AlgDNS64)
14891488
s.Server = prefix + s.Server
14901489
}
14911490
}
@@ -1500,7 +1499,7 @@ func withAlgSummary(s *x.DNSSummary, algips ...netip.Addr) {
15001499
} else {
15011500
s.RData = ipcsv
15021501
}
1503-
prefix := PrefixFor(Alg)
1502+
prefix := TransportPrefix(Alg)
15041503
if len(s.Server) > 0 {
15051504
s.Server = prefix + s.Server
15061505
} else {
@@ -1785,7 +1784,9 @@ func (t *dnsgateway) S() string {
17851784
sb.WriteString(strconv.FormatBool(t.mod.Load()))
17861785
sb.WriteString(" / cansplit: ")
17871786
sb.WriteString(strconv.FormatBool(t.split.Load()))
1788-
sb.WriteString(" / wantsplit: ")
1787+
sb.WriteString(" / forcesplit: ")
1788+
sb.WriteString(strconv.FormatBool(t.fix.Load()))
1789+
sb.WriteString(" / usefixed: ")
17891790
sb.WriteString(strconv.FormatBool(t.fixedTransport()))
17901791
sb.WriteString(" / chash: ")
17911792
sb.WriteString(strconv.FormatBool(t.chash))
@@ -2355,7 +2356,7 @@ func withPresetSummary(smm *x.DNSSummary, reqSent, fixed bool) {
23552356
smm.Status = Complete
23562357
smm.Server = "127.5.3.9"
23572358
}
2358-
smm.Server = PrefixFor(id) + smm.Server
2359+
smm.Server = TransportPrefix(id) + smm.Server
23592360
smm.Blocklists = "" // blocklists are not honoured
23602361
smm.BlockedTarget = "" // no targets are blocked
23612362
smm.PID = "" // no relay is used

intra/dnsx/cacher.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ func (t *ctransport) P50() int64 {
517517
}
518518

519519
func (t *ctransport) GetAddr() string {
520-
prefix := PrefixFor(CT)
520+
prefix := TransportPrefix(CT)
521521
return prefix + t.Transport.GetAddr()
522522
}
523523

@@ -605,6 +605,7 @@ func fillSummary(s *x.DNSSummary, out *x.DNSSummary) {
605605
out.DO = s.DO
606606
}
607607

608+
out.ECH = s.ECH
608609
out.Cached = s.Cached
609610
out.RCode = s.RCode
610611
out.RTtl = s.RTtl

intra/dnsx/plus.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func NewPlusTransport(ctx context.Context, r TransportProviderInternal, ts ...Tr
7070
}
7171
}
7272

73-
log.I("plus: at %s; added: %d/%d", t.getAddr(), len(t.transports), len(ts))
73+
log.I("plus: at %s; added: %d/%d", t.GetAddr(), len(t.transports), len(ts))
7474
context.AfterFunc(ctx, t.stopAll)
7575
return t
7676
}
@@ -311,11 +311,7 @@ func (t *plus) P50() int64 {
311311
}
312312

313313
func (t *plus) GetAddr() string {
314-
return t.getAddr()
315-
}
316-
317-
func (t *plus) getAddr() string {
318-
return PrefixFor(t.ID()) + t.ipports[0].String()
314+
return TransportPrefix(t.ID()) + t.ipports[0].String()
319315
}
320316

321317
func (t *plus) GetRelay() x.Proxy {
@@ -361,7 +357,7 @@ func (t *plus) Add(tr x.DNSTransport) bool {
361357
defer t.mu.Unlock()
362358

363359
if oldt, ok := t.transports[tr.ID()]; ok {
364-
if oldt == newt {
360+
if core.Loc(oldt) == core.Loc(newt) {
365361
log.I("plus: add %s@%s: already present", newt.ID(), newt.GetAddr())
366362
return true
367363
}

intra/dnsx/transport.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,12 @@ const (
5858
IpMapper = x.IpMapper
5959
NoDNS = ""
6060

61-
// DNS request origin indicators
61+
// DNS request origin indicator:
62+
// OriginInternal flags requests by firestack or its owner uid.
6263
OriginInternal = x.OriginInternal
63-
OriginTunnel = x.OriginTunnel
64+
// OriginTunnel flags requests by tunnel read (presumably from another app,
65+
// or firestack or its owner uid if Loopback mode is turned on).
66+
OriginTunnel = x.OriginTunnel
6467

6568
invalidQname = "invalid.query"
6669

@@ -92,8 +95,8 @@ var (
9295
defaultprefix = "d."
9396
presetprefix = "pre."
9497
fixedprefix = "fix."
95-
EchPrefix = "ech."
96-
NoPkiPrefix = "nopki."
98+
echPrefix = "ech."
99+
noPkiPrefix = "nopki."
97100

98101
NoIPPort []netip.AddrPort = nil
99102
)
@@ -1532,7 +1535,25 @@ func trimcsv(s string) string {
15321535
return strings.Trim(s, ",")
15331536
}
15341537

1535-
func PrefixFor(id string) string {
1538+
func CryptoPrefix(nopki, ech bool) string {
1539+
if !settings.Debug {
1540+
return ""
1541+
}
1542+
1543+
if nopki {
1544+
return noPkiPrefix
1545+
}
1546+
if ech {
1547+
return echPrefix
1548+
}
1549+
return ""
1550+
}
1551+
1552+
func TransportPrefix(id string) string {
1553+
if !settings.Debug {
1554+
return ""
1555+
}
1556+
15361557
switch id {
15371558
case CT:
15381559
return cacheprefix

intra/doh/doh.go

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -866,10 +866,7 @@ func (t *transport) Query(network string, q *dns.Msg, smm *x.DNSSummary) (r *dns
866866
r, ech, elapsed, qerr = t.doOdoh(pid, q)
867867
}
868868

869-
smm.Server = t.getAddr()
870-
if ech {
871-
smm.Server = dnsx.EchPrefix + smm.Server
872-
}
869+
smm.Server = t.GetAddr()
873870

874871
status := dnsx.Complete
875872

@@ -884,6 +881,7 @@ func (t *transport) Query(network string, q *dns.Msg, smm *x.DNSSummary) (r *dns
884881
smm.RData = xdns.GetInterestingRData(r)
885882
smm.RCode = xdns.Rcode(r)
886883
smm.RTtl = xdns.RTtl(r)
884+
smm.ECH = ech
887885
smm.Status = status
888886
smm.Region = region
889887
// TODO: smm.BlockedTarget
@@ -899,8 +897,8 @@ func (t *transport) Query(network string, q *dns.Msg, smm *x.DNSSummary) (r *dns
899897
smm.Msg = err.Error()
900898
}
901899
if settings.Debug {
902-
log.V("doh: (p/px/via/can? %s/%s/%s/%t); a:%d/sz:%d/pad:%d, q: %s:%d, data: %s, code: %d, px: %s, dur: %s, err? %v",
903-
network, pid, rpid, canproxy, xdns.Len(r), xdns.Size(r), xdns.EDNS0PadLen(r), smm.QName, smm.QType, smm.RData, smm.RCode, smm.PID, core.FmtPeriod(elapsed), err)
900+
log.V("doh: (p/px/via %s/%s/%s, can? %t / ech? %t); a:%d/sz:%d/pad:%d, q: %s:%d, data: %s, code: %d, px: %s, dur: %s, err? %v",
901+
network, pid, rpid, canproxy, ech, xdns.Len(r), xdns.Size(r), xdns.EDNS0PadLen(r), smm.QName, smm.QType, smm.RData, smm.RCode, smm.PID, core.FmtPeriod(elapsed), err)
904902
}
905903
return r, err
906904
}
@@ -910,24 +908,15 @@ func (t *transport) P50() int64 {
910908
}
911909

912910
func (t *transport) GetAddr() string {
913-
return t.getAddr()
914-
}
915-
916-
func (t *transport) getAddr() string {
917911
addr := t.hostname
918912
if t.typ == dnsx.ODOH {
919913
addr = t.odohtargetname
920914
}
921915

922-
if t.skipTLSVerify {
923-
addr = dnsx.NoPkiPrefix + addr
924-
}
916+
prefix0 := dnsx.CryptoPrefix(t.skipTLSVerify, t.echconfig.Load() != nil)
925917
// doh transports could be "dnsx.Bootstrap"
926-
prefix := dnsx.PrefixFor(t.id)
927-
if len(prefix) > 0 {
928-
addr = prefix + addr
929-
}
930-
return addr
918+
prefix1 := dnsx.TransportPrefix(t.id)
919+
return prefix0 + prefix1 + addr
931920
}
932921

933922
func (t *transport) GetRelay() x.Proxy {

0 commit comments

Comments
 (0)