Hello !
C’est en béta, notre petit serveur répond au DoH !
Pour la partie RFC, on respecte donc la RFC 8484 pour ce qui est du Doh, mais aussi du RFC9462 pour la découverte du DoH via une requête dns classique sur _dns.resolver.arpa en SVCB. (donc compatible avec la découverte auto du DoH par windows quand on configure manuellement le serveur DNS).
Comment on installe ça ?
En soit, c’est assez simple à mettre ne place.
Certificat SSL :
On utilisera certbot pour générer et renouveler notre certificat SSL :
apt install certbot -y
puis on génère le certificat SSL
certbot certonly -d recursif.arn-fai.net
Voila, votre certificat SSL est créer avec Let’s Encrypt.
Partie RFC8484 :
On installe doh-server du projet DNSCrypt
(https://github.com/DNSCrypt/doh-server)
On créer un service qui lui est dédiée (/etc/systemd/system/doh-server.service) :
[Unit]
Description=DNS-over-HTTPS Server (DNSCrypt)
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/bin/doh-server \
-host-name recusrif.arn-fai.net \
-listen-address 0.0.0.0:443 \
-cert /etc/letsencrypt/live/recursif.arn-fai.net/fullchain.pem \
-key /etc/letsencrypt/live/recursif.arn-fai.net/privkey.pem \
-upstream 127.0.0.1:53 \
-concurrency 32 \
-max-clients 1000
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
puis on l’active :
sudo systemctl daemon-reload
sudo systemctl enable --now doh-server
sudo systemctl status doh-server
Le serveur DoH est désormais fonctionnel.
Pour la partie discovery DoH (RFC 9462), il suffit de modifier l’unbound local pour lui faire répondre la réponse attendue :
nano /etc/unbound/unbound.conf
et ajouté ceci dans “server” :
local-zone: "_dns.resolver.arpa" redirect
local-data: '_dns.resolver.arpa. IN SVCB 1 recursif.arn-fai.net. ( alpn="h2" port=443 ipv4hint=89.234.141.66 key7="/dns-query{?dns}" )'
local-data: '_dns.resolver.arpa. IN NS ns0.arn-fai.net.'
Sauvegarder et relancé unbound et la partie discovery est configuré !