Это можно сделать в VirtualBox.
Вы должны выбрать соединение, которое позволяет использовать iptables для управления пакетами. Таким образом, ни NAT, ни Bridge не подойдут, потому что они не создают доступную для пользователя NIC. Вместо этого следует использовать сеть только для хоста , которая создает на хосте доступный для пользователя интерфейс с именем vboxnet0.
Чтобы настроить его, выберите «Файл» -> «Настройки» -> «Сеть» -> «Только узел» - «Сеть» -> «Плюс», затем «Отвертка» -> «DHCP-сервер», включите DHCP-сервер. Сохраните настройки, запустите ВМ.
Теперь в гостевой системе вы должны указать хост в качестве шлюза: IP-адрес хоста по умолчанию - 192.168.56.1. Используйте Google, чтобы найти инструкции о том, как это сделать в Windows. И, возможно, вам придется настроить DNS-серверы.
На хосте все эти инструкции как sudo:
1) Включить IP-пересылку:
echo "1" > /proc/sys/net/ipv4/ip_forward
2) Выполните следующие правила iptables :
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -A FORWARD -m iprange --dst-range 192.168.1.2-192.168.1.254 -j DROP
iptables -I FORWARD -m iprange --src-range 192.168.1.2-192.168.1.254 -j DROP
Первое правило разрешает доступ к Интернету виртуальной машины; вторая пара запрещает ВМ доступ к локальной сети, за исключением, конечно, маршрутизатора и широковещательного адреса.
Приведенные выше правила предполагают, что хост подключен через eth0, ваша локальная сеть 192.168.1.0/24, а маршрутизатор и широковещательный адрес - 192.168.1.1 и 192.168.1.255 соответственно. Если это не так, измените их соответственно.