Доступ к частной виртуальной машине с другого компьютера через Wi-Fi
У меня есть частная виртуальная сеть для разработки на моем Mac. Я хотел бы, чтобы мое устройство Android могло общаться с VM на моем Mac. В настоящее время я могу посетить IP, определенный в моем Vagrantfile, 10.10.10.10, на моем Mac и получить доступ к нему просто отлично, но я не могу получить к нему доступ через свой телефон на том же Wi-Fi.
Что мне нужно сделать, чтобы сделать его доступным через мою локальную сеть и видимым для моего телефона через Wi-Fi?
Здесь мой Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.network :private_network, ip: "10.10.10.10"
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 1024]
v.customize ["modifyvm", :id, "--name", "PHPBoxWith54"]
end
nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder "./", "/var/www", id: "vagrant-root" , :nfs => nfs_setting
config.vm.provision :shell, :inline =>
"if [[ ! -f /apt-get-run ]]; then sudo apt-get update && sudo touch /apt-get-run; fi"
config.vm.provision :shell, :inline => 'echo -e "mysql_root_password=root
controluser_password=awesome" > /etc/phpmyadmin.facts;'
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "manifests"
puppet.module_path = "modules"
puppet.options = ['--verbose']
end
end
Ответы
Ответ 1
Вы используете IP-адрес частной сети, доступ к которому доступен только хост-компьютеру (он не отображается на других компьютерах, даже если они находятся в той же WLAN).
В вашем случае лучше всего использовать Public Network (мостовое соединение), чтобы ваше Android-устройство могло получить к нему доступ.
добавить config.vm.network "public_network"
в ваш файл бродяг в блоке конфигурации.
BTW: режим NAT по умолчанию прекрасен, но вам необходимо установить правильные правила переадресации портов для каждой службы, к которой вы хотите получить доступ (например, SSH, HTTP, HTTPS и т.д.).
Ответ 2
Вы можете легко получить доступ к своему бродягу с любого компьютера в своей сети, просто убедившись, что правила переадресации портов не привязаны к вашему localhost (127.0.0.1).
Если вы используете VirtualBox в качестве своего провайдера, вы можете изменить его на лету, так что вы можете иметь его по умолчанию (что, конечно, более безопасно), а затем вы можете изменить его в VirtualBox, пока ваш VM работает, чтобы открыть порт для других компьютеров в вашей сети (и, возможно, в Интернете, поэтому будьте осторожны!)
Чтобы открыть порт:
- Запустить виртуальную машину
- Выберите свою виртуальную машину в левой панели.
- Нажмите
Settings | Network | Advanced | Port Forwarding
- Найдите порт, который вы хотите открыть в списке портов.
- Установите
Host IP
в пустую строку и нажмите "ОК".
Теперь порт доступен для других компьютеров в вашей сети и, возможно, в Интернете, поэтому не делайте этого, если вы не уверены, что с ним открывается доступ!
Конечно, чтобы вернуть его, просто выполните тот же процесс и снова установите Host IP
в 127.0.0.1.
Ответ 3
Это может быть лишь небольшая проблема с переадресацией портов/установкой dmz. Так как это на той же машине; вы можете взаимодействовать с ним физически на одном адаптере. Однако, если вы пытаетесь получить доступ за пределами этого, вы должны попробовать переделать порты.
Ответ 4
Небольшое расширение принятого ответа:
после добавления опции общественной сети в ваш бродячий файл и перезагрузки, ssh в нее по-старому, а затем запустите ifconfig, чтобы получить IP-адрес, который вы можете использовать для доступа к vm в вашей локальной сети с любого другого устройства.
Документы: https://www.vagrantup.com/docs/networking/public_network.html