Как заставить Genymotion VM соблюдать настройки NAT и видеть сайты с именами хостов?

Я хочу получить доступ к именованному виртуальному хосту на своем Mac из браузера Android, работающего на Genymotion. Genymotion — это оболочка для VirtualBox, поэтому само собой разумеется, что те же флаги и функции, которые доступны для VirtualBox, должны быть доступны для виртуальных машин Genymotion.

Первоначально (используя виртуальную машину Ubuntu для тестирования) я получил это для работы с сетевым подключением NAT, с оговоркой, что мне пришлось использовать псевдоним IP-адреса, отличного от 127.0.0.1, для моей локальной сети (потому что я полагаю, что в противном случае имя хоста будет разрешаться на 127.0.0.1 на виртуальной машине, где сайта нет).
sudo ifconfig lo0 alias 192.168.0.100 up

И с использованием следующего, который заставляет хост разрешать адреса для виртуальной машины (и, таким образом, использовать файл hosts хоста):
VBoxManage modifyvm "Nexus 5 - Android 5" --natdnsproxy1 on VBoxManage modifyvm "Nexus 5 - Android 5" --natdnshostresolver1 on

Это сработало для виртуальной машины Ubuntu, но не для виртуальной машины Genymotion. Далее я попробовал это:

VBoxManage setextradata "Nexus 5 - Android 5" "VBoxInternal/Devices/virtio-net/1/LUN#0/Config/HostResolverMappings/ local-sites/HostIP" 192.168.0.100 VBoxManage setextradata "Nexus 5 - Android 5" "VBoxInternal/Devices/virtio-net/1/LUN#0/Config/HostResolverMappings/ local-sites/HostNamePattern" "*.local"

До сих пор нет радости. Он просто не разрешает DNS. Я отредактировал файл .vbox вручную, чтобы быть уверенным (я не уверен, что изменение настроек с помощью командной строки влияет на виртуальные машины Genymotion), но ничего.


person Kevin Teljeur    schedule 11.12.2014    source источник


Ответы (1)


Ну, да. Это работает и работает хорошо, и вот причина, по которой это не для меня. Я прокрутил файл вниз, чтобы найти соответствующий раздел, но на самом деле я редактировал настройки моментального снимка, а не настройки текущего устройства.

Внутри узла <Hardware version="n">, где n – номер версии, найдите Adapter slot="1" и измените раздел NAT, чтобы он выглядел следующим образом:
<NAT> <DNS pass-domain="true" use-proxy="true" use-host-resolver="true"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT>

Далее вы можете добавить правила в разделы <GuestProperties>, что-то вроде (например):
<ExtraDataItem name="VBoxInternal/Devices/virtio-net/1/LUN#0/Config/HostResolverMappings/ local-sites/HostIP" value="192.168.0.100"/> <ExtraDataItem name="VBoxInternal/Devices/virtio-net/1/LUN#0/Config/HostResolverMappings/ local-sites/HostNamePattern" value="*.local"/>

Мне не нужны были правила после того, как я заработал часть хоста NAT, но это может быть полезно в других ситуациях.

Во всяком случае, я видел несколько вопросов о NAT от VirtualBox (или Genymotion) к разрешению NAT хоста, так что, надеюсь, это кому-то поможет. После всего этого было очень легко начать работать. Вероятно, есть какие-то другие перестановки, и если у кого-то есть дополнительные указатели, которые могут кому-то помочь, добавьте их.

person Kevin Teljeur    schedule 11.12.2014