No FreeBSD 4.9, era muito fácil realizar com apenas um único comando como
jail [-u username] path hostname ip-number command
se o caminho estivesse, /
você executaria exatamente o mesmo programa de sempre, mas toda a sua comunicação de rede estava restrita a usar apenas o endereço IP fornecido como fonte. Às vezes é muito útil.
Agora, no Linux, existe o LXC, que se parece muito com o FreeBSD jail
(ou com as zonas do Solaris) - você consegue pensar em uma maneira semelhante de executar um programa?
Respostas:
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:
Os namespaces têm uma interface de loopback por padrão, então, a seguir, eu só preciso trazê-la à tona:
Agora, eu posso executar um programa usando
ip netns exec limitednet
e ele só poderá ver a interface de loopback:Se eu quisesse limitá-lo a um endereço diferente de localhost, poderia adicionar outras interfaces ao namespace usando:
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.
fonte
jail
, eu vou usá-lo. ;)