Iniciar o processo dentro de um namespace de rede que só pode ver o endereço IP desejado pode realizar algo semelhante. Por exemplo, suponha que eu só quisesse localhost disponível para um programa específico.
Primeiro, eu crio o namespace da rede:
ip netns add limitednet
Os namespaces têm uma interface de loopback por padrão, então, a seguir, eu só preciso trazê-la à tona:
sudo ip netns exec limitednet ip link set lo up
Agora, eu posso executar um programa usando ip netns exec limitednet
e ele só poderá ver a interface de loopback:
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
Se eu quisesse limitá-lo a um endereço diferente de localhost, poderia adicionar outras interfaces ao namespace usando:
ip link set DEVICE_NAME netns NAMESPACE
Eu precisaria experimentar um pouco mais para descobrir como adicionar um único endereço IP a um espaço para nome no caso em que uma interface possa ter mais de um endereço IP
O artigo LWN sobre namespaces também é útil.