[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