[PATCH] Add DNS over TLS option inside the Freifunk backbone

Robert Langhammer rlanghammer at web.de
Fr Apr 3 21:31:59 CEST 2020


hallo Christian,

find ich gut, das rein zu nehmen.

Zur Syntax hab ich noch was: s.u.

Am 03.04.20 um 19:29 schrieb Christian Dresel:
> With this option it is possible to make DoT (DNS over TLS) from the layer3
> router to the DoT DNS Server.
>
> The DNS traffic from Client to the layer3 router is still uncryptet.
>
> On the layer 3 router, dnsmasq forward the DNS to stubby.
> Stubby use DoT to ask a resolver inside or outside the Freifunk backbone
>
> For documentation for the options is here:
> https://wiki.freifunk-franken.de/w/Gatewayfirmware_Config/mit_stubby#dns_mit_DoT_.C3.BCber_stubby
>
> Signed-off-by: Christian Dresel <fff at chrisi01.de>
> ---
>  src/packages/fff/fff-dhcp/Makefile                 |  3 +-
>  .../fff/fff-dhcp/files/etc/gateway.d/35-dns        | 34 +++++++++++++++++-----
>  2 files changed, 29 insertions(+), 8 deletions(-)
>
> diff --git a/src/packages/fff/fff-dhcp/Makefile b/src/packages/fff/fff-dhcp/Makefile
> index c481d82..fed1a2b 100644
> --- a/src/packages/fff/fff-dhcp/Makefile
> +++ b/src/packages/fff/fff-dhcp/Makefile
> @@ -12,7 +12,8 @@ define Package/fff-dhcp
>  	CATEGORY:=Freifunk
>  	TITLE:=Freifunk-Franken dhcp
>  	URL:=http://www.freifunk-franken.de
> -	DEPENDS:=+dnsmasq
> +	DEPENDS:=+dnsmasq \
> +	         +stubby
>  endef
>  
>  define Package/fff-dhcp/description
> diff --git a/src/packages/fff/fff-dhcp/files/etc/gateway.d/35-dns b/src/packages/fff/fff-dhcp/files/etc/gateway.d/35-dns
> index ad9f1cd..20503bf 100644
> --- a/src/packages/fff/fff-dhcp/files/etc/gateway.d/35-dns
> +++ b/src/packages/fff/fff-dhcp/files/etc/gateway.d/35-dns
> @@ -1,21 +1,41 @@
>  configure() {
>  	## dns
>  	uci -q del dhcp. at dnsmasq[0].server
> -	if dnsservers=$(uci -q get gateway. at dns[0].server); then
> -		for f in $dnsservers; do
> -			uci add_list dhcp. at dnsmasq[0].server=$f
> -			uci add_list dhcp. at dnsmasq[0].server="/in-addr.arpa/$f"
> -			uci add_list dhcp. at dnsmasq[0].server="/ip6.arpa/$f"
> -		done
> +	if [ $(uci -q get gateway. at dns[0].dnsdot) == 1 ]; then
hier keine doppelten == ist nicht bash.
> +		uci add_list dhcp. at dnsmasq[0].server="::1#5453"
> +		uci add_list dhcp. at dnsmasq[0].server="127.0.0.1#5453"
> +		uci set dhcp. at dnsmasq[0].noresolv="1"
> +		while uci -q delete stubby. at resolver[0]; do :; done
> +		if dnsservers=$(uci -q get gateway. at dns[0].server); then
Hier braucht es " um die Substitution sonst wordsplitting wenn mehrere
dns und die Var-zuweisung kracht.
>  
> +			for f in $dnsservers; do
> +				type="$(echo $f | cut -d "@" -f 1)"
> +				uci set stubby.$type="resolver"
> +				uci set stubby.$type.address=""$(echo $f | cut -d "@" -f 2)""
> +				uci set stubby.$type.tls_auth_name=""$(echo $f | cut -d "@" -f 3)""
Doppelte "" willst du nicht das 2. schaltet das erste wieder aus. Dann
kannst du die auch weglassen. Das @ ist ein normales Zeichen und
bräuchte die " nicht. aber egal.
> +			done
> +		else
> +			echo "WARNING: No DNS servers set!"
> +		fi
> +		
>  	else
> -		echo "WARNING: No DNS servers set!"
> +		if dnsservers=$(uci -q get gateway. at dns[0].server); then
> +			for f in $dnsservers; do
> +				uci add_list dhcp. at dnsmasq[0].server=$f

Hier auch "$f"

Viele Grüße
Robert

> +				uci add_list dhcp. at dnsmasq[0].server="/in-addr.arpa/$f"
> +				uci add_list dhcp. at dnsmasq[0].server="/ip6.arpa/$f"
> +			done
> +		else
> +			echo "WARNING: No DNS servers set!"
> +		fi
>  	fi
>  }
>  
>  apply() {
>  	uci commit dhcp
> +	uci commit stubby
>  }
>  
>  revert() {
>  	uci revert dhcp
> +	uci revert stubby
>  }



Mehr Informationen über die Mailingliste franken-dev