
У меня есть гостевая система Oracle Linux, на которой запущен веб-сервер в VirtualBox на хосте Windows 7. Мне нужно настроить сеть, чтобы я мог делать 3 вещи:
- хост может подключиться к гостю через браузер и ssh
- гость может общаться с другими серверами во внутренней сети через VPN хоста
- гость может получить доступ к внешнему интернету
Я прочитал несколько ответов и попробовал несколько конфигураций, и вот что происходит:
Мостовой
- хост не может связаться с гостем
- гость не может видеть через VPN
- гость может получить доступ к интернету
НАТ
- хост не может связаться с гостем
- гость может видеть через VPN
- гость не может получить доступ к интернету
Только для хоста
все 3 условия не выполняются.
NAT-сеть
- хост не может связаться с гостем
- гость может видеть через VPN
- гость не может получить доступ к интернету
Я также должен отметить, что иногда хост подключается через VPN, а иногда он просто напрямую подключается к корпоративной сети. Когда он подключается напрямую, мостовой адаптер удовлетворяет всем 3 условиям. В идеале должна быть конфигурация, которая удовлетворяет всем 3 условиям, независимо от того, есть ли VPN или прямое подключение.
решение1
У меня былточныйта же проблема, и я довел ее до решения, поэтому я с радостью объясню проблему и решение подробно.
Без использования VPN
Важно понимать, какая конфигурация необходима для удовлетворения ваших требований.безс использованием VPN. Кроме того, эта информация предполагает, что ни на хосте, ни на госте не вмешивается программный брандмауэр.
Без VPN эта проблема обычно решается путем создания двух сетевых адаптеров в конфигурации виртуальной машины.
Первый адаптер должен быть установлен в NAT
режим, позволяющий гостю получать доступ к сетевым ресурсам (включая Интернет) через сетевой интерфейс хоста.
Второй адаптер должен быть настроен на Host-only
, что обеспечивает двунаправленную связь между хостом и гостем.
Этот адаптер немного сложнее в настройке, чем первый, поскольку для настройки адаптера, работающего только на хосте, требуется изменить глобальные сетевые настройки VirtualBox (примечание: для этого требуются права администратора).
В VirtualBox перейдите в File -> Preferences -> Network
. Щелкните Host-only Networks
вкладку и щелкните маленький +
значок, чтобы добавить новый адаптер. Вам будет предложено повысить разрешения VirtualBox.
Заполнение Adapter
вкладки обязательно; она должна выглядеть примерно так (не обращайте внимания на адаптер с меткой #2
; он используется для чего-то постороннего):
Значения на DHCP
вкладке сервера необязательны. Если вы собираетесь жестко закодировать IP-адрес для этого адаптера в сетевой конфигурации гостя, то эти значения не нужны. Если же вы собираетесь использовать DHCP, то значения могут выглядеть примерно так:
Последний шаг в настройке VirtualBox — вернуться в сетевую конфигурацию виртуальной машины и добавить второй адаптер, который ссылается на только что созданный нами адаптер только для хоста:
Теперь в гостевой операционной системе необходимо настроить сеть для использования этих двух сетевых интерфейсов.
В Debian или Ubuntu GNU/Linux конфигурация так же проста, как и модификация, /etc/network/interfaces
которая выглядит следующим образом:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
(пуристы могут предпочесть использовать /etc/network/interfaces.d
вместо этого каталог, но это выходит за рамки данного объяснения)
Перезапустите сетевые службы гостя или, проще говоря, перезапустите всю гостевую виртуальную машину, и все должно «просто работать».
На этом этапе можно будет выполнить ping гостевой виртуальной машины 192.168.56.101
и получить ответ (при условии, что программный брандмауэр не мешает).
Аналогично, можно будет пинговать хост в 10.0.2.2
. Этот IP-адрес, похоже, "жестко закодирован" в реализации NAT VirtualBox или, по крайней мере, указан через какую-то неочевидную директиву конфигурации, и мало информации о его происхождении. Но, увы, "он просто работает".
При такой конфигурации все три условия, изложенные в вашем вопросе, выполняются.
Ввод: VPN
Но вот в чем загвоздка. Внедрение VPN вызывает серьезную проблему (ну, в зависимости от конкретного VPN и его конфигурации).
Современные VPN способныРаздельное туннелирование, который требуется для вышеупомянутой конфигурации VirtualBox для работы в соответствии с вашими тремя требованиями. По (хорошим) причинам безопасности раздельное туннелирование часто отключается, и это как раз проблема в вашем случае (и в моем).
При подключении к VPN клиент VPN (в моем случае это Cisco AnyConnect Secure Mobility Client, 3.1.02026) проверяет таблицы маршрутизации хост-компьютера, запоминает их, а затем заполняет их значениями, которые обычно поступают из какого-то централизованно управляемого расположения (т. е. даже имея привилегии локального администратора, невозможно переопределить настройки).
Вы можете самостоятельно изучить таблицы маршрутизации, открыв command.exe
(в Windows):
C:\>route print
Перед подключением к VPN таблица маршрутизации содержит важные записи, которые позволяют этой конфигурации VirtualBox функционировать правильно. Подключение к VPN приводит к удалению этих записей, что делает невозможным взаимодействие между хостом и гостем.
(Есть много других записей, которые я здесь опустил, поскольку они не имеют отношения к основной причине такого поведения.)
Перед подключением к VPN:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
После подключения к VPN:
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
VPN-клиент удаляет следующие строки:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
Без этих последних двух записей хост и гость не смогут взаимодействовать, и именно это и предполагается, когда раздельное туннелирование отключено в конфигурации VPN.
Обычно эти две команды восстанавливают эти маршруты:
C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266
Но VPN-клиент остается бдительным: он перехватывает попытки изменить таблицу маршрутизации. Мой клиент, похоже, разрешает вторую запись, но не первую. (И он может перекрывать обе на какой-то периодической основе; я не проверял это.)
ЕслиВаша конкретная VPN и сопутствующая ей конфигурация позволяют включить раздельное туннелирование, обычно оно включается следующим образом:
При отключении от VPN хорошо себя ведущие VPN-клиенты восстановят таблицы маршрутизации, которые были на месте до подключения. Мой VPN-клиент, похоже, делает это надежно, что выгодно, поскольку это означает, что гостевую виртуальную машину не нужно перезапускать, когда я подключаюсь к VPN или отключаюсь от нее. В таких случаях вторичный адаптер виртуальной машины сбрасывается, но он автоматически и прозрачно повторно получает свой IP-адрес, восстанавливая связь между хостом и гостем почти немедленно. А еще лучше, монтирования NFS между хостом и гостем (я использую монтирования CIFS) остаются подключенными во время операций подключения/отключения VPN.
В маловероятном случае, если ваша VPN поддерживает раздельное туннелирование, ее можно просто включить. В этом случае мне бы хотелось услышать от вас, действительно ли «все просто работает».
решение2
Как использовать VPN-сервер Windows на гостевой машине Linux
1-) Откройте настройки VPN. Укажите несколько локальных номеров портов.
2-) Откройте настройки вашей виртуальной машины. Убедитесь, что сеть подключена к NAT. Затем нажмите «advenced» и «port fowarding»
3-) Нажмите, чтобы добавить правило, и введите те же номера портов, которые вы указали в своем VPN.
4-) Запустите виртуальную машину. Перейдите в настройки сети. Выберите ручной режим и введите 10.0.2.2 (шлюз NAT VirtualBox по умолчанию) в IP-адресе и портах, которые мы указали ранее.
5-) Откройте Firefox, перейдите на whoer.net и проверьте, работает ли ваш VPN. ВСЕ ГОТОВО