mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-03-03 18:04:40 +01:00
More heuristics to detect lying resolvers
This commit is contained in:
parent
b74b46c6cd
commit
f332394c4b
1 changed files with 19 additions and 4 deletions
|
@ -621,11 +621,26 @@ func fetchDNSCryptServerInfo(proxy *Proxy, name string, stamp stamps.ServerStamp
|
|||
false,
|
||||
)
|
||||
if err == nil {
|
||||
if msg.Rcode != dns.RcodeNameError && msg.Id == 0xcafe {
|
||||
dlog.Warnf("[%s] may be a lying resolver -- skipping", name)
|
||||
return ServerInfo{}, fmt.Errorf("[%s] unexpected catchall response", name)
|
||||
if msg.Id != 0xcafe {
|
||||
dlog.Infof("[%s] handling of DNS message identifiers is broken", name)
|
||||
}
|
||||
for _, rr := range msg.Answer {
|
||||
if rr.Header().Rrtype == dns.TypeA || rr.Header().Rrtype == dns.TypeAAAA {
|
||||
dlog.Warnf("[%s] may be a lying resolver -- skipping", name)
|
||||
return ServerInfo{}, fmt.Errorf("[%s] unexpected record: [%s]", name, rr.String())
|
||||
}
|
||||
}
|
||||
for _, rr := range msg.Extra {
|
||||
if rr.Header().Rrtype == dns.TypeTXT {
|
||||
dlog.Warnf("[%s] may be a dummy resolver -- skipping", name)
|
||||
txts := rr.(*dns.TXT).Txt
|
||||
cause := ""
|
||||
if len(txts) > 0 {
|
||||
cause = txts[0]
|
||||
}
|
||||
return ServerInfo{}, fmt.Errorf("[%s] unexpected record: [%s]", name, cause)
|
||||
}
|
||||
}
|
||||
dlog.Debugf("[%s] seems to be also accessible over plain DNS", name)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue