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

Christian Dresel fff at chrisi01.de
Sa Apr 4 23:44:27 CEST 2020


Hi Robert

On 04.04.20 22:21, Robert Langhammer wrote:
> Hallo Christian,
> 
> ja, mach das so.
> 
> Die $(..) kann auch so bleiben. Da bekommt man das Quoting gratis dazu.

wenn dem so ist:

> 
> 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).

dann ist es hier auch unnötig und man kann
uci set stubby.$type.address=$(echo $f | cut -d @ -f 2)
machen?

Gruß

Christian

>>
>>>> +			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