我有一个专用网络虚拟机可以在我的Mac上进行开发。我希望我的Android设备能够与我的mac上的VM通信。目前我可以在我的Mac上访问我的Vagrantfile 10.10.10.10中定义的IP并且访问它很好但我无法通过我的手机在同一个wifi上访问它。
我需要做些什么才能让它在我的本地网络上可用并通过wifi看到我的手机?
这是我的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
答案 0 :(得分:14)
您正在使用只能由主机访问的专用网络IP(即使它们位于同一WLAN中,也不会对其他计算机可见)。
在您的情况下,最好的选择是使用公共网络(桥接),以便您的Android设备可以访问它。
在配置块中的Vagrant文件中添加config.vm.network "public_network"
。
BTW:默认NAT模式没问题,但您必须为要访问的每个服务设置正确的端口转发规则(例如SSH,HTTP,HTTPS等)。
答案 1 :(得分:1)
您只需确保端口转发规则未绑定到本地主机(127.0.0.1),即可从网络上的任何计算机轻松访问您的Vagrant。
如果你使用VirtualBox作为你的提供者,你可以动态地改变它,所以默认情况下它可以是私有的(这当然更安全),然后你可以在VirtualBox中更改它VM正在运行以将端口暴露给网络上的其他计算机(可能还有互联网,所以要小心!)
Settings | Network | Advanced | Port Forwarding
Host IP
设置为空字符串,然后单击“确定”。该端口现在可用于网络上的其他计算机,也可能是互联网,所以不要这样做,除非你肯定你打开端口就可以了!
当然要恢复它,只需执行相同的过程并再次将Host IP
设置为127.0.0.1。
答案 2 :(得分:0)
这可能只是端口转发/设置dmz的一个小问题。因为它在同一台机器上;你可以进行交互,因为它实际上是在同一个适配器上。但是,如果您尝试访问外部,则应尝试修改端口。
答案 3 :(得分:0)
对接受的答案略微扩展: 在您的vagrant文件中添加公共网络选项并重新加载后,以旧方式ssh进入,然后运行ifconfig以获取可用于从任何其他设备访问本地网络中的虚拟机的IP。
文档:https://www.vagrantup.com/docs/networking/public_network.html