some DNS clients send reverse lookups with uppercase suffixes. This lowercases the request before trimming the lowercase suffix. Problem discovered and discussed here: https://github.com/weaveworks/weave/issues/2817

This commit is contained in:
Topper Bowers committed 2017-02-27 14:19:31 +01:00
1 parent 7a3e8e64b7
commit 83958561f7
2 files changed
+7 -1

No files matched your search

+1 -1
View File
@@ -222,7 +222,7 @@ func (h *handler) handleReverse(w dns.ResponseWriter, req *dns.Msg) {
return
}
ipStr := strings.TrimSuffix(req.Question[0].Name, "."+reverseDNSdomain)
ipStr := strings.TrimSuffix(strings.ToLower(req.Question[0].Name), "."+reverseDNSdomain)
ip, err := address.ParseIP(ipStr)
if err != nil {
h.nameError(w, req)
+6
View File
@@ -6,6 +6,9 @@ C1=10.2.0.78
C2=10.2.0.79
C3=10.2.0.80
REVERSE_C1_LOWER=78.0.2.10.in-addr.arpa
REVERSE_C1_UPPER=78.0.2.10.IN-ADDR.ARPA
start_suite "DNS lookup case (in)sensitivity"
weave_on $HOST1 launch
@@ -17,6 +20,9 @@ assert_dns_record $HOST1 test seeone.weave.local $C1
assert_dns_record $HOST1 test SeeOne.weave.local $C1
assert_dns_record $HOST1 test SEEONE.weave.local $C1
assert_dns_record $HOST1 test $REVERSE_C1_LOWER seeone.weave.local
assert_dns_record $HOST1 test $REVERSE_C1_UPPER seeone.weave.local
start_container $HOST1 $C2/24 --name=SeEtWo
assert_dns_record $HOST1 test seetwo.weave.local $C2
assert_dns_record $HOST1 test SeeTwo.weave.local $C2