Linux et Windows – Comment prioriser une route ou une interface pour accéder à Internet ?

I. Présentation

Cet article explore des stratégies de routage pratiques, en mettant l'accent sur l'utilisation des métriques pour prioriser les routes/interfaces, que ce soit sur Windows ou Linux. Cette situation se présente typiquement lorsque vous êtes en déplacement professionnel ou à l'école et que vous ne "maitrisez pas" le réseau sur lequel vous êtes connecté.

II. Mise en situation

Imaginez que vous êtes actuellement connecté à un réseau (Réseau 1) qui limite votre connexion à Internet en utilisant des filtres d'URL et un proxy.

Pour contourner ces restrictions, vous avez décidé de créer un partage de connexion avec votre téléphone, établissant ainsi une connexion Wifi à un deuxième réseau (Réseau 2). Maintenant, vous êtes connecté simultanément aux deux réseaux, avec le réseau filaire comme connexion principale (Réseau 1) et le wifi comme connexion secondaire (Réseau 2).

Cependant, le trafic Internet ne s'achemine pas correctement vers la bonne interface réseau, en raison de la configuration de votre interface réseau principale (Réseau 1). Cela vous empêche d'accéder à certains sites. Malheureusement, vous ne pouvez pas vous déconnecter de l'un des réseaux, car cela perturberait vos activités.

L'objectif final est de maintenir la connexion aux deux réseaux, vous permettant ainsi d'accéder à vos ressources internes tout en ayant une connectivité Internet sans restriction.

III. Métriques

Oh ce n'est pas un gros mot, mais en fonction de votre activité actuelle, il se pourrait que n'ayez pas utilisé ce terme depuis vos bon vieux cours de réseau (coucou les devs). Pour rappel : la métrique est un moyen pratique de donner des priorités à différentes routes et de contrôler le chemin que le trafic réseau devrait prendre en cas de multiples options. Cela peut être particulièrement utile dans des configurations avancées où plusieurs interfaces réseau sont utilisées et où il est nécessaire de déterminer comment le trafic doit être acheminé.

  1. Métrique inférieure = Priorité supérieure : une route avec une métrique plus basse est considérée comme meilleure. Par exemple, une route avec une métrique de 5 serait préférée à une route avec une métrique de 10.
  2. Routes par défaut : lorsque vous définissez une route par défaut (route utilisée pour tout trafic ne correspondant à aucune autre route), vous pouvez spécifier une métrique. Cela signifie que si vous avez plusieurs routes par défaut, le système choisira celle avec la métrique la plus basse.

OK, donc que ça soit sur Linux ou Windows, cela devrait fonctionner de la même manière ? Et bah non ! Sinon, ce serait trop simple... Je détallerais ce point dans la section de cet article dédiée à Windows.

Dans chacun des cas présentés ci-dessous, je suis connecté à chaque fois aux deux mêmes réseaux :

  • Réseau 1 : 192.168.1.0/24 - Home sweet home
  • Réseau 2 : 192.168.157.0/26 - Partage de connexion

A. Pour Linux

En premier, il convient de lister les routes par défaut actuellement actives sur votre système. Retenez cela :

  • Une route par défaut par réseau
ip route | grep default # ou la vrai "commande" ip route show default

Dans mon cas, j'ai deux routes par défaut : une route pour chacun de mes réseaux.

Je vais vérifier quelle est mon adresse IP de sortie en ce qui concerne le trafic qui sort sur la route par défaut (celle qui a une métrique plus basse : 192.168.1.1 et qui préempte donc la deuxième route par défaut).

curl -4 icanhazip.com

Bien, maintenant que j'ai constaté que l'IPv4 publique est : .117, je vais réaliser les modifications nécessaires afin de permettre à ma seconde route par défaut (default via 192.168.51.157 ...) d'être priorisé. Pour cela, je vais dans un premier temps supprimer cette route par défaut :

sudo est nécessaire pour modifier une route sur Linux en raison de préoccupations de sécurité, car cela accorde temporairement des privilèges admins, assurant que seuls les utilisateurs autorisés peuvent effectuer des changements système qui affectent la connectivité et le routage des données.

sudo ip route del default via 192.168.51.157 dev wlx7cc2c613b1c0 proto dhcp metric 601

Puis l'ajouter de nouveau, mais cette fois-ci avec une métrique plus basse. Ici, la métrique sera de 400. Peu importe le nombre tant que celui-ci est inférieur à la métrique de la route par défaut prédominante.

sudo ip route add default via 192.168.51.157 dev wlx7cc2c613b1c0 proto dhcp metric 400

Après avoir effectué cette opération, vérifiez si les paramètres ont bien été pris en compte.

ip route | grep default 

Pour vous assurer que le trafic réseau "sortant" vers internet a été réaiguillé, vous pouvez de nouveau :

  • Utiliser tracepath, pour vérifier que la première passerelle a changé par rapport à la première exécution de la commande
  • Vérifier si votre adresse IP publique à été changé
tracepath -4 -b t.co
curl -4 icanhazip.com

B. Pour Windows

Les variations dans la gestion de la métrique des routes et des interfaces entre Windows et Linux peuvent être expliquées par les disparités inhérentes à la gestion du réseau propre à chaque système d'exploitation.

  • Sur Linux, la métrique d'une route spécifie la priorité de la route par rapport à d'autres routes pour une destination donnée. Si vous ajustez la métrique de route, cela affecte toutes les routes associées à cette destination, quelle que soit l'interface. Linux traite chaque route indépendamment de l'interface. En gros, il se contrefiche de l'interface : il préfère regarder uniquement sa table de routage.
  • En revanche, sur Windows, la métrique de route (RouteMetric) et la métrique d'interface (IfMetric) jouent des rôles distincts dans la sélection de la route par défaut. La métrique de route affecte la priorité des routes vers une destination donnée, tandis que la métrique d'interface influence la sélection de l'interface pour atteindre cette destination. Même si une route par défaut avec une métrique plus basse est détectée sur une interface réseau "2", c'est quand même l'interface réseau "1" qui est priorisé si et seulement si sa métrique est strictement inférieure à la métrique de l'interface réseau "2".

Personnellement, je préfère l'approche de Linux, même si la conception de Windows peut permettre une gestion plus fine et plus spécifique en ajustant la métrique de l'interface en plus de la métrique de la route par défaut. Cela offre une flexibilité supplémentaire pour prioriser non seulement la destination, mais aussi l'interface spécifique (canal de communication physique) pour atteindre cette destination.

On commence donc par lister les routes par défaut comme cela :

Get-NetRoute -DestinationPrefix 0.0.0.0/0 

Comme pour Linux, la nécessité d'être administrateur local pour modifier la table de routage sous Windows découle de considérations de sécurité. Les actions ci-après seront toutes exécutées dans un terminal PowerShell privilégié pour une question de pratique, même si certaines commandes comme Get-NetRoute ne nécessitent pas de tels privilèges.

Actuellement, on constate avec la commande tracert (équivalent de traceroute/tracepath sous Linux) que le trafic est acheminé via l'interface "4" (ifIndex) en utilisant la passerelle suivante : 192.168.1.1

tracert -4 t.co

Pour confirmer mes dires, je vais dans un premier temps uniquement baisser la métrique de la route par défaut. Je vais fixer cette valeur à 30.

Set-NetRoute -DestinationPrefix 0.0.0.0/0 -RouteMetric 30 -InterfaceIndex 26 
Get-NetRoute -DestinationPrefix 0.0.0.0/0 

Nonobstant les changements effectués, notre route par défaut n'est toujours pas prioritaire du fait que la métrique de l'interface "4" est toujours plus élevé.

Très bien. Il faut donc changer la métrique de l'interface réseau "26".

Set-NetIPInterface -InterfaceIndex 26 -InterfaceMetric 25
Get-NetRoute -DestinationPrefix 0.0.0.0/0 

En effectuant de nouveau un tracert, je constate que cette fois-ci, je passe non plus par la passerelle 192.168.1.1 de mon interface réseau "4", mais par la gateway 192.168.51.157 de mon interface réseau étiquetée "26" !

Vous constaterez que j'ai eu une microcoupure internet lors du tracert, d'où les 6 messages "Délai d'attente dépassé"

IV. Conclusion

J'espère que cet article vous aura plu ! Avec toutes ces explications, plus d'excuses pour repousser cette tâche, vous êtes prêt à gérer l'aiguillage de vos routes par défaut sans craindre de perturber la connectivité de votre réseau. Vous pourrez donc continuer à travailler dans un environnement "contrôlé" tout en naviguant librement sur internet pour effectuer vos diverses recherches.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"

Nombre de posts de cet auteur : 24.Voir tous les posts

3 thoughts on “Linux et Windows – Comment prioriser une route ou une interface pour accéder à Internet ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.