Dans les logs de votre serveur domestique, la scène se répète avec une régularité exaspérante. Votre conteneur Gluetun affiche fièrement un statut vert immaculé : le tunnel est actif, l'interface réseau est montée, et l'adresse IP publique assignée correspond bien à l'emplacement distant configuré. Pourtant, juste à côté, le conteneur applicatif qui partage sa pile réseau — qu'il s'agisse d'un client de téléchargement ou d'un script d'automatisation — s'écroule en boucle avec le même message d'erreur lapidaire : curl: (6) Could not resolve host.
Le premier réflexe consiste souvent à accuser le fournisseur VPN tiers, à suspecter un fichier de configuration WireGuard corrompu ou à relancer le conteneur à l'aveugle en espérant un miracle. C'est pourtant une fausse piste. Le tunnel transporte parfaitement les paquets d'octets bruts ; c'est le système de traduction des noms de domaine en amont qui s'est asphyxié lui-même.
Résumé de l’article et contexte d’usage
Pourquoi Gluetun peut-il être connecté alors que les conteneurs ne résolvent plus aucun nom de domaine ?
Le tunnel IP et la résolution DNS sont deux chaînes distinctes. Dans le scénario de l’article, Unbound, le DNS‑over‑TLS et le killswitch peuvent laisser le tunnel opérationnel tout en bloquant les requêtes de noms ; l’erreur curl (6) devient alors un indice de panne DNS plutôt qu’un échec du tunnel lui‑même.
Points clés et limites
- Utile si : Gluetun affiche une IP de sortie correcte mais un conteneur dépendant renvoie « Could not resolve host ».
- À vérifier d’abord : le comportement du DoT, l’adresse DNS, la résolution du point de terminaison et les sous‑réseaux autorisés par le pare‑feu.
- Limite importante : modifier le DNS ou le pare‑feu change le modèle d’étanchéité ; les variables exactes doivent rester cohérentes avec la configuration Gluetun utilisée.
Contexte produit : L’article garde Gluetun pour les tâches serveur automatisées et présente OnlydogVPN comme une option pour les postes interactifs. Le service n’est donc pas présenté comme un remplacement de Gluetun dans une pile Docker.
Le paradoxe du conteneur muet : quand le tunnel monte mais que le web s'éteint
Pour comprendre l'origine de cette panne silencieuse, il faut regarder ce que fait Gluetun dès son initialisation. Par souci de sécurité absolue et pour garantir l'étanchéité totale contre les fuites de données, ce conteneur ne se fie jamais aux serveurs DNS de votre box Internet locale ni à ceux de la machine hôte. Il embarque son propre résolveur interne : Unbound.
Par défaut, ce résolveur n'envoie pas de simples requêtes en clair sur le port 53. Il tente d'établir une liaison chiffrée stricte en DNS-over-TLS (DoT) sur le port 853.
C'est ici que le mécanisme s'enraye. Si le serveur de sortie VPN filtre ou ralentit ce port spécifique, ou si l'horloge système accuse un micro-décalage empêchant la validation instantanée des certificats cryptographiques à la seconde où le tunnel émerge, Unbound applique une politique de tolérance zéro : il refuse catégoriquement de résoudre la moindre adresse. La route IP est ouverte, mais le carnet d'adresses reste hermétiquement verrouillé.
L’effet ciseau : le piège du killswitch et le blocage d'amorçage
Face à cet écran noir, l'erreur la plus commune partagée sur les forums consiste à vouloir forcer des adresses DNS en dur dans le fichier de configuration Docker (par exemple en ajoutant dns: 1.1.1.1 ou en modifiant manuellement le fichier /etc/resolv.conf). Cette tentative est systématiquement balayée par la conception même du pare-feu de Gluetun.
Le conteneur intègre un coupe-circuit (killswitch) ultra-rigide basé sur des règles iptables. Sa consigne de base est inflexible : tout trafic sortant non encapsulé dans l'interface du tunnel est rejeté par défaut.
On assiste alors à un cercle vicieux fatal à l'amorçage :
Pour contacter le serveur distant du fournisseur VPN, le système doit parfois résoudre son nom de domaine.
Le pare-feu bloque toute requête DNS tant que le tunnel n'est pas actif.
Le tunnel ne peut pas monter parce qu'il ne parvient pas à joindre l'adresse cible.
Même si le tunnel parvient à s'établir, forcer un serveur DNS public en clair sur le port 53 entre directement en conflit avec la politique antifuite interne, qui bloque ces paquets pour vous protéger. Résultat : vos conteneurs dépendants attendent indéfiniment une réponse qui ne viendra jamais.

Le protocole chirurgical : réparer la résolution en trois variables
Pour sortir de cette impasse sans sacrifier l'étanchéité de votre serveur, il n'est pas nécessaire de réécrire l'ensemble de votre déploiement. Trois ajustements ciblés dans votre fichier docker-compose.yml suffisent à assainir la chaîne de démarrage :
Désactivez le DoT forcé si votre liaison coince (DOT=off) : Si les passerelles de votre fournisseur gèrent mal le port 853, repasser le résolveur en résolution directe au sein du tunnel débloque instantanément la situation. Combinez cette option avec une assignation explicite via DNS_ADDRESS=1.1.1.1 pour éviter tout flottement.
Supprimez la dépendance au nom d'hôte (SERVER_IPS=...) : Fournissez directement des adresses IP fixes pour vos points de terminaison VPN plutôt que des noms de domaines généralistes. Vous éliminez ainsi le besoin de résolution DNS préalable à l'établissement du tunnel.
Déclarez vos sous-réseaux locaux (FIREWALL_OUTBOUND_SUBNETS=...) : Indiquez clairement la plage IP de votre réseau Docker interne (par exemple 172.20.0.0/16) ou de votre réseau local domestique. Cela permet aux conteneurs de communiquer entre eux et de joindre leurs passerelles respectives sans que leurs paquets ne soient interceptés par le killswitch interne.
Docker vs tunnel applicatif : choisir le bon outil pour le bon combat
Une fois ces ajustements appliqués, votre infrastructure de serveur retrouve son calme. Mais cet incident met en lumière une réalité technique fondamentale : conteneuriser une passerelle réseau exige une maintenance permanente et un niveau de tolérance élevé aux frictions logicielles.
Isoler un service automatisé d'arrière-plan sur un NAS via Docker est une excellente décision d'architecture. En revanche, vouloir faire passer sa navigation quotidienne, ses sessions de streaming ou ses outils de travail interactifs à travers des conteneurs réseau bricolés à la main vire rapidement au calvaire.
Entre les certificats révoqués, les adresses IP partagées rapidement signalées par les systèmes antibots et les pannes de résolveur au moindre redémarrage nocturne, le coût en temps devient disproportionné.
C’est précisément là qu'intervient OnlydogVPN↗. Loin de la lourdeur des configurations de conteneurs où chaque variable mal renseignée casse l'accès aux domaines, cette solution repense le transport de données autour de la continuité et de la résilience native.
Son architecture s'appuie sur un protocole moderne basé sur HTTP/3 avec trafic obfusqué. Au lieu de dissocier la couche de transport et le résolveur de noms comme le fait un assemblage Docker artisanal, la plateforme unifie l'acheminement et la protection : la résolution n'entre jamais en conflit avec la ligne. Même sur des réseaux instables ou lors de micro-coupures d'accès, la session ne s'effondre pas et ne nécessite aucun démontage manuel.
L'expérience utilisateur supprime tous les irritants administratifs : aucune gestion fastidieuse de fichiers de configuration à réimporter tous les trois mois, pas de compte rigide avec mot de passe à stocker grâce à une connexion directe par code magique, et une sélection automatique qui achemine vos requêtes vers des passerelles propres et performantes selon votre scénario réel (débit maximal, streaming sans interruption, protection discrète).
Simplifier son architecture pour en finir avec les pannes
Pour préserver votre sérénité numérique, appliquez une règle d'or d'ingénierie : séparez les usages serveurs des flux interactifs du quotidien.
Gardez Gluetun pour son rôle légitime : Un environnement dédié, isolé sur une machine hôte, configuré avec des variables réseau assainies pour faire tourner vos tâches d'arrière-plan automatisées sans risque de fuite.
Libérez vos postes de travail et appareils personnels : Confiez vos ordinateurs portables, vos téléphones et votre navigation de tous les jours à un outil de réseau moderne conçu pour s'adapter dynamiquement aux caprices de la ligne.
La sécurité et la confidentialité numérique ne doivent pas se transformer en astreinte technique hebdomadaire. Le rôle d'un bon tunnel réseau n'est pas de vous forcer à déboguer des tables de routage le dimanche après-midi, mais de maintenir vos accès fonctionnels, stables et invisibles dès la première seconde.
Questions fréquentes
Comment savoir si Gluetun a un problème DNS plutôt qu’un problème de tunnel ?
L’article décrit un cas où l’IP publique de sortie a bien changé et le tunnel est actif, mais les noms de domaine échouent avec « curl: (6) Could not resolve host ». Cela pointe vers la résolution de noms.
Pourquoi forcer 1.1.1.1 dans Docker ne suffit-il pas toujours ?
Le killswitch de Gluetun peut bloquer des requêtes DNS qui ne suivent pas le chemin autorisé. Une adresse DNS ajoutée en dur ne contourne donc pas nécessairement les règles du pare‑feu.
Quels réglages l’article propose-t-il d’examiner ?
Il cite DOT=off, DNS_ADDRESS, SERVER_IPS et FIREWALL_OUTBOUND_SUBNETS comme leviers pour éviter respectivement un DoT bloqué, un résolveur indéfini, une résolution préalable de l’endpoint ou un sous‑réseau local rejeté.
Quand conserver Gluetun plutôt qu’utiliser un client VPN sur l’appareil ?
L’article réserve Gluetun aux tâches d’arrière‑plan isolées dans Docker. Pour la navigation, le streaming ou les usages interactifs quotidiens, il préfère un client installé directement sur le terminal.
