Iniciar el proceso dentro de un espacio de nombres de red que solo puede ver la dirección IP deseada puede lograr algo similar. Por ejemplo, supuse que solo quería localhost disponible para un programa en particular.
Primero, creo el espacio de nombres de red:
ip netns add limitednet
Los espacios de nombres tienen una interfaz de bucle invertido por defecto, así que a continuación solo necesito mostrarlo:
sudo ip netns exec limitednet ip link set lo up
Ahora, puedo ejecutar un programa usando ip netns exec limitednet
y solo podrá ver la interfaz de bucle invertido:
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 quisiera limitarlo a una dirección que no sea localhost, podría agregar otras interfaces al espacio de nombres usando:
ip link set DEVICE_NAME netns NAMESPACE
Tendría que experimentar un poco más para descubrir cómo agregar una sola dirección IP en un espacio de nombres en el caso de que una interfaz pueda tener más de una dirección IP
El artículo LWN sobre espacios de nombres también es útil.