Então eu percebi isso. Eu me sinto meio idiota por não pensar nisso, mas a VM configurou o gateway padrão para apontar para o adaptador de bridge e não para o roteador. Depois que eu mudei, consegui acessar a VM pela rede externa.
A configuração que estou tentando alcançar é a seguinte. Precisamos ser capazes de acessar uma VM VBox do nosso IP público. Atualmente, temos um roteador linksys muito ruim, mas eu o configurei para encaminhar a porta externa 8181 para a porta interna 192.168.1.230:8080 (Linux). 192.168.1.230 é minha VM guest atualmente em execução no host 192.168.1.6 (Linux).
Quando eu aponto meu navegador, ou wget da rede interna em 192.168.1.230:8080, para a VM convidada, ele funciona perfeitamente. Eu vejo a página da Web ou a solicitação do wget voltar.
Quando eu aponto para public_ip: 8181, isso não funciona. Ele carrega para sempre e wget trava sem resposta de erro. Um tcpdump no guest não mostra nenhum pacote sendo recebido. No entanto, se eu alterar o endereço de encaminhamento do intervalo de portas do convidado para o host, ele funcionará (eu fiz um servidor netcat rápido no host).
Tanto o host quanto o iptables de convidado estão configurados para aceitar todos em todas as cadeias. Então, eu estou querendo saber se o fato de que os pacotes estão vindo do roteador está sendo negado de alguma forma. Qualquer conselho ou ajuda seria muito apreciado. Configuração do Vagrant abaixo.
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
Tags networking virtualbox nat linux