Skip to content

Commit 6c21cc6

Browse files
committed
chore: use coder DNS service address
1 parent 02286e5 commit 6c21cc6

File tree

5 files changed

+69
-45
lines changed

5 files changed

+69
-45
lines changed

net/dns/config.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,7 @@ type Config struct {
4747
}
4848

4949
func (c *Config) serviceIP() netip.Addr {
50-
if c.OnlyIPv6 {
51-
return tsaddr.TailscaleServiceIPv6()
52-
}
53-
return tsaddr.TailscaleServiceIP()
50+
return tsaddr.CoderServiceIPv6()
5451
}
5552

5653
// WriteToBufioWriter write a debug version of c for logs to w, omitting

net/dns/manager_test.go

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func TestManager(t *testing.T) {
211211
"bar.tld.", "2.3.4.5"),
212212
},
213213
os: OSConfig{
214-
Nameservers: mustIPs("100.100.100.100"),
214+
Nameservers: mustIPs("fd60:627a:a42b::53"),
215215
},
216216
rs: resolver.Config{
217217
Hosts: hosts(
@@ -297,7 +297,7 @@ func TestManager(t *testing.T) {
297297
"bradfitz.ts.com.", "2.3.4.5"),
298298
},
299299
os: OSConfig{
300-
Nameservers: mustIPs("100.100.100.100"),
300+
Nameservers: mustIPs("fd60:627a:a42b::53"),
301301
SearchDomains: fqdns("tailscale.com", "universe.tf"),
302302
},
303303
rs: resolver.Config{
@@ -320,7 +320,7 @@ func TestManager(t *testing.T) {
320320
},
321321
split: true,
322322
os: OSConfig{
323-
Nameservers: mustIPs("100.100.100.100"),
323+
Nameservers: mustIPs("fd60:627a:a42b::53"),
324324
SearchDomains: fqdns("tailscale.com", "universe.tf"),
325325
},
326326
rs: resolver.Config{
@@ -339,7 +339,7 @@ func TestManager(t *testing.T) {
339339
SearchDomains: fqdns("tailscale.com", "universe.tf"),
340340
},
341341
os: OSConfig{
342-
Nameservers: mustIPs("100.100.100.100"),
342+
Nameservers: mustIPs("fd60:627a:a42b::53"),
343343
SearchDomains: fqdns("tailscale.com", "universe.tf"),
344344
},
345345
rs: resolver.Config{
@@ -357,7 +357,7 @@ func TestManager(t *testing.T) {
357357
},
358358
split: true,
359359
os: OSConfig{
360-
Nameservers: mustIPs("100.100.100.100"),
360+
Nameservers: mustIPs("fd60:627a:a42b::53"),
361361
SearchDomains: fqdns("tailscale.com", "universe.tf"),
362362
},
363363
rs: resolver.Config{
@@ -377,7 +377,7 @@ func TestManager(t *testing.T) {
377377
SearchDomains: fqdns("coffee.shop"),
378378
},
379379
os: OSConfig{
380-
Nameservers: mustIPs("100.100.100.100"),
380+
Nameservers: mustIPs("fd60:627a:a42b::53"),
381381
SearchDomains: fqdns("tailscale.com", "universe.tf", "coffee.shop"),
382382
},
383383
rs: resolver.Config{
@@ -412,7 +412,7 @@ func TestManager(t *testing.T) {
412412
SearchDomains: fqdns("coffee.shop"),
413413
},
414414
os: OSConfig{
415-
Nameservers: mustIPs("100.100.100.100"),
415+
Nameservers: mustIPs("fd60:627a:a42b::53"),
416416
SearchDomains: fqdns("tailscale.com", "universe.tf", "coffee.shop"),
417417
},
418418
rs: resolver.Config{
@@ -432,7 +432,7 @@ func TestManager(t *testing.T) {
432432
},
433433
split: true,
434434
os: OSConfig{
435-
Nameservers: mustIPs("100.100.100.100"),
435+
Nameservers: mustIPs("fd60:627a:a42b::53"),
436436
SearchDomains: fqdns("tailscale.com", "universe.tf"),
437437
MatchDomains: fqdns("bigco.net", "corp.com"),
438438
},
@@ -456,7 +456,7 @@ func TestManager(t *testing.T) {
456456
SearchDomains: fqdns("coffee.shop"),
457457
},
458458
os: OSConfig{
459-
Nameservers: mustIPs("100.100.100.100"),
459+
Nameservers: mustIPs("fd60:627a:a42b::53"),
460460
SearchDomains: fqdns("tailscale.com", "universe.tf", "coffee.shop"),
461461
},
462462
rs: resolver.Config{
@@ -478,7 +478,7 @@ func TestManager(t *testing.T) {
478478
},
479479
split: true,
480480
os: OSConfig{
481-
Nameservers: mustIPs("100.100.100.100"),
481+
Nameservers: mustIPs("fd60:627a:a42b::53"),
482482
SearchDomains: fqdns("tailscale.com", "universe.tf"),
483483
MatchDomains: fqdns("ts.com"),
484484
},
@@ -503,7 +503,7 @@ func TestManager(t *testing.T) {
503503
SearchDomains: fqdns("coffee.shop"),
504504
},
505505
os: OSConfig{
506-
Nameservers: mustIPs("100.100.100.100"),
506+
Nameservers: mustIPs("fd60:627a:a42b::53"),
507507
SearchDomains: fqdns("tailscale.com", "universe.tf", "coffee.shop"),
508508
},
509509
rs: resolver.Config{
@@ -529,7 +529,7 @@ func TestManager(t *testing.T) {
529529
},
530530
split: true,
531531
os: OSConfig{
532-
Nameservers: mustIPs("100.100.100.100"),
532+
Nameservers: mustIPs("fd60:627a:a42b::53"),
533533
SearchDomains: fqdns("tailscale.com", "universe.tf"),
534534
MatchDomains: fqdns("corp.com", "ts.com"),
535535
},
@@ -551,7 +551,7 @@ func TestManager(t *testing.T) {
551551
SearchDomains: fqdns("tailscale.com", "universe.tf"),
552552
},
553553
os: OSConfig{
554-
Nameservers: mustIPs("100.100.100.100"),
554+
Nameservers: mustIPs("fd60:627a:a42b::53"),
555555
SearchDomains: fqdns("tailscale.com", "universe.tf"),
556556
},
557557
rs: resolver.Config{
@@ -579,7 +579,7 @@ func TestManager(t *testing.T) {
579579
DefaultResolvers: mustRes("2a07:a8c0::c3:a884"),
580580
},
581581
os: OSConfig{
582-
Nameservers: mustIPs("100.100.100.100"),
582+
Nameservers: mustIPs("fd60:627a:a42b::53"),
583583
},
584584
rs: resolver.Config{
585585
Routes: upstreams(".", "2a07:a8c0::c3:a884"),
@@ -591,12 +591,36 @@ func TestManager(t *testing.T) {
591591
DefaultResolvers: mustRes("https://dns.nextdns.io/c3a884"),
592592
},
593593
os: OSConfig{
594-
Nameservers: mustIPs("100.100.100.100"),
594+
Nameservers: mustIPs("fd60:627a:a42b::53"),
595595
},
596596
rs: resolver.Config{
597597
Routes: upstreams(".", "https://dns.nextdns.io/c3a884"),
598598
},
599599
},
600+
{
601+
name: "coder",
602+
in: Config{
603+
OnlyIPv6: true,
604+
Routes: map[dnsname.FQDN][]*dnstype.Resolver{
605+
"coder.": mustRes("fd60:627a:a42b::53"),
606+
},
607+
Hosts: hosts(
608+
"agent.myws.me.coder.", "fd60:627a:a42c::53",
609+
),
610+
},
611+
os: OSConfig{
612+
Nameservers: mustIPs("fd60:627a:a42b::53"),
613+
},
614+
rs: resolver.Config{
615+
Routes: upstreams(
616+
".", "",
617+
"coder.", "fd60:627a:a42b::53",
618+
),
619+
Hosts: hosts(
620+
"agent.myws.me.coder.", "fd60:627a:a42c::53",
621+
),
622+
},
623+
},
600624
}
601625

602626
trIP := cmp.Transformer("ipStr", func(ip netip.Addr) string { return ip.String() })

net/tsaddr/tsaddr.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ func CGNATRange() netip.Prefix {
3535
}
3636

3737
var (
38-
cgnatRange oncePrefix
39-
ulaRange oncePrefix
40-
tsUlaRange oncePrefix
41-
tsViaRange oncePrefix
42-
ula4To6Range oncePrefix
43-
ulaEph6Range oncePrefix
44-
serviceIPv6 oncePrefix
38+
cgnatRange oncePrefix
39+
ulaRange oncePrefix
40+
tsUlaRange oncePrefix
41+
tsViaRange oncePrefix
42+
ula4To6Range oncePrefix
43+
ulaEph6Range oncePrefix
44+
serviceIPv6 oncePrefix
45+
coderServiceIPv6 oncePrefix
4546
)
4647

4748
// TailscaleServiceIP returns the IPv4 listen address of services
@@ -61,9 +62,15 @@ func TailscaleServiceIPv6() netip.Addr {
6162
return serviceIPv6.v.Addr()
6263
}
6364

65+
func CoderServiceIPv6() netip.Addr {
66+
coderServiceIPv6.Do(func() { mustPrefix(&coderServiceIPv6.v, CoderServiceIPv6String+"/128") })
67+
return coderServiceIPv6.v.Addr()
68+
}
69+
6470
const (
6571
TailscaleServiceIPString = "100.100.100.100"
6672
TailscaleServiceIPv6String = "fd7a:115c:a1e0::53"
73+
CoderServiceIPv6String = "fd60:627a:a42b::53"
6774
)
6875

6976
// IsTailscaleIP reports whether ip is an IP address in a range that

net/tsaddr/tsaddr_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ func TestTailscaleServiceIPv6(t *testing.T) {
5353
}
5454
}
5555

56+
func TestCoderServiceIPv6(t *testing.T) {
57+
got := CoderServiceIPv6().String()
58+
want := "fd60:627a:a42b::53"
59+
if got != want {
60+
t.Errorf("got %q; want %q", got, want)
61+
}
62+
}
63+
5664
func TestChromeOSVMRange(t *testing.T) {
5765
if got, want := ChromeOSVMRange().String(), "100.115.92.0/23"; got != want {
5866
t.Errorf("got %q; want %q", got, want)

wgengine/netstack/netstack.go

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ const debugPackets = false
5656

5757
var debugNetstack = envknob.RegisterBool("TS_DEBUG_NETSTACK")
5858

59-
var (
60-
magicDNSIP = tsaddr.TailscaleServiceIP()
61-
magicDNSIPv6 = tsaddr.TailscaleServiceIPv6()
62-
)
59+
var coderDNSIPv6 = tsaddr.CoderServiceIPv6()
6360

6461
func init() {
6562
mode := envknob.String("TS_DEBUG_NETSTACK_LEAK_MODE")
@@ -464,7 +461,7 @@ func (ns *Impl) handleLocalPackets(p *packet.Parsed, t *tstun.Wrapper) filter.Re
464461

465462
// If it's not traffic to the service IP (i.e. magicDNS) we don't
466463
// care; resume processing.
467-
if dst := p.Dst.Addr(); dst != magicDNSIP && dst != magicDNSIPv6 {
464+
if dst := p.Dst.Addr(); dst != coderDNSIPv6 {
468465
return filter.Accept
469466
}
470467
// Of traffic to the service IP, we only care about UDP 53, and TCP
@@ -565,18 +562,9 @@ func (ns *Impl) inject() {
565562
// TODO(tom): Figure out if its safe to modify packet.Parsed to fill in
566563
// the IP src/dest even if its missing the rest of the pkt.
567564
// That way we dont have to do this twitchy-af byte-yeeting.
568-
if b := pkt.NetworkHeader().Slice(); len(b) >= 20 { // min ipv4 header
569-
switch b[0] >> 4 { // ip proto field
570-
case 4:
571-
if srcIP := netaddr.IPv4(b[12], b[13], b[14], b[15]); magicDNSIP == srcIP {
572-
sendToHost = true
573-
}
574-
case 6:
575-
if len(b) >= 40 { // min ipv6 header
576-
if srcIP, ok := netip.AddrFromSlice(net.IP(b[8:24])); ok && magicDNSIPv6 == srcIP {
577-
sendToHost = true
578-
}
579-
}
565+
if b := pkt.NetworkHeader().Slice(); len(b) >= 40 && (b[0]>>4) == 6 { // min ipv6 header && ip proto field
566+
if srcIP, ok := netip.AddrFromSlice(net.IP(b[8:24])); ok && coderDNSIPv6 == srcIP {
567+
sendToHost = true
580568
}
581569
}
582570

@@ -939,7 +927,7 @@ func (ns *Impl) acceptTCP(r *tcp.ForwarderRequest) {
939927
}
940928

941929
// DNS
942-
if reqDetails.LocalPort == 53 && (dialIP == magicDNSIP || dialIP == magicDNSIPv6) {
930+
if reqDetails.LocalPort == 53 && dialIP == coderDNSIPv6 {
943931
c := getConnOrReset()
944932
if c == nil {
945933
return
@@ -1094,7 +1082,7 @@ func (ns *Impl) acceptUDP(r *udp.ForwarderRequest) {
10941082
}
10951083

10961084
// Handle magicDNS traffic (via UDP) here.
1097-
if dst := dstAddr.Addr(); dst == magicDNSIP || dst == magicDNSIPv6 {
1085+
if dst := dstAddr.Addr(); dst == coderDNSIPv6 {
10981086
if dstAddr.Port() != 53 {
10991087
ep.Close()
11001088
return // Only MagicDNS traffic runs on the service IPs for now.

0 commit comments

Comments
 (0)