From b3d7011130a3b6311ed80bdca3a11a356d7d2b2a Mon Sep 17 00:00:00 2001
From: Christof Schulze <christof.schulze@gmx.net>
Date: Wed, 16 May 2018 16:59:47 +0200
Subject: [PATCH] gluon-core: make sure dns traffic leaves the correct
 interface when there is ipv6 wan uplink

---
 package/gluon-core/luasrc/lib/gluon/upgrade/820-dns-config | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/package/gluon-core/luasrc/lib/gluon/upgrade/820-dns-config b/package/gluon-core/luasrc/lib/gluon/upgrade/820-dns-config
index 18b44d3f3..c29e51696 100755
--- a/package/gluon-core/luasrc/lib/gluon/upgrade/820-dns-config
+++ b/package/gluon-core/luasrc/lib/gluon/upgrade/820-dns-config
@@ -16,6 +16,13 @@ uci:delete('dhcp', dnsmasq, 'cachesize')
 
 uci:delete('firewall', 'client_dns')
 if dns.servers then
+	localipv6 = uci:get("network", "loopback", "ip6addr")
+	-- below is an ugly hack that makes sure the dns upstream traffic is leaving the correct network interface.
+	appended = {}
+	for i,s in ipairs(dns.servers) do
+		table.insert(appended, s .. "@" .. string.sub(localipv6,0, string.find(localipv6,"/")-1 ) )
+	end
+	uci:set('dhcp', dnsmasq, 'server', appended )
 	-- allow inbound traffic for dns from client zone
 	uci:section('firewall', 'rule', 'client_dns', {
 		src = 'local_client',
-- 
GitLab