|
|
|
@ -41,6 +41,7 @@ func TestDNSConfigForNetmap(t *testing.T) {
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
nm *netmap.NetworkMap
|
|
|
|
|
os string // version.OS value; empty means linux
|
|
|
|
|
prefs *ipn.Prefs
|
|
|
|
|
want *dns.Config
|
|
|
|
|
wantLog string
|
|
|
|
@ -108,13 +109,196 @@ func TestDNSConfigForNetmap(t *testing.T) {
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
// TODO(bradfitz): add tests with prefs.CorpDNS set
|
|
|
|
|
// TODO(bradfitz): pass version.OS to func and add Android/etc tests
|
|
|
|
|
{
|
|
|
|
|
name: "corp_dns_misc",
|
|
|
|
|
nm: &netmap.NetworkMap{
|
|
|
|
|
Name: "host.some.domain.net.",
|
|
|
|
|
DNS: tailcfg.DNSConfig{
|
|
|
|
|
Proxied: true,
|
|
|
|
|
Domains: []string{"foo.com", "bar.com"},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
prefs: &ipn.Prefs{
|
|
|
|
|
CorpDNS: true,
|
|
|
|
|
},
|
|
|
|
|
want: &dns.Config{
|
|
|
|
|
Hosts: map[dnsname.FQDN][]netaddr.IP{},
|
|
|
|
|
Routes: map[dnsname.FQDN][]dnstype.Resolver{
|
|
|
|
|
"0.e.1.a.c.5.1.1.a.7.d.f.ip6.arpa.": nil,
|
|
|
|
|
"100.100.in-addr.arpa.": nil,
|
|
|
|
|
"101.100.in-addr.arpa.": nil,
|
|
|
|
|
"102.100.in-addr.arpa.": nil,
|
|
|
|
|
"103.100.in-addr.arpa.": nil,
|
|
|
|
|
"104.100.in-addr.arpa.": nil,
|
|
|
|
|
"105.100.in-addr.arpa.": nil,
|
|
|
|
|
"106.100.in-addr.arpa.": nil,
|
|
|
|
|
"107.100.in-addr.arpa.": nil,
|
|
|
|
|
"108.100.in-addr.arpa.": nil,
|
|
|
|
|
"109.100.in-addr.arpa.": nil,
|
|
|
|
|
"110.100.in-addr.arpa.": nil,
|
|
|
|
|
"111.100.in-addr.arpa.": nil,
|
|
|
|
|
"112.100.in-addr.arpa.": nil,
|
|
|
|
|
"113.100.in-addr.arpa.": nil,
|
|
|
|
|
"114.100.in-addr.arpa.": nil,
|
|
|
|
|
"115.100.in-addr.arpa.": nil,
|
|
|
|
|
"116.100.in-addr.arpa.": nil,
|
|
|
|
|
"117.100.in-addr.arpa.": nil,
|
|
|
|
|
"118.100.in-addr.arpa.": nil,
|
|
|
|
|
"119.100.in-addr.arpa.": nil,
|
|
|
|
|
"120.100.in-addr.arpa.": nil,
|
|
|
|
|
"121.100.in-addr.arpa.": nil,
|
|
|
|
|
"122.100.in-addr.arpa.": nil,
|
|
|
|
|
"123.100.in-addr.arpa.": nil,
|
|
|
|
|
"124.100.in-addr.arpa.": nil,
|
|
|
|
|
"125.100.in-addr.arpa.": nil,
|
|
|
|
|
"126.100.in-addr.arpa.": nil,
|
|
|
|
|
"127.100.in-addr.arpa.": nil,
|
|
|
|
|
"64.100.in-addr.arpa.": nil,
|
|
|
|
|
"65.100.in-addr.arpa.": nil,
|
|
|
|
|
"66.100.in-addr.arpa.": nil,
|
|
|
|
|
"67.100.in-addr.arpa.": nil,
|
|
|
|
|
"68.100.in-addr.arpa.": nil,
|
|
|
|
|
"69.100.in-addr.arpa.": nil,
|
|
|
|
|
"70.100.in-addr.arpa.": nil,
|
|
|
|
|
"71.100.in-addr.arpa.": nil,
|
|
|
|
|
"72.100.in-addr.arpa.": nil,
|
|
|
|
|
"73.100.in-addr.arpa.": nil,
|
|
|
|
|
"74.100.in-addr.arpa.": nil,
|
|
|
|
|
"75.100.in-addr.arpa.": nil,
|
|
|
|
|
"76.100.in-addr.arpa.": nil,
|
|
|
|
|
"77.100.in-addr.arpa.": nil,
|
|
|
|
|
"78.100.in-addr.arpa.": nil,
|
|
|
|
|
"79.100.in-addr.arpa.": nil,
|
|
|
|
|
"80.100.in-addr.arpa.": nil,
|
|
|
|
|
"81.100.in-addr.arpa.": nil,
|
|
|
|
|
"82.100.in-addr.arpa.": nil,
|
|
|
|
|
"83.100.in-addr.arpa.": nil,
|
|
|
|
|
"84.100.in-addr.arpa.": nil,
|
|
|
|
|
"85.100.in-addr.arpa.": nil,
|
|
|
|
|
"86.100.in-addr.arpa.": nil,
|
|
|
|
|
"87.100.in-addr.arpa.": nil,
|
|
|
|
|
"88.100.in-addr.arpa.": nil,
|
|
|
|
|
"89.100.in-addr.arpa.": nil,
|
|
|
|
|
"90.100.in-addr.arpa.": nil,
|
|
|
|
|
"91.100.in-addr.arpa.": nil,
|
|
|
|
|
"92.100.in-addr.arpa.": nil,
|
|
|
|
|
"93.100.in-addr.arpa.": nil,
|
|
|
|
|
"94.100.in-addr.arpa.": nil,
|
|
|
|
|
"95.100.in-addr.arpa.": nil,
|
|
|
|
|
"96.100.in-addr.arpa.": nil,
|
|
|
|
|
"97.100.in-addr.arpa.": nil,
|
|
|
|
|
"98.100.in-addr.arpa.": nil,
|
|
|
|
|
"99.100.in-addr.arpa.": nil,
|
|
|
|
|
"some.domain.net.": nil,
|
|
|
|
|
},
|
|
|
|
|
SearchDomains: []dnsname.FQDN{
|
|
|
|
|
"foo.com.",
|
|
|
|
|
"bar.com.",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "android_does_need_fallbacks",
|
|
|
|
|
os: "android",
|
|
|
|
|
nm: &netmap.NetworkMap{
|
|
|
|
|
DNS: tailcfg.DNSConfig{
|
|
|
|
|
FallbackResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.4.4"},
|
|
|
|
|
},
|
|
|
|
|
Routes: map[string][]dnstype.Resolver{
|
|
|
|
|
"foo.com.": {{Addr: "1.2.3.4"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
prefs: &ipn.Prefs{
|
|
|
|
|
CorpDNS: true,
|
|
|
|
|
},
|
|
|
|
|
want: &dns.Config{
|
|
|
|
|
Hosts: map[dnsname.FQDN][]netaddr.IP{},
|
|
|
|
|
DefaultResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.4.4:53"},
|
|
|
|
|
},
|
|
|
|
|
Routes: map[dnsname.FQDN][]dnstype.Resolver{
|
|
|
|
|
"foo.com.": {{Addr: "1.2.3.4:53"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "android_does_NOT_need_fallbacks",
|
|
|
|
|
os: "android",
|
|
|
|
|
nm: &netmap.NetworkMap{
|
|
|
|
|
DNS: tailcfg.DNSConfig{
|
|
|
|
|
Resolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.8.8"},
|
|
|
|
|
},
|
|
|
|
|
FallbackResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.4.4"},
|
|
|
|
|
},
|
|
|
|
|
Routes: map[string][]dnstype.Resolver{
|
|
|
|
|
"foo.com.": {{Addr: "1.2.3.4"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
prefs: &ipn.Prefs{
|
|
|
|
|
CorpDNS: true,
|
|
|
|
|
},
|
|
|
|
|
want: &dns.Config{
|
|
|
|
|
Hosts: map[dnsname.FQDN][]netaddr.IP{},
|
|
|
|
|
DefaultResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.8.8:53"},
|
|
|
|
|
},
|
|
|
|
|
Routes: map[dnsname.FQDN][]dnstype.Resolver{
|
|
|
|
|
"foo.com.": {{Addr: "1.2.3.4:53"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "exit_nodes_need_fallbacks",
|
|
|
|
|
nm: &netmap.NetworkMap{
|
|
|
|
|
DNS: tailcfg.DNSConfig{
|
|
|
|
|
FallbackResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.4.4"},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
prefs: &ipn.Prefs{
|
|
|
|
|
CorpDNS: true,
|
|
|
|
|
ExitNodeID: "some-id",
|
|
|
|
|
},
|
|
|
|
|
want: &dns.Config{
|
|
|
|
|
Hosts: map[dnsname.FQDN][]netaddr.IP{},
|
|
|
|
|
Routes: map[dnsname.FQDN][]dnstype.Resolver{},
|
|
|
|
|
DefaultResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.4.4:53"},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "not_exit_node_NOT_need_fallbacks",
|
|
|
|
|
nm: &netmap.NetworkMap{
|
|
|
|
|
DNS: tailcfg.DNSConfig{
|
|
|
|
|
FallbackResolvers: []dnstype.Resolver{
|
|
|
|
|
{Addr: "8.8.4.4"},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
prefs: &ipn.Prefs{
|
|
|
|
|
CorpDNS: true,
|
|
|
|
|
},
|
|
|
|
|
want: &dns.Config{
|
|
|
|
|
Hosts: map[dnsname.FQDN][]netaddr.IP{},
|
|
|
|
|
Routes: map[dnsname.FQDN][]dnstype.Resolver{},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
verOS := tt.os
|
|
|
|
|
if verOS == "" {
|
|
|
|
|
verOS = "linux"
|
|
|
|
|
}
|
|
|
|
|
var log tstest.MemLogger
|
|
|
|
|
got := dnsConfigForNetmap(tt.nm, tt.prefs, log.Logf)
|
|
|
|
|
got := dnsConfigForNetmap(tt.nm, tt.prefs, log.Logf, verOS)
|
|
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
|
|
gotj, _ := json.MarshalIndent(got, "", "\t")
|
|
|
|
|
wantj, _ := json.MarshalIndent(tt.want, "", "\t")
|
|
|
|
|