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

Robert Langhammer rlanghammer at web.de
Sa Apr 4 22:21:06 CEST 2020


Hallo Christian,

ja, mach das so.

Die $(..) kann auch so bleiben. Da bekommt man das Quoting gratis dazu.

Da hab ich auch wieder was gelernt :-)

Viele Grüße
Robert

Am 04.04.20 um 13:03 schrieb Christian Dresel:
> Hallo Robert
>
> Danke paar Sachen inline:
>
> On 03.04.20 21:31, Robert Langhammer wrote:
>> 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.
> ack
>
>>> +		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.
> Ist genau dieser Code den ich eigentlich gar nicht angefasst habe nur
> verschoben:
>
> https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-dhcp/files/etc/gateway.d/35-dns#L4
>
> würde ich hier jetzt nicht anfassen sondern lieber in einem eigenen
> Patch dann korrigieren. Es funktioniert auf jeden Fall auch ohne, gerade
> getestet.
>
>>>  
>>> +			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.
> wo auch immer die "" herkommen... Fallen im v2 dann weg ;)
> Wegen dem "@" das ist PHP Gewohnheit, alles was kein Integer ist bekommt
> "x" drum herum (deshalb haben auch die Zahlen nach dem -f keine "") ;)
> Keine Ahnung was die "schönere" Lösung ist, mir soll es egal sein und
> wegen mir können die "" dann im v2 weg, funktionieren tut beides (eben
> getestet).
>
>>> +			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"
> selbe wie oben nur dieser:
>
> https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-dhcp/files/etc/gateway.d/35-dns#L6
>
> Gruß
>
> Christian
>
>> 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