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:
ip netns add limitednet
Les espaces de noms ont une interface de bouclage par défaut, donc j'ai juste besoin de la mettre en place:
sudo ip netns exec limitednet ip link set lo up
Maintenant, je peux exécuter un programme en utilisant ip netns exec limitednet
et il ne pourra voir que l'interface de bouclage:
sudo ip netns exec limitednet ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
Si je voulais le limiter à une adresse autre que localhost, je pourrais ajouter d'autres interfaces dans l'espace de noms en utilisant:
ip link set DEVICE_NAME netns NAMESPACE
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.