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

Christian Dresel fff at chrisi01.de
Sa Apr 4 13:03:28 CEST 2020


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