我有一个带有提供者VirtualBox的流浪汉。我需要通过网络访问VM上的端口。不应该访问VM抛出网络。 我在我的Vagrantfile中设置了一个专用网络并转发了有问题的端口。现在我可以从主机内到达端口。我想要的是访问网络中其他机器上的端口。这不起作用。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box_check_update = false
config.vm.box = "trusty64"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.vm.network "private_network", type:"dhcp"
config.vm.network "forwarded_port", guest: 4242, host: 4242
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.provider "virtualbox" do |vb|
vb.cpus = 4
end
end
在主机打开时,URL 127.0.0.1:4242允许我访问在那里运行的服务。
我想要的是使用主机公共IP通过网络访问服务。
答案 0 :(得分:0)
当我们在私有网络中使用Vagrant的端口转发时,我们在主机上有以下绑定:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 5463/VBoxHeadless
tcp 0 0 0.0.0.0:4242 0.0.0.0:* LISTEN 5463/VBoxHeadless
端口限制为0.0.0.0
,即我们可以在任何主机的IP地址上访问它们,而不仅仅是127.0.0.1
。
因此,您可以通过VM所在主机的网络IP从任何网络主机访问VM上的端口,例如192.168.0.106:4242
。
在此之前,请确保主机上的防火墙规则允许从外部网络访问端口3000
和4242
。