Percebi que o encaminhamento de IP parece estar ativado no WSL (Windows 10pro 1709), de acordo com o sysctl. Eu estou esperando que eu possa usar isso para fazer um roteador de software no WSL - para jogar com o tráfego de VM do Hyper-V no mesmo host físico. A VM e o host podem se comunicar por meio de uma sub-rede compartilhada / 24 ipv4.
Idealmente, eu gostaria de usar o WSL para configurar regras do tipo iptables, ou ter algum tipo de programa de roteador de software usando soquetes RAW que poderiam reescrever o tráfego.
# on the WSL bash
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Meu host do Windows e a VM estão ambos em 192.168.4.X. 192.168.4.215 é o host. 192.168.4.228 é a VM.
Adicionei uma regra ao firewall do Windows para permitir todas as portas TCP de entrada nessa sub-rede e testei a conectividade transferindo páginas da Web fornecidas pelo host WSL e baixadas pela VM. (por exemplo, correu python -m SimpleHTTPServer
em wsl e usou curl http://192.168.2.215
na vm)
Eu adicionei o host do Windows como o gateway padrão dentro da VM:
# route add default gw 192.168.4.215
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.215 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Mas minhas conexões TCP iniciadas na VM não estão sendo roteadas pelo Windows (por exemplo, curl http://<publicip>
.). Não é possível conectar-se
O que mais eu preciso desbloquear no Windows?
Editar
Eu já desisti disso. Como tudo o que eu queria fazer com o tráfego da VM era o NAT sobre o túnel VPN do host, acabei usando uma interface NAT especial com o powershell: