Então é 2019, estou executando um Win 10 no meu VirtualBox. E quero basicamente redirecionar o localhost para 10.0.2.2 (que é o ip da máquina host)
10.0.2.2 localhost
Isso parece não funcionar, algumas pessoas relataram que o Windows 10 desativa intencionalmente a pesquisa do host local. Não sei por que eles fariam isso.
Mas estou tentando encontrar uma solução alternativa que possa resolver esse problema para que eu possa acessar os URLs do host local do meu host.
Responder1
Agora, os serviços dentro e fora da máquina exigem que o aplicativo esteja em execução em uma origem localhost. Então não posso executá-lo em 10.0.2.2
Configure um proxy/encaminhador TCP ou HTTP que escute nas VMs localhost
e encaminhe as conexões reais para o destino correto.
Para HTTP, um proxy reverso como Nginx ou Apache seria a abordagem mais fácil. Você literalmente só precisaria de um VirtualHost com ProxyPass / http://10.0.2.2/
. Para outros protocolos, tanto o Nginx quanto o HAproxy também suportam encaminhamento de fluxo.
Você também pode usar qualquer outro encaminhador TCP, como SSH -L
ou -R
encaminhamento (dependendo se o host ou o convidado possui um servidor SSH), ou mesmo o netsh int portproxy
.
Por exemplo, para encaminhar a porta 443 no convidado do Windows:
netsh interface portproxy add listenaddress=127.0.0.1 listenport=443 connectaddress=10.0.2.2 connectport=443
Alternativamente, se o convidado tiver o PuTTY instalado e o host tiver um servidor SSH:
plink -v -N -L 443:localhost:443 [email protected]
algumas pessoas relataram que o Windows 10 desativa intencionalmente a procura de localhost. Não sei por que eles fariam isso
Em geral, existem duas razões principais pelas quais o Windows pode ter feito isso:
O nome
localhost
é "bem conhecido", ou seja, é amplamente aceito que ele resolve endereços de loopback – não apenasacontecerresolver para 127.0.0.1 ou ::1, épretendiaresolve para 127.0.0.1 ou ::1 e já tem várias décadas de história fazendo isso. Portanto, é completamente natural que um sistema operacional tenha tal regra integrada.Na verdade, mesmo que você encontre uma maneira de contornar o Windows, você descobrirá que muitosnavegadores da webtambém possuem essa regra integrada, independentemente do que o sistema operacional faz. (Por exemplo, aqui estáCódigo fonte do Chromiummostrando que ele possui um mapeamento codificado para 'localhost' e nem se incomoda em perguntar ao sistema operacional.) Existe até um IETFprojeto de normao que o obrigaria no nível do resolvedor.
Os navegadores da Web geralmente consideram
localhost
uma origem segura – eles podem fornecer mais APIs dohttp://localhost
que outrashttp://
URLs. É claro que isso significa que permitir que o host local resolva algo diferente de 127.0.0.1/::1 seria um risco de segurança.