O redirecionamento de porta NAT da porta privilegiada falha ao usar o Vagrant com o VirtualBox

1

Desejo oferecer suporte à conexão ao convidado em portas privilegiadas, como a porta 80, ao usar o Vagrant com o VirtualBox, mas parece que não funciona. Qual é a melhor opção para lidar com isso?

Estou executando o Vagrant w / Virtualbox no meu Mac e tenho um convidado do CentOS 7. Dentro do guest, estou experimentando o Docker e tenho alguns contêineres diferentes em execução.

No meu Vagrantfile eu configurei regras mínimas de encaminhamento de porta e elas são criadas corretamente dentro do VirtualBox pelo vagrant.

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 80, host: 8081
  config.vm.network "forwarded_port", guest: 3306, host: 3306

Do Virtualbox, tudo é configurado como esperado (redes Nat, regras de encaminhamento)

QuandoexecutolsofnomacOS,vejooquepareceefuncionacomoesperado:

VBoxHeadl1265david15uIPv40x54ccbd2a673214370t0TCPlocalhost:2222(LISTEN)VBoxHeadl1265david16uIPv40x54ccbd2a602a3b3f0t0TCP*:3306(LISTEN)VBoxHeadl1265david17uIPv40x54ccbd2a672ad6270t0TCP*:8080(LISTEN)VBoxHeadl1265david18uIPv40x54ccbd2a6539fd2f0t0TCP*:8081(LISTEN)

Oproblema

Seeutentarencaminharumaportaprivilegiada(:80nestecaso),oencaminhamentodeportanãofuncionará.NãoháprocessodoOSXouvindo:80.

DentrodaVM,possoignorarapáginadoservidorWebemexecuçãoe,naverdade,nadadeveparecerdiferentedaVMGuest.

OmanualdoVirtualboxdizqueissonãodevefuncionar?

NaseçãoderedeNATdomanualdacaixavirtual,háumaseçãointitulada6.3.3.LimitaçõesdeNAT

Forwardinghostports<1024impossible:OnUnix-basedhosts(e.g.Linux,Solaris,MacOSX)itisnotpossibletobindtoportsbelow1024fromapplicationsthatarenotrunbyroot.Asaresult,ifyoutrytoconfiguresuchaportforwarding,theVMwillrefusetostart.

Então,talvezissoestejaafirmandoqueissonãodevefuncionar,noentanto,nãoéverdadequeaVMnãoseráiniciada.Elefuncionabemnomeucaso,oquemefazquestionarseomanualestáfalandosobreaexecuçãodosistemaoperacionalhostparaacaixavirtualouparaosistemaoperacionalconvidado.

EstaéarazãopelaqualoVirtualboxcomNATeoencaminhamentodeportanãoiniciamumouvinteparaaporta80?

UmamensagempareceteraparecidonoVagrantqueeunãoviantes:

==>default:Youaretryingtoforwardtoprivilegedports(ports<=1024).Most==>default:operatingsystemsrestrictthistoonlyprivilegedprocess(typically==>default:processesrunningasanadministrativeuser).Thisisawarningincase==>default:theportforwardingdoesn'twork.Ifanyproblemsoccur,pleasetrya==>default:porthigherthan1024.

Então,issocertamentepareceremoverqualquerconfusão.

Conclusão

Umaredeprivadaouumaredecompontesãosoluçõesviáveisparapermitirautilizaçãodeportasdeconvidadonaturais,mesmoquesejamprivilegiadas(<1024)nohost.

Issotambémeliminaanecessidadedeconfiguraroencaminhamentodeportaindividual.Nomeucaso,aredeprivadapareceseramelhoropção,poiséumpoucomaissegura,poissomenteomeuMacpodeveroVisitante.

AquiestáaconfiguraçãonecessáriadoVagrantfile:

#Createaprivatenetwork,whichallowshost-onlyaccesstothemachine#usingaspecificIP.config.vm.network"private_network", ip: "192.168.20.20"

Isso também facilita a adição de uma ou mais entradas ao arquivo / etc / hosts do mac para o convidado, proporcionando conveniência.

    
por gview 30.06.2017 / 00:32

1 resposta

1

Acho que a melhor opção depende de todas as coisas que você está tentando fazer. Para os ambientes de servidor que contêm o VirtualBox, tenho a tendência de executar todas as minhas VMs com um adaptador em ponte para que todos tenham endereços IP na LAN. Não há problema com portas privilegiadas neste caso. Além disso, migrar VMs para uma nova máquina é razoavelmente simples, já que todas as VMs em um cluster já podem ser endereçadas por todas as outras VMs no cluster.

Às vezes, inicio um túnel remoto via ssh , mas isso é mais raro. Instâncias em que isso é útil é expor temporariamente uma VM no meu computador para o mundo externo em um servidor da web público sem ter que colocar meu computador diretamente na Internet.

    
por 30.06.2017 / 05:01