如何将Windows所有流量路由至WSL2且保证正常访问互联网?
如何将Windows所有流量路由至WSL2且保证正常访问互联网?
兄弟,我懂你现在的困扰——想把Windows的所有流量都导去WSL2,但要么流量还是乖乖走原来的网关,要么删了旧路由就直接断网。别慌,咱们一步步捋清楚问题,再解决它:
先说说你当前的问题出在哪
你之前添加的WSL2默认路由(Metric值5001)优先级比原来的外网路由(Metric值35)低太多了,Windows会优先选择Metric值更小的路由,所以你的设置根本没生效。但如果直接删掉原来的192.168.1.1那条路由,WSL2本身的网络是依赖Windows NAT的,自然就没法连外网了,这就陷入两难了。
解决步骤来啦
1. 先清理之前的无效路由
打开Windows的命令提示符(管理员权限),先删掉你之前加的那条高Metric的路由:
route delete 0.0.0.0 mask 0.0.0.0 172.28.20.4
2. 添加高优先级的WSL2默认路由
重新添加默认路由,把Metric值设得比原来的35小(比如设成20),这样Windows就会优先把流量发到WSL2:
route add 0.0.0.0 mask 0.0.0.0 172.28.20.4 metric 20
3. 确认WSL2的转发配置没问题
你之前已经做了IP转发和iptables伪装,但再检查一遍更稳妥:
在WSL2终端里运行:
sudo sysctl -w net.ipv4.ip_forward=1
然后查看iptables的NAT规则,确认MASQUERADE规则存在:
sudo iptables -t nat -L POSTROUTING
如果能看到类似MASQUERADE all -- anywhere anywhere的条目,就说明没问题。
4. 验证整个链路是否通畅
- 先在WSL2里ping个外网地址(比如
ping baidu.com),确认WSL2自己能上网; - 再回到Windows,打开浏览器或者用
ping baidu.com测试,确认流量已经通过WSL2转发出去,且能正常访问互联网。
额外提醒
WSL2默认是动态分配IP的,如果你重启WSL2或者电脑,它的IP可能会变,到时候你需要重新添加路由。如果想一劳永逸,可以给WSL2设置固定IP,这样就不用每次改路由啦。
备注:内容来源于stack exchange,提问作者user23410276




