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)
Quandoexecutolsof
nomacOS,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.