Acessar aplicativos de rede com o WSL

Há algumas considerações a se fazer ao trabalhar com aplicativos de rede: se você estiver acessando um aplicativo de rede do Linux em um aplicativo Windows ou acessando um aplicativo de rede do Windows em um aplicativo Linux, talvez seja necessário identificar o endereço IP da máquina virtual com a qual você está trabalhando, o que será diferente do endereço IP do computador físico local.

Como acessar aplicativos de rede do Linux no Windows (localhost)

Se você estiver criando um aplicativo de rede (por exemplo, um aplicativo em execução em um NodeJS ou SQL Server) em sua distribuição do Linux, poderá acessá-lo de um aplicativo do Windows (como seu navegador de Internet Microsoft Edge ou Chrome) usando localhost (assim como faria normalmente).

Como acessar aplicativos de rede do Windows no Linux (IP do host)

Se quiser acessar um aplicativo de rede em execução no Windows (por exemplo, um aplicativo em execução em um NodeJS ou SQL Server) de sua distribuição do Linux (por exemplo, Ubuntu), você precisará usar o endereço IP do seu computador host. Embora esse não seja um cenário comum, você pode seguir estas etapas para fazê-lo funcionar.

  1. Obtenha o endereço IP do seu computador host executando este comando da sua distribuição do Linux: cat /etc/resolv.conf
  2. Copie o endereço IP após o termo: nameserver.
  3. Conecte-se a qualquer servidor Windows usando o endereço IP copiado.

A imagem abaixo mostra um exemplo disso por meio da conexão com um servidor Node.js em execução no Windows via curl.

Conectar-se ao servidor NodeJS no Windows via Curl

Conectar-se via endereços IP remotos

Ao usar endereços IP remotos para se conectar aos seus aplicativos, eles serão tratados como conexões de LAN (rede local). Isso significa que você precisará verificar se seu aplicativo pode aceitar conexões de LAN.

Por exemplo, talvez seja necessário associar seu aplicativo a 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 em mente a segurança ao fazer essas alterações, pois isso permitirá conexões de sua LAN.

Como acessar uma distribuição do WSL 2 usando a LAN (rede local)

Ao usar uma distribuição do WSL 1, se o computador tiver sido configurado para ser acessado pela sua LAN, os aplicativos executados no WSL também poderão ser acessados em sua LAN.

Esse não é o caso padrão no WSL 2. O WSL 2 tem um adaptador Ethernet virtualizado com um endereço IP exclusivo. No momento, para habilitar esse fluxo de trabalho, será necessário percorrer as mesmas etapas que você faria para uma máquina virtual normal. (Estamos analisando maneiras de aprimorar essa experiência.)

Veja um comando do PowerShell de exemplo para adicionar um proxy de porta que escuta na porta 4000 no host e o conecta à porta 4000 para a VM do WSL 2 com o endereço IP 192.168.101.100.

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

Acesso IPv6

Atualmente, as distribuições do WSL 2 não conseguem acessar endereços IPv6. Estamos trabalhando para adicionar esse recurso.