В FreeBSD 4.9 это было очень легко выполнить с помощью одной команды, такой как
jail [-u username] path hostname ip-number command
если путь был, /
то у вас была запущена та же программа, что и обычно, но все ее сетевое взаимодействие было ограничено использованием только указанного IP-адреса в качестве источника. Иногда это очень удобно.
Сейчас в Linux есть LXC, который очень похож на FreeBSD jail
(или зоны Solaris) - можете ли вы придумать подобный способ выполнения программы?
Ответы:
Запуск процесса внутри сетевого пространства имен, в котором виден только нужный IP-адрес, может привести к чему-то похожему. Например, предположил, что я хотел, чтобы localhost был доступен только для определенной программы.
Сначала я создаю пространство имен сети:
Пространства имен по умолчанию имеют петлевой интерфейс, так что теперь мне просто нужно поднять его:
Теперь я могу запустить программу с помощью,
ip netns exec limitednet
и она сможет видеть только петлевой интерфейс:Если бы я хотел ограничить его адресом, отличным от localhost, я мог бы добавить другие интерфейсы в пространство имен, используя:
Мне пришлось бы немного поэкспериментировать, чтобы понять, как добавить один IP-адрес в пространство имен в случае, если интерфейс может иметь более одного IP-адреса.
LWN статья о пространствах имен также полезно.
источник
jail
, я воспользуюсь им. ;)