W FreeBSD 4.9 było to bardzo łatwe do wykonania za pomocą jednego polecenia takiego jak
jail [-u username] path hostname ip-number command
jeśli ścieżka była /
uruchomiona tak samo jak zwykle, ale cała komunikacja sieciowa była ograniczona do używania tylko podanego adresu IP jako źródła. Czasami jest to bardzo przydatne.
Teraz w Linuksie jest LXC, który wygląda bardzo podobnie do jail
stref FreeBSD (lub stref Solaris) - czy możesz pomyśleć o podobnym sposobie wykonania programu?
Odpowiedzi:
Rozpoczęcie procesu w sieciowej przestrzeni nazw, która może zobaczyć tylko żądany adres IP, może osiągnąć coś podobnego. Na przykład, przypuszczalnie chciałem, aby localhost był dostępny tylko dla określonego programu.
Najpierw tworzę przestrzeń nazw sieci:
Przestrzenie nazw mają domyślnie interfejs sprzężenia zwrotnego, więc teraz muszę go tylko wywołać:
Teraz mogę uruchomić program za pomocą
ip netns exec limitednet
i będzie on mógł zobaczyć tylko interfejs pętli zwrotnej:Gdybym chciał ograniczyć go do adresu innego niż localhost, mógłbym dodać inne interfejsy do przestrzeni nazw, używając:
Musiałbym trochę więcej eksperymentować, aby dowiedzieć się, jak dodać pojedynczy adres IP do przestrzeni nazw w przypadku, gdy interfejs może mieć więcej niż jeden adres IP
Artykuł LWN na przestrzeni nazw jest również pomocne.
źródło
jail
, skorzystam z niego. ;)