Merge pull request #1277 from weaveworks/1275-negative-dns
Return NXDOMAIN when we don't have entries and drop the non-authoritative special case for recursive dns. Fixes #1275.
This commit is contained in:
commit
755a949f6d
3 files changed
+17
-21
No files matched your search
+5
-5
@@ -134,6 +134,10 @@ func (d *DNSServer) handleLocal(defaultMaxResponseSize int) func(dns.ResponseWri
|
||||
}
|
||||
|
||||
addrs := d.ns.Lookup(hostname)
|
||||
if len(addrs) == 0 {
|
||||
d.errorResponse(req, dns.RcodeNameError, w)
|
||||
return
|
||||
}
|
||||
|
||||
response := dns.Msg{}
|
||||
response.RecursionAvailable = true
|
||||
@@ -233,12 +237,8 @@ func (d *DNSServer) handleRecursive(client *dns.Client, defaultMaxResponseSize i
|
||||
d.ns.debugf("error trying %s: %v", server, err)
|
||||
continue
|
||||
}
|
||||
if response.Rcode != dns.RcodeSuccess && !response.Authoritative {
|
||||
d.ns.debugf("non-authoritative error trying %s: %v", server, response.Rcode)
|
||||
continue
|
||||
}
|
||||
d.ns.debugf("response: %+v", response)
|
||||
response.SetReply(req)
|
||||
response.Id = req.Id
|
||||
if err := w.WriteMsg(response); err != nil {
|
||||
d.ns.infof("error responding: %v", err)
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#! /bin/bash
|
||||
|
||||
. ./config.sh
|
||||
|
||||
C1=10.2.0.78
|
||||
|
||||
start_suite "Cross host dns-lookup"
|
||||
|
||||
weave_on $HOST1 launch
|
||||
weave_on $HOST2 launch $HOST1
|
||||
|
||||
start_container $HOST1 $C1/24 --name c1
|
||||
|
||||
assert "weave_on $HOST2 dns-lookup c1" $C1
|
||||
|
||||
end_suite
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#! /bin/bash
|
||||
|
||||
. ./config.sh
|
||||
|
||||
start_suite "Negative DNS queries"
|
||||
|
||||
weave_on $HOST1 launch
|
||||
start_container_with_dns $HOST1 --name c1
|
||||
assert_raises "exec_on $HOST1 c1 dig A foo.weave.local | grep 'status: NXDOMAIN'"
|
||||
assert_raises "exec_on $HOST1 c1 dig A foo.invalid | grep 'status: NXDOMAIN'"
|
||||
|
||||
end_suite
|
||||
Reference in new issue
Block a user