close button

Bienvenue sur ce site internet auto-hébergé. Il est conforme au règlement général européen sur la protection des données (RGPD). Aucun cookie de traçage, aucune bannière et aucune publicité ne sont présents. Son contenu est mis à disposition selon les termes de la licence Creative Commons BY-NC-SA. Toute utilisation à des fins commerciales est strictement interdite et toute reproduction ou partage, même partiel, doivent respecter ces termes. Pour en savoir plus...

FreshTomato : Libérez vos DNS avec Stubby et un fichier dot-servers.dat personnalisé !

Écrit par : fdgeek
10 minutes
FreshTomato : Libérez vos DNS avec Stubby et un fichier dot-servers.dat personnalisé !

Il y a quelques semaines maintenant, l'excellent service de DNS publics DNS0.eu auquel j'avais consacré un article a définitivement cessé de fonctionner faute de financement. Et entre-temps, comme je l'ai évoqué en septembre, le service de résolveurs DNS Européen (DNS4EU) a enfin vu le jour.

Alors, de nombreux utilisateurs européens équipés d'un routeur avec le firmware FreshTomato souhaitent pouvoir utiliser ces DNS souverains en mode sécurisé : DNS over TLS (DoT) avec Stubby tout en conservant Dnsmasq comme cache local. Cependant, ces nouveaux serveurs DNS ne figurent pas dans la liste proposée par défaut avec le firmware FreshTomato (capture d'écran plus bas). Pour remédier à cela, on peut spécifier à la main un fichier de configuration personnalisé pour stubby dans la fenêtre d'interface prévue à cet effet comme dans l'exemple ci-après.

appdata_dir: "/var/lib/misc"
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
  - GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private: 1
idle_timeout: 5000
tls_connection_retries: 5
tls_backoff_time: 900
timeout: 2000
round_robin_upstreams: 1
listen_addresses:
  - 127.0.0.1@5453

upstream_recursive_servers:
## serveurs DNS de DNS4EU avec filtrage malwares et filtrage publicitaire
  - address_data: 86.54.11.13
    tls_auth_name: "noads.joindns4.eu"
  - address_data: 86.54.11.213
    tls_auth_name: "noads.joindns4.eu"

Mais, ce n'est pas l'idéal, pas très ergonomique et risque de rebuter certains utilisateurs.

C'est pourquoi, il y a quelques jours, j'ai formulé une requête sur le forum officiel de FreshTomato firmware pour demander l'ajout lors d'une future version de ces nouveaux serveurs DNS dans la liste fournie de base. À ma grande surprise, j'ai reçu une fin de non-recevoir catégorique de la part de Pedro, le principal initiateur et développeur de ce formidable projet open source. J'ai bien essayé d'argumenter sur l'importance de ces DNS souverains pour nous les utilisateurs européens et sur la philosophie inhérente aux logiciels libres mais cela a presque déclenché une polémique. La réponse est claire : pour le développeur, tout ce qui vient de la Commission Européenne ou en émane par quelque moyen ou subvention que ce soit c'est définitivement:  NON ! C'est son choix, et je le respecte.

Liste de serveurs DNS fournie de base dans FreshTomato Firmware

D'autres intervenants ont eux aussi été dans mon sens en soutenant que la liberté de choix concernant les serveurs DNS alternatifs pour Stubby devait comme pour les serveurs DNS de la section « Basic Network » revenir à l'utilisateur final. Et finalement, c'est un autre intervenant sur le forum (PetervdM 😉) qui m'a aiguillé sur une façon de contourner ce problème de manière plus pérenne. Elle consiste à modifier nous-même le fichier qui contient la liste des serveurs DNS proposés: dot-servers.dat (présent dans le répertoire /rom du système) en le copiant sur un support de stockage connecté au routeur  (ex : une clé USB ou un disque externe dédié au partage réseau) et, à écraser le fichier original par notre fichier modifié à chaque démarrage du routeur.

Localisation du fichier dot-servers.dat

Ainsi, l'utilisateur peut, quand bon lui semble, rajouter à sa guise les serveurs DNS qui lui conviennent et ces derniers apparaîtront automatiquement dans la liste qui s'affiche lorsque Stubby est utilisé pour crypter les requêtes DNS via TLS.

Attention : cette manipulation nécessite un accès SSH et une clé USB ou un disque monté en permanence sur votre routeur. En cas de doute, faites une sauvegarde de votre configuration FreshTomato avant de vous lancer.

Voyons donc pas à pas comment procéder afin que vous aussi, vous puissiez utiliser tout le potentiel de FreshTomato firmware en cumulant 3 fonctionnalités :

  • Profiter d'un excellent serveur DHCP et d'un puissant cache DNS local avec Dnsmasq
  • Utiliser l'option Adblock pour assainir votre réseau domestique (filtrage des malwares, des publicités et contrôle parental)
  • Vous affranchir des serveurs DNS de votre FAI (qui vous tracent via leurs journaux, sont parfois instables et peuvent même être utilisés pour vous bloquer l'accès à certains sites internet) et améliorer votre confidentialité en ligne en chiffrant toutes vos requêtes DNS avec Stubby via les serveurs de votre choix.

Comme nous allons utiliser Stubby pour chiffrer nos requêtes DNS avec des serveurs DNS alternatifs qui prennent en charge le protocole DoT et DNSSEC, la première chose à faire est de modifier le fichier de configuration Dnsmasq en commentant (ou en supprimant) les éventuels serveurs DNS qui y sont déclarés afin d'éviter des conflits. Il faut également commenter ou supprimer les valeurs «strict-order» et «no-resolv». (En bas de la page DHCP/DNS/TFTP de la section Advanced). Comme ceci :

## no-resolv
all-servers
filterwin2k
dns-loop-detect
cache-size=5120
min-cache-ttl=900
max-cache-ttl=21600
neg-ttl=900
log-async=5
clear-on-reload
dns-forward-max=150
dnssec-no-timecheck
no-poll
##strict-order

## Serveurs DNS de CloudFlare Security
##server=1.1.1.2
##server=1.0.0.2

Rendez-vous ensuite en haut de la page pour cocher les options suivantes :

Enable DNSSEC support (qui va permettre de valider de façon sécurisée les enregistrements DNS et vous protéger contre les empoisonnements de cache), validation method : Dnsmasq et Use Stubby.

Configuration Stubby DNS 01

Juste en dessous, activez comme suit : priority = no-resolv , local port = 5453, log level = notice*, force TLS 1.3 = activé.

Attention : avec no-resolv cela veut dire que seul Stubby sera utilisé pour résoudre les noms de domaine. Si les serveurs DNS sécurisés tombent en panne vous ne pourrez plus naviguer sur le web. C'est pourquoi je conseille de choisir dans la liste au moins 2 services DNS sécurisés différents. Sinon, vous pouvez opter pour l'option «strict order» et dans ce cas-là, si les serveurs DNS sécurisés sont en panne, ce seront les serveurs déclarés dans la configuration réseau basique qui seront utilisés. Mais, dans ce cas de figure, vos requêtes DNS s'effectueront en clair. Adieu donc la confidentialité et la sécurité. Concernant «force TLS 1.3», normalement tous les serveurs DNS over TLS actuels sont compatibles avec ce standard.

 Configuration Stubby 02

Pour terminer, n'oubliez pas de cliquer sur le bouton «Save» en bas de page pour sauvegarder vos paramètres et relancer les services concernés (Dnsmasq et Stubby).

Voyons maintenant comment utiliser un fichier dot-servers.dat modifié afin que vous puissiez sélectionner  les serveurs DNS de votre choix lorsque vous les faites apparaître en cochant la case «show/hide servers».

Tout d'abord créez un nouveau répertoire sur votre support de stockage USB. Par exemple, un dossier nommé «DNS».

Ouvrez une session SSH  (par exemple avec Putty) vers votre routeur ou utilisez la ligne de commandes intégrée à l'interface de FreshTomato firmware. Une fois connecté suivez cette procédure :

# positionnez-vous dans le répertoire /rom :
cd ..
cd /rom

# Copiez le fichier dot-servers.dat vers le répertoire DNS
# de votre support de stockage USB (ex: /PARTAGE) :
cp /rom/dot-servers.dat /mnt/PARTAGE/DNS

Ensuite, à l'aide d'un éditeur de texte comme Notepad++, modifiez le fichier dot-servers.dat en supprimant et ajoutant les lignes IPv4 et IPv6 des serveurs DNS de votre choix. Vous trouverez les adresses IP et leur nom pour une utilisation DNS over TLS sur les pages de support officielles. Par exemple ici pour les serveurs de DNS4EU avec filtrage des malwares. Notez que le fichier dot-servers.dat doit être encodé au format UTF-8 pour éviter tout problème de compatibilité. Vous trouverez ci-dessous la copie intégrale du fichier que j'utilise actuellement au sein duquel j'ai supprimé certains services DNS fournis de base pour y ajouter les nouveaux DNS de DNS4EU et ceux de FDN.

# Layout:
# Name,IP_Address,Port,TLS_Hostname,SPKI,IPv4/IPv6
# Empty lines are ignored

# IPv4
AdGuard 1,94.140.14.14,,dns.adguard.com,,IPv4
AdGuard 2,94.140.15.15,,dns.adguard.com,,IPv4
AdGuard 1 (Unfiltered),94.140.14.140,,dns-Unfiltered.adguard.com,,IPv4
AdGuard 2 (Unfiltered),94.140.14.141,,dns-Unfiltered.adguard.com,,IPv4
AdGuard 1 (Family),94.140.14.15,,dns-Family.adguard.com,,IPv4
Adguard 2 (Family),94.140.15.16,,dns-Family.adguard.com,,IPv4
Cisco Umbrella/OpenDNS 1,208.67.222.222,,dns.opendns.com,,IPv4
Cisco Umbrella/OpenDNS 2,208.67.220.220,,dns.opendns.com,,IPv4
Cloudflare 1,1.1.1.1,,cloudflare-dns.com,,IPv4
Cloudflare 2,1.0.0.1,,cloudflare-dns.com,,IPv4
Cloudflare 1 (Family),1.1.1.3,,Family.cloudflare-dns.com,,IPv4
Cloudflare 2 (Family),1.0.0.3,,Family.cloudflare-dns.com,,IPv4
Cloudflare 1 (Security),1.1.1.2,,Security.cloudflare-dns.com,,IPv4
Cloudflare 2 (Security),1.0.0.2,,Security.cloudflare-dns.com,,IPv4
MullVad 1 (Security),194.242.2.4,,base.dns.mullvad.net,,IPv4
DNS4EU 1 (Security),86.54.11.1,,protective.joindns4.eu,,IPv4
DNS4EU 2 (Security),86.54.11.201,,protective.joindns4.eu,,IPv4
DNS4EU 1 (Security & Adblock),86.54.11.13,,noads.joindns4.eu,,IPv4
DNS4EU 2 (Security & Adblock),86.54.11.213,,noads.joindns4.eu,,IPv4
DNS4EU 1 (Security & Family),86.54.11.12,,child.joindns4.eu,,IPv4
DNS4EU 2 (Security & Family),86.54.11.212,,child.joindns4.eu,,IPv4
DNS4EU 1 (Security & Family & Adblock),86.54.11.11,,child-noads.joindns4.eu,,IPv4
DNS4EU 2 (Security & Family & Adblock),86.54.11.211,,child-noads.joindns4.eu,,IPv4
DNS4EU 1 (Unfiltered),86.54.11.100,,Unfiltered.joindns4.eu,,IPv4
DNS4EU 2 (Unfiltered),86.54.11.200,,Unfiltered.joindns4.eu,,IPv4
FDN 1 (Unfiltered),80.67.169.12,,ns0.fdn.fr,,IPv4
FDN 2 (Unfiltered),80.67.169.40,,ns1.fdn.fr,,IPv4
Google 1,8.8.8.8,,dns.google,,IPv4
Google 2,8.8.4.4,,dns.google,,IPv4
Quad9 1 (Security Base),9.9.9.9,,dns.quad9.net,,IPv4
Quad9 2 (Security Base),149.112.112.112,,dns.quad9.net,,IPv4

# IPv6
AdGuard 1,2a10:50c0::ad1:ff,,dns.adguard.com,,IPv6
AdGuard 2,2a10:50c0::ad2:ff,,dns.adguard.com,,IPv6
AdGuard 1 (Unfiltered),2a10:50c0::1:ff,,dns-Unfiltered.adguard.com,,IPv6
AdGuard 2 (Unfiltered),2a10:50c0::2:ff,,dns-Unfiltered.adguard.com,,IPv6
AdGuard 1 (Family),2a10:50c0::bad1:ff,,dns-Family.adguard.com,,IPv6
Adguard 2 (Family),2a10:50c0::bad2:ff,,dns-Family.adguard.com,,IPv6
Cisco Umbrella/OpenDNS 1,2620:119:35::35,,dns.opendns.com,,IPv6
Cisco Umbrella/OpenDNS 2,2620:119:53::53,,dns.opendns.com,,IPv6
Cloudflare 1,2606:4700:4700::1111,,cloudflare-dns.com,,IPv6
Cloudflare 2,2606:4700:4700::1001,,cloudflare-dns.com,,IPv6
Cloudflare 1 (Family),2606:4700:4700::1113,,Family.cloudflare-dns.com,,IPv6
Cloudflare 2 (Family),2606:4700:4700::1003,,Family.cloudflare-dns.com,,IPv6
Cloudflare 1 (Security),2606:4700:4700::1112,,Security.cloudflare-dns.com,,IPv6
Cloudflare 2 (Security),2606:4700:4700::1002,,Security.cloudflare-dns.com,,IPv6
MullVad 1 (Security),2a07:e340::4,,base.dns.mullvad.net,,IPv6
DNS4EU 1 (Security),2a13:1001::86:54:11:1,,protective.joindns4.eu,,IPv6
DNS4EU 2 (Security),2a13:1001::86:54:11:201,,protective.joindns4.eu,,IPv6
DNS4EU 1 (Security & Adblock),2a13:1001::86:54:11:13,,noads.joindns4.eu,,IPv6
DNS4EU 2 (Security & Adblock),2a13:1001::86:54:11:213,,noads.joindns4.eu,,IPv6
DNS4EU 1 (Security & Family),2a13:1001::86:54:11:12,,child.joindns4.eu,,IPv6
DNS4EU 2 (Security & Family),2a13:1001::86:54:11:212,,child.joindns4.eu,,IPv6
DNS4EU 1 (Security & Family & Adblock),2a13:1001::86:54:11:11,,child-noads.joindns4.eu,,IPv6
DNS4EU 2 (Security & Family & Adblock),2a13:1001::86:54:11:211,,child-noads.joindns4.eu,,IPv6
DNS4EU 1 (Unfiltered),2a13:1001::86:54:11:100,,Unfiltered.joindns4.eu,,IPv6
DNS4EU 2 (Unfiltered),2a13:1001::86:54:11:200,,Unfiltered.joindns4.eu,,IPv6
FDN 1 (Unfiltered),2001:910:800::12,,ns0.fdn.fr,,IPv6
FDN 2 (Unfiltered),2001:910:800::40,,ns1.fdn.fr,,IPv6
Google 1,2001:4860:4860::8888,,dns.google,,IPv6
Google 2,2001:4860:4860::8844,,dns.google,,IPv6
Quad9 1 (Security base),2620:fe::fe,,dns.quad9.net,,IPv6
Quad9 2 (Security base),2620:fe::9,,dns.quad9.net,,IPv6

Dernière étape pour finaliser cette modification: utiliser la fonction «Automont» présente dans la section USB and NAS / USB support pour annuler le montage automatique du fichier dot-servers.dat original et utiliser un point de montage virtuel persistant pour que notre fichier personnalisé soit utilisé comme celui présent dans le répertoire /rom. Pour ce faire, rajoutez les deux lignes suivantes dans la section «Run after mounting» puis sauvegardez.

# annulation du montage automatique du fichier original
umount -f /rom/dot-servers.dat

# Utilisation de notre fichier modifié qui remplace l'original
mount --bind /mnt/PARTAGE/DNS/dot-servers.dat /rom/dot-servers.dat

Fonction

Ainsi, à chaque démarrage du routeur, dès que le support USB externe est monté, les deux lignes de notre script s'exécutent et c'est notre fichier dot-servers.dat qui est utilisé par défaut. Il peut même être édité selon les besoins à tout moment et les modifications apparaissent en temps réel dans l'interface dès que l'utilisateur clique sur «Show/Hide servers».

La liste des serveurs DNS personnalisés.

Dans la capture d'écran ci-dessus, vous pouvez voir que les DNS de DNS4EU sont tous présents dans la liste, ainsi que ceux de FDN, mais ce sont les serveurs DNS primaire et secondaire de Cloudflare Security qui sont utilisés avec une autre solution en cas de panne : le serveur DNS ouvert et gratuit (qui ne journalise rien) du Suédois Mullvad plus connu pour son excellent VPN.

Avec cette méthode, vous pouvez donc contourner la liste limitée de serveurs DNS fournie avec Stubby et créer votre propre liste afin de chiffrer vos requêtes DNS via d'autres résolveurs que ceux proposés.

Je vous souhaite à toutes et tous d'excellentes fêtes de fin d'année. Rendez-vous en 2026 ! 😃

Mentions légales