根据sysctl,我注意到IP转发似乎已在WSL(Windows 10pro 1709)中启用。我希望可以用它在WSL上制作一个软件路由器,以便在同一物理主机上处理Hyper-V VM流量。VM和主机可以通过共享的/ 24 ipv4子网进行通信。
理想情况下,我想使用WSL来配置类似iptables的规则,或者使用RAW套接字使用某种软件路由器程序来重写流量。
# on the WSL bash
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
我的Windows主机和VM都在192.168.4.X中。主机是192.168.4.215。192.168.4.228是VM。
我在Windows防火墙中添加了一条规则,以允许该子网上的每个传入TCP端口,并通过传输WSL主机提供的网页和VM下载的网页来测试连接性。(例如,python -m SimpleHTTPServer
在wsl中运行并 curl http://192.168.2.215
在vm上使用)
我已将Windows主机添加为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
但是我在VM上启动的TCP连接没有被Windows(例如curl http://<publicip>
。)路由。无法连接
我还需要在Windows中解除封锁吗?
编辑
我有些放弃了。因为我要对VM流量进行的所有操作都是通过主机的VPN隧道对其进行NAT,所以我最终使用了一个具有powershell的特殊NAT接口:
https://serverfault.com/questions/911578/windows-10-pro-as-a-nat-between-two-interfaces