%20%E5%88%B0%20VBox%20Bridge%20%E4%BE%86%E8%B3%93%E7%84%A1%E6%B3%95%E6%AD%A3%E5%B8%B8%E9%81%8B%E4%BD%9C.png)
我想要實現的設定如下。我們需要能夠從我們的公共 IP 存取 VBox 虛擬機器。我們目前有一個非常糟糕的 linksys 路由器,但我將其設定為將外部連接埠 8181 轉送到內部連接埠 192.168.1.230:8080 (Linux)。 192.168.1.230 是我的來賓虛擬機,目前在主機 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
所以我想通了。我覺得沒有考慮到這一點有點愚蠢,但虛擬機將預設網關設定為指向橋接適配器而不是路由器。更改後,我就可以從外部網路存取虛擬機器。