我尝试实现的设置如下。我们需要能够从我们的公共 IP 访问 VBox VM。我们目前有一个非常糟糕的 Linksys 路由器,但我将其设置为将外部端口 8181 转发到内部端口 192.168.1.230:8080(Linux)。192.168.1.230 是我的客户 VM,目前在主机 192.168.1.6(Linux)上运行。
当我将浏览器或从内部网络 192.168.1.230:8080 的 wget 指向客户虚拟机时,一切运行正常。我看到网页或 wget 请求返回。
当我指向 public_ip:8181 时,它不起作用。它永远加载,wget 挂起,没有错误响应。客户机上的 tcpdump 显示没有数据包传入。但是,如果我将端口范围转发地址从客户机更改为主机,它就可以工作(我在主机上快速执行了 netcat 服务器)。
主机和客户机 iptables 都设置为接受所有链上的所有内容。所以我想知道数据包来自路由器的事实是否以某种方式被拒绝。任何建议或帮助都将不胜感激。Vagrant 配置如下。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "odlVM" do |odlVM|
odlVM.vm.box = "ubuntu/trusty64"
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
v.customize ["modifyvm", :id, "--memory", "2048"]
end
odlVM.vm.hostname = "odl-vm"
odlVM.vm.network "public_network", bridge: "enp5s0f1"
odlVM.vm.provision :shell, inline: $bootstrap_ubuntu
odlVM.vm.provision :shell, inline: $install_java
odlVM.vm.provision :shell, inline: $download_odl
end
end
答案1
所以我搞明白了。我觉得自己有点愚蠢,没有想到这一点,但虚拟机设置了默认网关指向桥接适配器而不是路由器。一旦我更改了它,我就能够从外部网络访问虚拟机了。