
Я искал и искал, но не нашел способа сделать это. Ответы, которые я нашел, говорили о том, чтобы получить вторую сетевую карту и выделить ее для гостевой ОС Windows. Мой хост — Linux Mint 16.
Я понимаю, как указать сетевой адаптер для гостя, но как сделать так, чтобы у гостя Windows был доступ в Интернет, но он не мог подключиться ни к одному другому компьютеру в сети хоста?
Я хочу убедиться, что даже если IP-адрес гостя будет изменен вручную, он не сможет получить доступ к остальной части сети. Он должен видеть только себя (и, возможно, хост).
решение1
Это можно сделать в VirtualBox.
Вам необходимо выбрать соединение, которое позволяет использоватьiptablesдля управления пакетами. Таким образом, ни NAT, ни Bridge не подойдут, поскольку они не создают доступную пользователю сетевую карту. Вам следует использоватьСеть только для хоставместо этого на хосте создается доступный пользователю интерфейс с именем 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 соответственно. Если это не так, измените их соответствующим образом.
решение2
Короткий ответ: вы не сможете получить желаемую изоляцию только с помощью VirtualBox. Виртуальная машина всегда будет наследовать ту же доступность сети, что и хост (предполагая сетевые режимы Bridged или NAT).
В VirtualBox у вас есть четыре варианта сетевых подключений:
Мостовой: Разделяет соединение с одним из адаптеров хоста. Это было бы так, как если бы виртуальные машины и хост были подключены к одному коммутатору. Виртуальные машины могут получить доступ ко всему, к чему может получить доступ хост.
НАТ: VirtualBox размещает виртуальный брандмауэр NAT между адаптером хоста и виртуальной сетью. Виртуальные машины по-прежнему могут получить доступ ко всему, к чему имеет доступ хост.
Только хост: Виртуальная машина может взаимодействовать только с хост-компьютером.
Внутренний: Виртуальные машины находятся в изолированной сети и могут взаимодействовать только с другими виртуальными машинами в той же внутренней сети.
Ни один из этих вариантов не удовлетворяет вашим требованиям, поэтому в VirtualBox в одиночку это сделать невозможно. Как вы упомянули, добавление дополнительной сетевой карты обеспечивает физическое разделение, необходимое для создания нужного вам разделения.
решение3
Хорошо, я нашел отличное решение, для которого нужна только одна сетевая карта в ОС хоста.
- Назначьте гостевой ОС адаптер только для хоста (по умолчанию — vboxnet0) и убедитесь, что vboxnet0 использует DHCP.
- Установите прокси-сервер squid (sudo apt-get install squid3
- Откройте файл /etc/squid3/squid.conf и внесите следующие изменения: A. Найдите строку с «http_access deny all» и закомментируйте ее, поместив # в начале строки. B. Вставьте в файл следующие две строки:
- acl allcomputers источник 192.168.56.0/255.255.255.0
- http_access разрешить всем компьютерам
- Перезапустите службу squid 3, выполнив команду: sudo service squid3 restart
- В гостевой ОС убедитесь, что DHCP настроен для сетевой карты.
- Откройте «Свойства обозревателя» в Internet Explorer, перейдите на вкладку «Подключения», нажмите «Параметры локальной сети...», установите флажок «Прокси-сервер» и введите адрес 192.168.56.1 и порт 3128.
- Теперь на гостевом компьютере работает Интернет, но гость не видит локальную сеть.
Спасибо за помощь в этом посте. Он направил меня в правильном направлении, чтобы найти Squid3. Вся настройка здесь занимает 5-10 минут и очень проста.