From 8fb69fc2b6554ac1fc7a6787dcf99606c07372cc Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Sun, 19 Nov 2017 20:42:34 +0100 Subject: [PATCH] send IPv6 query only to supported server. --- app/dns/server/nameserver.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/dns/server/nameserver.go b/app/dns/server/nameserver.go index 0c21d0a7f..8e2450031 100644 --- a/app/dns/server/nameserver.go +++ b/app/dns/server/nameserver.go @@ -22,6 +22,12 @@ const ( var ( pseudoDestination = net.UDPDestination(net.LocalHostIP, net.Port(53)) + + multiQuestionDns = map[net.Address]bool{ + net.IPAddress([]byte{8, 8, 8, 8}): true, + net.IPAddress([]byte{8, 8, 4, 4}): true, + net.IPAddress([]byte{9, 9, 9, 9}): true, + } ) type ARecord struct { @@ -150,12 +156,14 @@ func (v *UDPNameServer) BuildQueryA(domain string, id uint16) *buf.Buffer { Name: dns.Fqdn(domain), Qtype: dns.TypeA, Qclass: dns.ClassINET, - }, - { + }} + if multiQuestionDns[v.address.Address] { + msg.Question = append(msg.Question, dns.Question{ Name: dns.Fqdn(domain), Qtype: dns.TypeAAAA, Qclass: dns.ClassINET, - }} + }) + } buffer := buf.New() common.Must(buffer.Reset(func(b []byte) (int, error) {