Вы могли использовать контейнеры Linux для создания среды без сетевых интерфейсов. Например, если я создаю конфигурационный файл как это:
# lxc.network.type = empty
И затем запустите оболочку как это:
# lxc-execute --name bash -f /tmp/lxc.conf /bin/bash
Я найду, что в этой оболочке нет никаких сетевых устройств, доступных кроме lo
:
# ifconfig -a
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Обратите внимание, что необходимо быть корнем для выполнения lxc-execute
, так то, чтобы заставлять это работать на wine
в Вашей настольной среде может быть хитрым.
Существует также, по-видимому, a sandbox
команда, доступная как часть SELinux. Вот пример с помощью песочницы для выполнения Firefox. Это требует, чтобы у Вас был включенный selinux.
Один из более легких путей состоял бы в том, чтобы запустить ВИННУЮ программу как другого пользователя и настроить netfilter для отбрасывания пакетов от того пользователя.
Например, где "wineusername" является Вашим Винным пользователем, и em1 является Вашим сетевым интерфейсом:
iptables -A OUTPUT -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A FORWARD -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A INPUT -o em1 -m owner --uid-owner wineusername -j DROP