通过wifi从其他计算机访问私有VM

时间:2013-09-08 21:55:03

标签: vagrant puppet

我有一个专用网络虚拟机可以在我的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

4 个答案:

答案 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正在运行以将端口暴露给网络上的其他计算机(可能还有互联网,所以要小心!)

公开端口:

  • 启动Virtual Box
  • 在左侧栏中选择您的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