Esta questão está relacionada à minha pergunta sobre como tornar um endereço WSL2 estático . Como parece que não é possível, estou tentando encontrar uma solução alternativa.
Estou pensando em executar um script de shell no WSL2 na inicialização que gravará o endereço da máquina WSL2 em um arquivo no sistema host. Um script powershell procurará esse arquivo e, quando o encontrar, executará:
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=<WSL2 IP>
Se possível, gostaria de eliminar a necessidade de executar um script de shell no Linux.
Uma possibilidade é via netsh interface ipv4 show neighbors
. 172.27.154.150 é o endereço IP atual da minha máquina WSL2, mas não tenho certeza de como escrever um script para isolar esse endereço IP.
PS C:\Users\Nick> netsh interface ipv4 show neighbors
Interface 1: Loopback Pseudo-Interface 1
Internet Address Physical Address Type
-------------------------------------------- ----------------- -----------
224.0.0.22 Permanent
239.255.255.250 Permanent
Interface 7: Ethernet0
Internet Address Physical Address Type
-------------------------------------------- ----------------- -----------
192.168.163.2 00-50-56-fa-e9-9e Reachable
192.168.163.254 00-50-56-fc-61-94 Reachable
192.168.163.255 ff-ff-ff-ff-ff-ff Permanent
224.0.0.22 01-00-5e-00-00-16 Permanent
224.0.0.251 01-00-5e-00-00-fb Permanent
224.0.0.252 01-00-5e-00-00-fc Permanent
239.255.255.250 01-00-5e-7f-ff-fa Permanent
255.255.255.255 ff-ff-ff-ff-ff-ff Permanent
Interface 19: Bluetooth Network Connection
Internet Address Physical Address Type
-------------------------------------------- ----------------- -----------
224.0.0.22 01-00-5e-00-00-16 Permanent
Interface 14: vEthernet (Default Switch)
Internet Address Physical Address Type
-------------------------------------------- ----------------- -----------
172.21.47.255 ff-ff-ff-ff-ff-ff Permanent
224.0.0.22 01-00-5e-00-00-16 Permanent
224.0.0.251 01-00-5e-00-00-fb Permanent
239.255.255.250 01-00-5e-7f-ff-fa Permanent
255.255.255.255 ff-ff-ff-ff-ff-ff Permanent
Interface 25: vEthernet (WSL)
Internet Address Physical Address Type
-------------------------------------------- ----------------- -----------
172.27.154.150 00-15-5d-f2-6b-94 Stale
172.27.159.255 ff-ff-ff-ff-ff-ff Permanent
224.0.0.22 01-00-5e-00-00-16 Permanent
224.0.0.251 01-00-5e-00-00-fb Permanent
239.255.255.250 01-00-5e-7f-ff-fa Permanent
No Windows powershell ou cmd, use o comando:
Isso deve retornar um endereço IP se o WSL estiver em execução. Parece iniciar a distro padrão se não estiver em execução e, em seguida, retornar o endereço dela. (demora alguns segundos a mais para retornar)
Observe que, embora isso deva funcionar para o caso simples, pode não funcionar para todas as distros que você executar no WSL. Nesse caso, você deve considerar a resposta de Hashbrown (que envolve um comando mais complicado, mas pode funcionar melhor)
Para mim, meu WSL tem várias interfaces, portanto
hostname
não é apropriado. Neste caso, você pode usar isso:Mude
-4
para-6
ipv6 eeth0
para a interface de sua escolha.Para verificar seu endereço IP do WSL: