Network Namespace sans docker

Imaginons le cas suivant:

  • Je suis connecté à plusieurs réseaux (wlan0, eth0, usb0).
  • Je veux choisir le réseau que je vais utiliser au lancement de mon application.
  • Mon application ne permet pas de choisir une interface quand plusieurs sont disponibles.

Je pourrais utiliser docker, ce dernier isole le réseau, cependant docker isole aussi plein d’autres choses, nécessite une image, et n’est pas adapté pour lancer des applications graphiques.

Nous allons donc utiliser le même mécanisme que docker, le namespacing, mais manuellement.

Le principe est assez simple:

On commence par créer un namespace réseau que l’on va nommer 4g

Ensuite on link une interface physique au namespace (on peut passer par une interface virtuelle pour des configurations plus complexes mais les exemples suivants seront en ligne de commande).

La mienne se nomme enp0s20u2 :

Une fois cette opération faite, l’interface n’est plus visible dans le namespace par défaut, on vérifie via :

Maintenant, il ne reste plus qu’à configurer l’interface classiquement. Il faut juste être bindé au namespace 4g, soit en préfixant chaque commande, soit en ouvrant un shell :

ou bien

à partir de là tout fonctionne mais nous n’avons pas configuré de DNS.

Petit soucis, les DNS se configurent depuis le fichier /etc/resolv.conf mais le système de namespace offre un système de “mapping” (default) /etc/netns/<ns>/resolv.conf -> (<ns>) /etc/resolv.conf

Donc on édite ce fichier (attention si on a choisi l’option shell pour setup l’interface, il faut le quitter…)

Maintenant le namespace est pleinement fonctionnel. On peut lancer firefox par exemple :

Petit problème, le programme est lancé en root. Pour y remédier, on passe par sudo :

Et le tour est joué.

Par |2018-06-05T22:36:52+00:00October 23rd, 2017|Blog, Hack|0 commentaire

À propos de l'auteur :

Passionné d'informatique depuis sa plus tendre enfance, et pratiquant la programmation en loisir depuis l'adolescence, Pierre rejoint une école d'ingénieur avec spécialisation en Système d'Information, option Big Data. Il a commencé sa carrière en laboratoire de recherche sur IoT, où il a pu étudier les systèmes distribués, tant sur un plan théorique que pratique. Pierre a ensuite rejoint Adaltas. Il est aujourd’hui un architecte solution Big Data & Hadoop et un Data Engineer avec plus de 4 ans d’expérience sur Hadoop et 5 ans d’expérience avec les systèmes distribués. Il a conçu, développé et opéré des workflows d’ingestion de données et des services temps réels tout en accompagnant ses clients dans la définition de leurs besoins et dans leur mise en application. Il est polyvalent sur les plateformes Big Data, de la planification, la conception et l’architecture du déploiement de clusters, l’administration, la maintenance ainsi que le prototypage et l’industrialisation d’application en collaboration avec les utilisateurs métiers, les analystes, les data scientists, les ingénieurs et les équipes d’exploitation. Il est aussi doté d’une forte expérience en tant que formateur (il donne régulièrement des cours et formations autour du Big Data pour diverses écoles ingénieur et master) facilitant le transfert de connaissance et la formation des équipes.

Laisser un commentaire