diff --git a/plugin/k8s_external/apex.go b/plugin/k8s_external/apex.go index 0ce00a7c3..935876cf8 100644 --- a/plugin/k8s_external/apex.go +++ b/plugin/k8s_external/apex.go @@ -11,6 +11,7 @@ import ( func (e *External) serveApex(state request.Request) (int, error) { m := new(dns.Msg) m.SetReply(state.Req) + m.Authoritative = true switch state.QType() { case dns.TypeSOA: m.Answer = []dns.RR{e.soa(state)} @@ -37,6 +38,7 @@ func (e *External) serveSubApex(state request.Request) (int, error) { m := new(dns.Msg) m.SetReply(state.Req) + m.Authoritative = true // base is either dns. of ns1.dns (or another name), if it's longer return nxdomain switch labels := dns.CountLabel(base); labels { diff --git a/plugin/k8s_external/apex_test.go b/plugin/k8s_external/apex_test.go index 45b835e3a..57513e3f8 100644 --- a/plugin/k8s_external/apex_test.go +++ b/plugin/k8s_external/apex_test.go @@ -41,6 +41,9 @@ func TestApex(t *testing.T) { if resp == nil { t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name) } + if !resp.Authoritative { + t.Error("Expected authoritative answer") + } if err := test.SortAndCheck(resp, tc); err != nil { t.Error(err) } diff --git a/plugin/k8s_external/external.go b/plugin/k8s_external/external.go index ee1bdca15..1096c2ea7 100644 --- a/plugin/k8s_external/external.go +++ b/plugin/k8s_external/external.go @@ -89,6 +89,7 @@ func (e *External) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Ms m := new(dns.Msg) m.SetReply(state.Req) + m.Authoritative = true if len(svc) == 0 { m.Rcode = rcode diff --git a/plugin/k8s_external/external_test.go b/plugin/k8s_external/external_test.go index cf8e0e61c..558c894f6 100644 --- a/plugin/k8s_external/external_test.go +++ b/plugin/k8s_external/external_test.go @@ -45,6 +45,9 @@ func TestExternal(t *testing.T) { if resp == nil { t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name) } + if !resp.Authoritative { + t.Error("Expected authoritative answer") + } if err = test.SortAndCheck(resp, tc); err != nil { t.Error(err) }