Le scénario est familier pour quiconque utilise Linux au quotidien : vous lancez un tunnel chiffré pour isoler une tâche d’arrière-plan ou accéder à un service distant, et instantanément, votre terminal se fige. Votre session SSH sur le serveur local est interrompue, l'imprimante réseau disparaît des radars et vos requêtes de développement local vers localhost commencent à tourner dans le vide.
Pour résoudre le problème, le réflexe naturel consiste à ouvrir un éditeur de texte et à empiler des règles : un peu de ip route, deux ou trois tables secondaires, une pincée de iptables ou de nftables pour marquer les paquets. Deux heures plus tard, le bilan est souvent désastreux : la machine est instable, les accès locaux sont erratiques et les requêtes DNS partent n'importe où.
Contrairement aux idées reçues, le split tunneling sous Linux n'échoue pas par manque d'outils, mais parce que tenter de router des applications par IP ou par port au niveau global du noyau crée des conflits insolubles. Pour garder un système propre et réactif, il faut cesser de manipuler la table de routage principale et adopter une séparation des flux adaptée à vos réels objectifs d'usage.
Résumé de l’article et adéquation du produit
Comment isoler proprement des flux sous Linux sans casser le réseau local
Sous Linux, le split tunneling devient fragile quand on tente de piloter des applications au niveau global avec des routes, des marques de paquets et des priorités DNS. L’article recommande de préserver la table de routage principale, d’utiliser des espaces de noms ou des conteneurs pour les services qui exigent une isolation stricte, et de réserver les profils automatisés aux usages interactifs courants.
Points à retenir
- Pour qui : les utilisateurs Linux qui voient SSH, le LAN ou la résolution DNS se dérégler dès qu’un tunnel est activé.
- Point clé : le noyau raisonne en interfaces, adresses et paquets, tandis que systemd-resolved peut donner la priorité au DNS du tunnel et casser les résolutions locales.
- Limite importante : les network namespaces et les conteneurs offrent une séparation plus stricte, mais demandent davantage de configuration ; un client par scénarios ne remplace pas cette isolation lorsqu’un processus précis doit rester enfermé dans son propre réseau.
Pour les usages interactifs décrits dans l’article, OnlydogVPN est présenté comme une manière d’éviter les scripts de routage fragiles grâce à des profils d’usage, un routage automatique et une architecture HTTP/3/QUIC avec obfuscation.
Source produit présente dans l’article : site officiel OnlydogVPN.
Le mirage du routage par application : pourquoi Linux n'est pas Windows
Sur des systèmes d'exploitation grand public comme Windows ou Android, l'OS expose des interfaces de programmation directes permettant d'associer un exécutable précis à une carte réseau virtuelle. Une case à cocher dans une interface graphique suffit généralement à faire passer un navigateur dans le tunnel tout en laissant le reste du système sur la connexion par défaut.
Sous Linux, la réalité architecturale est radicalement différente. La pile réseau du noyau (iproute2) raisonne exclusivement en adresses IP, en masques de sous-réseau, en interfaces et en paquets. Elle ignore totalement ce qu'est un fichier binaire .exe ou une commande lancée depuis un terminal.
Pour contourner cette absence de notion applicative, beaucoup d'utilisateurs se tournent vers les groupes de contrôle (cgroups) afin d'associer un identifiant numérique à un processus, puis utilisent le pare-feu pour apposer une marque sur ses paquets (SO_MARK). Sur le papier, la théorie séduit. En pratique, c'est un château de cartes :
- Les navigateurs modernes comme Chrome ou Firefox fonctionnent avec une myriade de sous-processus éphémères qui échappent fréquemment au marquage initial.
- La moindre mise à jour du noyau ou changement de gestionnaire réseau (NetworkManager, systemd-networkd) risque d'écraser vos tables personnalisées.
- Les paquets de réponse locaux sont régulièrement capturés par la mauvaise passerelle par défaut.
Vouloir bricoler un split tunneling applicatif global au cœur de la table de routage du noyau est la méthode la plus directe pour rendre sa distribution imprévisible.
L'angle mort fatal : quand systemd-resolved et le DNS sabotent votre trafic
Même lorsque vos tables de routage semblent enfin respecter vos ordres et aiguiller les paquets de données vers les bonnes interfaces, une seconde faille, plus discrète mais critique, entre en jeu : la résolution DNS.
Sur la plupart des distributions modernes (Ubuntu, Fedora, Debian récente), le composant systemd-resolved gère les requêtes de noms de domaine. Dès qu'un tunnel réseau s'active, il annonce ses propres serveurs de noms avec des métriques de priorité élevées. Deux dérives majeures se produisent alors :
- La fuite de confidentialité : Vos paquets applicatifs passent bien par votre connexion physique directe, mais chaque nom de domaine consulté continue d'être interrogé auprès du résolveur distant imposé par votre tunnel. Vos activités locales ne sont donc jamais réellement isolées.
- La rupture des résolutions internes : Si le résolveur distant prend la priorité absolue, toutes les requêtes vers vos machines locales (
.local, serveurs de développement internes ou NAS) échouent immédiatement, car le serveur extérieur n'a aucune connaissance de votre topologie domestique ou d'entreprise.
Gérer manuellement les priorités DNS par interface tout en maintenant un routage dynamique relève du casse-tête permanent. Au lieu de protéger vos flux, ce bricolage fragilise l'ensemble de votre connectivité.

Les deux seules approches techniques viables (et leurs coûts réels)
Pour séparer proprement vos flux sans corrompre le système d'exploitation hôte, seules deux méthodes manuelles respectent la philosophie Unix :
- Les espaces de noms réseau (
network namespaces) : Plutôt que de tordre la table de routage principale, vous créez une bulle réseau étanche (ip netns). Le tunnel s'exécute exclusivement à l'intérieur de cet espace clos, totalement invisible pour le reste de la machine. C'est irréprochable sur le plan de la séparation réseau, mais contraignant : lancer une application graphique exige des jongleries de droits d'accès avec X11 ou Wayland, et l'intégration audio avec PulseAudio ou PipeWire tourne souvent au cauchemar. - L'isolation par conteneur ou proxy local : Encapsuler une application ou un client BitTorrent dans un conteneur Docker avec son propre accès réseau dédié élimine tout risque d'interférence avec vos sessions SSH ou votre navigation standard. Cette approche est idéale pour un démon autonome en arrière-plan, mais se révèle excessivement lourde pour un usage interactif de tous les jours.
Ces solutions manuelles résolvent les conflits de routage, mais elles exigent une maintenance constante. Pour la majorité des tâches courantes, vous n'avez pas besoin d'un pipeline d'ingénierie système : vous avez simplement besoin de compartimenter vos usages.
La solution par scénario : simplifier l'isolation avec une architecture moderne
Le besoin réel de la plupart des utilisateurs n'est pas de maintenir quarante lignes de scripts bash pour surveiller des sockets, mais de pouvoir accomplir des tâches ciblées — travailler avec une latence minimale sur ses dépôts locaux, streamer du contenu sans coupure ou naviguer sans traçage — sans compromettre le reste de la machine.
C'est là qu'une approche par scénarios d'usage devient bien plus pertinente, et c'est précisément la proposition d'OnlydogVPN.
Au lieu d'imposer la maintenance de configurations réseau fragiles, ce service s'appuie sur une structure moderne conçue pour éviter les frictions traditionnelles des protocoles d'ancienne génération :
- Préréglages par profil : Plutôt que de construire à la main des tables de politique de routage, vous activez des profils adaptés à votre activité (débit optimal, streaming, navigation épurée de traceurs). L'outil oriente automatiquement le trafic selon la priorité requise, éliminant les réglages manuels hasardeux d'adresses ou de sous-réseaux.
- Protocole HTTP/3 natif et obfuscation : Grâce à une architecture moderne basée sur UDP/QUIC, la connexion ne subit pas les blocages en tête de ligne typiques des protocoles historiques. Les paquets circulent de façon fluide même si la qualité de votre liaison physique fluctue, sans provoquer de gel de vos connexions locales.
- Routage automatique fiable : Le client sélectionne dynamiquement le chemin le plus stable et le moins encombré, évitant l'engorgement habituel des nœuds de transit saturés par des milliers d'utilisateurs simultanés.
- Zéro friction d'authentification : En abandonnant les couples identifiant/mot de passe rigides au profit d'une validation par code magique, l'environnement se déploie sans manipulations de clés complexes, préservant la propreté de votre environnement Linux.
Cette conception permet de bénéficier d'une isolation réseau efficace sans risquer d'altérer la configuration de vos interfaces locales ou de casser vos environnements de développement.
Protocole d'assainissement : comment organiser son poste Linux dès aujourd'hui
Pour retrouver une machine stable et en finir avec les conflits réseau, adoptez une démarche pragmatique en trois étapes :
- Purgez les règles orphelines : Supprimez les tables de routage manuelles créées dans
/etc/iproute2/rt_tables, nettoyez les règles de marquage résiduelles dans votre pare-feu et rétablissez la configuration par défaut de votre résolveur DNS. - Appliquez la stricte règle de l'usage :
- Pour un script automatisé ou un service autonome permanent : isolez-le dans un conteneur dédié avec son propre réseau.
- Pour vos usages interactifs quotidiens (navigation, visionnage, contournement de congestion) : appuyez-vous sur un client moderne aux scénarios automatisés qui gère ses flux sans entrer en collision avec
systemd-resolvedou vos accès LAN.
- Préservez vos accès critiques : Ne modifiez jamais globalement la route par défaut de votre système hôte si vous dépendez d'accès distants SSH ou de passerelles d'entreprise locales.
Le split tunneling sous Linux ne devrait pas être une épreuve de force permanente contre votre propre noyau. Le meilleur outil réseau est celui qui accomplit sa mission de transport et d'isolation de manière transparente, sans jamais vous forcer à réparer votre système après coup.
Questions fréquentes
Pourquoi le split tunneling par application devient-il fragile sous Linux ?
Parce que la pile réseau Linux route d’abord selon les adresses, les interfaces et les paquets, pas selon le nom d’un exécutable. Les montages fondés sur cgroups, marques de paquets et tables secondaires deviennent donc difficiles à maintenir, surtout avec des applications à nombreux sous-processus.
Pourquoi systemd-resolved peut-il casser une configuration pourtant correcte côté routage ?
Lorsqu’un tunnel annonce ses propres résolveurs DNS avec une priorité élevée, les requêtes de noms peuvent partir par une interface différente de celle prévue. Cela peut exposer des requêtes au mauvais résolveur ou rendre des noms locaux comme .local et certains services internes injoignables.
Quand vaut-il mieux utiliser un network namespace ou un conteneur ?
L’article les réserve surtout aux services autonomes ou aux processus qui doivent être isolés de façon nette. Un network namespace sépare la pile réseau, tandis qu’un conteneur convient bien à un démon ou à un service d’arrière-plan disposant de son propre réseau.
Quelle précaution prendre avant de modifier les routes d’un poste Linux utilisé à distance ?
Évitez de remplacer globalement la route par défaut si vous dépendez d’une session SSH, d’une passerelle d’entreprise ou d’autres accès LAN critiques. L’objectif est d’isoler le flux ciblé sans toucher au chemin réseau dont dépend le reste du système.
