[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