diff --git a/pkg/miekg/miekg.go b/pkg/miekg/miekg.go index 6418280..6e9c2b9 100644 --- a/pkg/miekg/miekg.go +++ b/pkg/miekg/miekg.go @@ -739,11 +739,20 @@ func (s *Lookup) DoMiekgLookup(q Question, nameServer string) (interface{}, zdns } if s.DNSType == dns.TypePTR { var err error - q.Name, err = dns.ReverseAddr(q.Name) + var qname string + qname, err = dns.ReverseAddr(q.Name) if err != nil { - return nil, nil, zdns.STATUS_ILLEGAL_INPUT, err + // might be an actual DNS name instead of an IP address + // if that looks likely, use it as is + if (len(q.Name) > 0) && !strings.Contains(q.Name, ":") && + !strings.Contains("1234567890", string(q.Name[len(q.Name)-1:])) { + qname = q.Name + "." + } else { + return nil, nil, zdns.STATUS_ILLEGAL_INPUT, err + } } - q.Name = q.Name[:len(q.Name)-1] + // remove trailing "." added by dns.ReverseAddr + q.Name = qname[:len(qname)-1] } if s.Factory.IterativeResolution { s.VerboseLog(0, "MIEKG-IN: iterative lookup for ", q.Name, " (", q.Type, ")")