diff --git a/dns/resolver.go b/dns/resolver.go index 7f50a1a0..52a08c0d 100644 --- a/dns/resolver.go +++ b/dns/resolver.go @@ -121,7 +121,7 @@ func (r *Resolver) exchangeWithoutCache(m *D.Msg) (msg *D.Msg, err error) { } putMsgToCache(r.lruCache, q.String(), msg) - if r.mapping { + if r.mapping || r.fakeip { ips := r.msgToIP(msg) for _, ip := range ips { putMsgToCache(r.lruCache, ip.String(), msg) @@ -151,7 +151,10 @@ func (r *Resolver) exchangeWithoutCache(m *D.Msg) (msg *D.Msg, err error) { // IPToHost return fake-ip or redir-host mapping host func (r *Resolver) IPToHost(ip net.IP) (string, bool) { if r.fakeip { - return r.pool.LookBack(ip) + record, existed := r.pool.LookBack(ip) + if existed { + return record, true + } } cache, _ := r.lruCache.Get(ip.String())