我想将所有流量从 Windows 路由到 WSL2 (172.28.20.4),但我对网络了解甚少。
我确实尝试添加一条路线:
route add 0.0.0.0 mask 0.0.0.0 172.28.20.4
我还在 WSL2 中启用了 IP 转发,并运行了以下命令:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
生产:
Network destination Network mask Adr. gateway Adr. Metric interface
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.37 35
0.0.0.0 0.0.0.0 172.28.20.4 172.28.16.1 5001
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
172.28.16.0 255.255.240.0 On-link 172.28.16.1 5256
172.28.16.1 255.255.255.255 On-link 172.28.16.1 5256
172.28.31.255 255.255.255.255 On-link 172.28.16.1 5256
172.28.192.0 255.255.240.0 On-link 172.28.192.1 5256
172.28.192.1 255.255.255.255 On-link 172.28.192.1 5256
172.28.207.255 255.255.255.255 On-link 172.28.192.1 5256
192.168.1.0 255.255.255.0 On-link 192.168.1.37 291
192.168.1.37 255.255.255.255 On-link 192.168.1.37 291
问题是 eth0 (172.28.20.4) 位于 NAT 后面,因此如果我删除:
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.37 35
我将无法再访问互联网。
答案1
这在 WSL2 的默认配置下无法工作,因为系统设置为通过主机路由 WSL2 的流量– 您的主机操作系统是 WSL2 的“默认网关”– 因此您通过这种方式得到的只是一个路由循环。
使其工作的最简单方法是为虚拟机添加第二个网络接口——在 Hyper-V 虚拟交换机术语中,您需要创建一个“外部”vSwitch,它允许虚拟机直接访问物理 LAN。然后,通过第二个接口的物理网关应设置为虚拟机的默认网关。
我真的建议使用“完整”的 Hyper-V VM 来实现这一点,因为这样你就可以在不与 WSL 的自动化发生冲突的情况下进行配置:你只需创建虚拟交换机,将它们分配给 VM,它就会停留就这样。(此外,Hyper-V VM 被设计为在后台自动运行,并且其客户操作系统将拥有一个开箱即用、功能齐全的服务管理器(初始化系统)。)
最后,我认为这些都不能真正让你在 Windows 上使用 MP-TCP。这是 TCP 本身需要理解的事情——也就是说,端点连接的必须理解它——它不是可以通过网关注入的东西,除非该网关成为一个完整的 TCP 代理(这不是路由器/网关通常会做的事情)。
答案2
你可能想要一个真正的网卡而不是 IP,而是一个设备,所以你需要买一个非常便宜的 USB WiFi 或更便宜的 USB 网卡,然后直接把它插入 WSL 而不是 Windows ......所以在获得设备后访问https://github.com/dorssel/usbipd-win
此后,如果这是您真正想要的,您将不再使用 Windows IP 等。您将有 2 个单独的网卡,每个计算机一个。