Dans FreeBSD 4.9, il était très facile à réaliser avec une seule commande comme
jail [-u username] path hostname ip-number command
si le chemin était, /
vous utilisiez le même programme que d'habitude, mais toutes ses communications réseau étaient limitées à utiliser uniquement l'adresse IP donnée comme source. Parfois, c'est très pratique.
Maintenant, sous Linux, il y a LXC, qui ressemble beaucoup aux jail
zones de FreeBSD (ou de Solaris) - pouvez-vous penser à une manière similaire d'exécuter un programme?
Réponses:
Le démarrage du processus dans un espace de noms réseau qui ne peut voir que l'adresse IP souhaitée peut accomplir quelque chose de similaire. Par exemple, je supposais que je ne voulais que localhost disponible pour un programme particulier.
Tout d'abord, je crée l'espace de noms du réseau:
Les espaces de noms ont une interface de bouclage par défaut, donc j'ai juste besoin de la mettre en place:
Maintenant, je peux exécuter un programme en utilisant
ip netns exec limitednet
et il ne pourra voir que l'interface de bouclage:Si je voulais le limiter à une adresse autre que localhost, je pourrais ajouter d'autres interfaces dans l'espace de noms en utilisant:
Je devrais expérimenter un peu plus pour comprendre comment ajouter une seule adresse IP dans un espace de noms dans le cas où une interface pourrait avoir plus d'une adresse IP
L' article de LWN sur les espaces de noms est également utile.
la source
jail
, je vais l'utiliser. ;)