From c2280555d34c795f95e1e5ce155508d35ddc5db9 Mon Sep 17 00:00:00 2001 From: Kr328 <39107975+Kr328@users.noreply.github.com> Date: Tue, 14 Apr 2020 02:17:07 +0800 Subject: [PATCH] fix dns hijacking --- core/src/main/golang/tun/dns.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/main/golang/tun/dns.go b/core/src/main/golang/tun/dns.go index a73320e..4b1a8f7 100644 --- a/core/src/main/golang/tun/dns.go +++ b/core/src/main/golang/tun/dns.go @@ -35,13 +35,11 @@ func InitialResolver() { rawResolver := resolver.DefaultResolver if rawResolver == nil { - hijackAddress = nil dnsHandler = nil return } r, ok := rawResolver.(*dns.Resolver) if !ok || r == nil { - hijackAddress = nil dnsHandler = nil return } @@ -54,6 +52,10 @@ func hijackTCPDNS(conn net.Conn, endpoint *binding.Endpoint) bool { return false } + if dnsHandler == nil { + return false + } + if !hijackAddress.Equal(net.IPv4zero) && !hijackAddress.Equal(net.IPv6zero) && !hijackAddress.Equal(endpoint.Target.IP) { return false } @@ -103,6 +105,10 @@ func hijackDNS(payload []byte, endpoint *binding.Endpoint, sender redirect.UDPSe return false } + if dnsHandler == nil { + return false + } + if !hijackAddress.Equal(net.IPv4zero) && !hijackAddress.Equal(net.IPv6zero) && !hijackAddress.Equal(endpoint.Target.IP) { return false }