You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将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

火山引擎 最新活动