En FreeBSD 4.9 fue muy fácil de lograr con solo un comando como
jail [-u username] path hostname ip-number command
si la ruta fue /
que tenía ejecutando el mismo programa de siempre, pero toda su comunicación de red estaba restringida a usar solo la dirección IP dada como fuente. A veces es muy útil.
Ahora en Linux hay LXC, que se parece mucho a FreeBSD jail
(o las zonas de Solaris). ¿Puedes pensar en una forma similar de ejecutar un programa?
Respuestas:
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:
Los espacios de nombres tienen una interfaz de bucle invertido por defecto, así que a continuación solo necesito mostrarlo:
Ahora, puedo ejecutar un programa usando
ip netns exec limitednet
y solo podrá ver la interfaz de bucle invertido:Si quisiera limitarlo a una dirección que no sea localhost, podría agregar otras interfaces al espacio de nombres usando:
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.
fuente
jail
, lo usaré. ;)