Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Há algumas considerações a ter em conta ao trabalhar com aplicações de rede e WSL. Por padrão, o WSL usa uma arquitetura baseada em NAT , e recomendamos experimentar o novo modo de rede espelhada para obter os recursos e melhorias mais recentes.
Identificar endereço IP
Há dois cenários a considerar ao identificar o endereço IP usado para uma distribuição Linux em execução via WSL:
Cenário um: Da perspetiva do host Windows, você deseja consultar o endereço IP de uma distribuição Linux em execução via WSL2, para que um programa no host Windows possa se conectar a um programa de servidor em execução dentro da distribuição (instância).
O host do Windows pode usar o comando:
wsl.exe --distribution <DistroName> hostname -i
Se consultar a distribuição padrão, esta parte do comando que designa a distribuição pode ser omitida: -d <DistroName>. Certifique-se de usar uma bandeira de -i com letra minúscula.
Nos bastidores, o comando host wsl.exe inicia a instância de destino e executa o comando hostname --ip-addressesLinux. Em seguida, esse comando imprime o endereço IP da instância WSL para STDOUT. O conteúdo do texto STDOUT é então retransmitido para wsl.exe. Finalmente, wsl.exe exibe essa saída para a linha de comando.
Uma saída típica pode ser:
172.30.98.229
Cenário dois: Um programa executado dentro de uma distribuição Linux via WSL2 (instância) quer saber o endereço IP do host Windows, para que um programa Linux possa se conectar a um programa de servidor host Windows.
O usuário do WSL2 Linux pode usar o comando:
ip route show | grep -i default | awk '{ print $3}'
Uma saída típica pode ser:
172.30.96.1
Portanto, o 172.30.96.1 é o endereço IP do host para Windows, neste exemplo.
Observação
Essas ações de consulta de endereço IP acima geralmente são necessárias quando o WSL2 está sendo executado com o modo de rede NAT padrão.
Quando o WSL2 está sendo executado com o novo modo espelhado , o host do Windows e a VM WSL2 podem se conectar um ao outro usando localhost (127.0.0.1) como endereço de destino, portanto, o truque de usar o endereço IP de um par de consulta não é necessário.
Modo de rede padrão: NAT
Por padrão, o WSL usa uma arquitetura baseada em NAT (Network Address Translation) para rede. Tenha em mente as seguintes considerações ao trabalhar com uma arquitetura de rede baseada em NAT:
Acessando aplicativos de rede Linux a partir do Windows (localhost)
Se você estiver criando um aplicativo de rede (por exemplo, um aplicativo em execução em um servidor NodeJS ou SQL) em sua distribuição Linux, poderá acessá-lo a partir de um aplicativo do Windows (como o navegador de internet Edge ou Chrome) usando localhost (exatamente como faria normalmente).
Acessando aplicativos de rede do Windows a partir do Linux (IP do host)
Se você quiser acessar um aplicativo de rede em execução no Windows (por exemplo, um aplicativo em execução em um servidor NodeJS ou SQL) a partir de sua distribuição Linux (ou seja, Ubuntu), então você precisa usar o endereço IP da sua máquina host. Embora esse não seja um cenário comum, você pode seguir estas etapas para fazê-lo funcionar.
Obtenha o endereço IP da sua máquina anfitriã executando este comando a partir da sua distribuição Linux:
ip route show | grep -i default | awk '{ print $3}'Conecte-se a qualquer servidor Windows usando o endereço IP copiado.
A imagem abaixo mostra um exemplo disso conectando-se a um servidor Node.js em execução no Windows via curl.
Ligação através de endereços IP remotos
Ao usar endereços IP remotos para se conectar aos seus aplicativos, eles serão tratados como conexões da Rede Local (LAN). Isso significa que você precisará se certificar de que seu aplicativo pode aceitar conexões LAN.
Por exemplo, talvez seja necessário vincular seu aplicativo ao 0.0.0.0 em vez de 127.0.0.1. No exemplo de um aplicativo Python usando Flask, isso pode ser feito com o comando: app.run(host='0.0.0.0'). Tenha a segurança em mente ao fazer essas alterações, pois isso permitirá conexões da sua LAN.
Aceder a uma distribuição WSL 2 a partir da sua rede local (LAN)
Ao usar uma distribuição WSL 1, se o seu computador foi configurado para ser acessado pela sua LAN, então os aplicativos executados na WSL também podem ser acessados na sua LAN.
Este não é o caso padrão no WSL 2. O WSL 2 tem um adaptador ethernet virtualizado com seu próprio endereço IP exclusivo. Atualmente, para habilitar esse fluxo de trabalho, você precisará passar pelas mesmas etapas que faria para uma máquina virtual normal. (Estamos procurando maneiras de melhorar essa experiência.)
Aqui está um exemplo de como usar o comando Netsh interface portproxy Windows para adicionar um proxy de porta que escuta na sua porta do host e conecta esse proxy de porta ao endereço IP da VM WSL 2.
netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)
Neste exemplo, você precisará atualizar <yourPortToForward> para um número de porta, por exemplo, listenport=4000.
listenaddress=0.0.0.0 significa que as solicitações recebidas serão aceitas de QUALQUER endereço IP. O Endereço de escuta especifica o endereço IPv4 para o qual escutar e pode ser alterado para valores que incluem: endereço IP, nome NetBIOS do computador ou nome DNS do computador. Se um endereço não for especificado, o padrão será o computador local. Você precisa atualizar o valor <yourPortToConnectToInWSL> para um número de porta onde deseja que o WSL se conecte, por exemplo, connectport=4000. Por fim, o valor connectaddress precisa ser o endereço IP da sua distribuição Linux instalada via WSL 2 (o endereço da VM WSL 2), que pode ser encontrado digitando o comando: wsl.exe hostname -I.
Portanto, este comando pode parecer algo como:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
Para obter o endereço IP, use:
-
wsl hostname -Ipara o endereço IP da sua distribuição Linux instalada via WSL 2 (o endereço da VM WSL 2) -
cat /etc/resolv.confpara o endereço IP da máquina Windows como é visto a partir do WSL 2 (a VM do WSL 2)
Usando o listenaddress=0.0.0.0 escutará em todas as portas IPv4 .
Observação
Usar um "i" minúsculo com o comando hostname gerará um resultado diferente do uso de um "I" maiúsculo.
wsl hostname -i é a sua máquina local (127.0.1.1 é um endereço de diagnóstico provisório), enquanto que wsl hostname -I retornará o endereço IP da sua máquina local como visto por outras máquinas e deve ser usado para a identificação da connectaddress da sua distribuição Linux em execução via WSL 2.
Acesso IPv6
-
wsl hostname -ipara o endereço IP da sua distribuição Linux instalada via WSL 2 (o endereço da VM WSL 2) -
ip route show | grep -i default | awk '{ print $3}'para o endereço IP da máquina Windows como é visto a partir do WSL 2 (a VM do WSL 2)
Usando o listenaddress=0.0.0.0 escutará em todas as portas IPv4 .
Rede em modo espelhado
Em máquinas que executam o Windows 11 22H2 e superior, você networkingMode=mirrored de arquivo [wsl2] para habilitar a rede em modo espelhado. Habilitar isso muda o WSL para uma arquitetura de rede totalmente nova que tem o objetivo de "espelhar" as interfaces de rede que você tem no Windows para o Linux, para adicionar novos recursos de rede e melhorar a compatibilidade.
Aqui estão os benefícios atuais de ativar esse modo:
- Suporte a IPv6
- Conecte-se a servidores Windows a partir do Linux usando o endereço localhost
127.0.0.1. O endereço de localhost IPv6::1não é suportado - Melhor compatibilidade de rede para VPNs
- Suporte a multicast
- Conecte-se ao WSL diretamente de sua rede local (LAN)
Observação
Execute o seguinte comando na janela do PowerShell com privilégios de administrador para definir Hyper-V configurações de firewall para permitir conexões de entrada:
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
ou
New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
Este novo modo aborda problemas de rede observados com o uso de uma arquitetura baseada em NAT (Network Address Translation). Encontre problemas conhecidos ou comentários de arquivos sobre quaisquer bugs identificados no repositório de produtos WSL no GitHub.
Túnel DNS
Em máquinas que executam Windows 11 22H2 e versões superiores, o dnsTunneling recurso está ativado por padrão (que pode ser encontrado no arquivo .wslconfig) e utiliza uma função de virtualização para responder a pedidos de DNS dentro do WSL, em vez de solicitá-los através de um pacote de rede. Esse recurso tem como objetivo melhorar a compatibilidade com VPNs e outras configurações de rede complexas.
Proxy automático
Em máquinas que executam Windows 11 22H2 ou superior, configurar autoProxy=true sob [wsl2] no ficheiro .wslconfig obriga o WSL a usar as informações de proxy HTTP do Windows. Se você já tiver um proxy configurado no Windows, habilitar esse recurso fará com que esse proxy também seja definido automaticamente no WSL.
WSL e firewall
Em máquinas que executam o Windows 11 22H2 e superior, com WSL 2.0.9 e superior, o recurso de firewall Hyper-V será ativado por padrão. Tal garantirá que:
- Consulte Firewall com Segurança Avançada do Windows Defender para saber mais sobre os recursos de segurança do Windows que serão aplicados automaticamente ao WSL.
- Consulte Configurar Hyper-V firewall para saber mais sobre como aplicar essas regras e configurações, tanto localmente quanto através de ferramentas online como o Intune.
Windows Subsystem for Linux