Merge: - rewrites: return NOERROR without A records instead of NXDOMAIN
Close #1918 * commit 'ad4e85d8f50e1e905329f687c2748d28449d39c4': add test - rewrites: return NOERROR without A records instead of NXDOMAIN
This commit is contained in:
commit
4a8dcbeeed
|
@ -670,6 +670,11 @@ func TestRewrite(t *testing.T) {
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
assert.Equal(t, "1.2.3.4", a.A.String())
|
assert.Equal(t, "1.2.3.4", a.A.String())
|
||||||
|
|
||||||
|
req = createTestMessageWithType("test.com.", dns.TypeAAAA)
|
||||||
|
reply, err = dns.Exchange(req, addr.String())
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Equal(t, 0, len(reply.Answer))
|
||||||
|
|
||||||
req = createTestMessageWithType("alias.test.com.", dns.TypeA)
|
req = createTestMessageWithType("alias.test.com.", dns.TypeA)
|
||||||
reply, err = dns.Exchange(req, addr.String())
|
reply, err = dns.Exchange(req, addr.String())
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
|
@ -54,8 +54,12 @@ func (s *Server) filterDNSRequest(ctx *dnsContext) (*dnsfilter.Result, error) {
|
||||||
// log.Tracef("Host %s is filtered, reason - '%s', matched rule: '%s'", host, res.Reason, res.Rule)
|
// log.Tracef("Host %s is filtered, reason - '%s', matched rule: '%s'", host, res.Reason, res.Rule)
|
||||||
d.Res = s.genDNSFilterMessage(d, &res)
|
d.Res = s.genDNSFilterMessage(d, &res)
|
||||||
|
|
||||||
} else if (res.Reason == dnsfilter.ReasonRewrite || res.Reason == dnsfilter.RewriteEtcHosts) &&
|
} else if res.Reason == dnsfilter.ReasonRewrite && len(res.CanonName) != 0 && len(res.IPList) == 0 {
|
||||||
len(res.IPList) != 0 {
|
ctx.origQuestion = d.Req.Question[0]
|
||||||
|
// resolve canonical name, not the original host name
|
||||||
|
d.Req.Question[0].Name = dns.Fqdn(res.CanonName)
|
||||||
|
|
||||||
|
} else if res.Reason == dnsfilter.ReasonRewrite || res.Reason == dnsfilter.RewriteEtcHosts {
|
||||||
resp := s.makeResponse(req)
|
resp := s.makeResponse(req)
|
||||||
|
|
||||||
name := host
|
name := host
|
||||||
|
@ -78,11 +82,6 @@ func (s *Server) filterDNSRequest(ctx *dnsContext) (*dnsfilter.Result, error) {
|
||||||
|
|
||||||
d.Res = resp
|
d.Res = resp
|
||||||
|
|
||||||
} else if res.Reason == dnsfilter.ReasonRewrite && len(res.CanonName) != 0 {
|
|
||||||
ctx.origQuestion = d.Req.Question[0]
|
|
||||||
// resolve canonical name, not the original host name
|
|
||||||
d.Req.Question[0].Name = dns.Fqdn(res.CanonName)
|
|
||||||
|
|
||||||
} else if res.Reason == dnsfilter.RewriteEtcHosts && len(res.ReverseHost) != 0 {
|
} else if res.Reason == dnsfilter.RewriteEtcHosts && len(res.ReverseHost) != 0 {
|
||||||
|
|
||||||
resp := s.makeResponse(req)
|
resp := s.makeResponse(req)
|
||||||
|
|
Loading…
Reference in New Issue