wsl2 使用宿主机 clash 问题解决方案
1. 确保代理有效
我使用的是 Clash for windows v0.14.3,确认在 Windows 上开启 Clash 是可以成功上外网的。
2. 确保wsl2可以正常上网
可以正常访问不需要翻墙的网络。
3. 确保wsl2和宿主Windows可以互相ping通
wsl2 的机制是虚拟机,相当于桥接在宿主机上,windows 会新建一个子网,分配给自己和 wsl2ip 。当 wsl2 需要访问外界网络的时候,会通过 win10 主机作为路由来上网,因此 linux 中的机器如果需要配置代理,使用windows 的 clash,需要把 windows 的 ip 作为代理的ip。
在 wsl2 中可以找到自己的 ip 和宿主的 ip,下面是一个 bash 脚本
#! /bin/bash
echo "----outer ip----"
curl cip.cc
echo ""
echo "----host ip----"
cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'
echo ""
echo "----wsl ip----"
hostname -I | awk '{print $1}'
可能遇到的问题
Windows 能 ping 通 wsl2,而 wsl2 ping 不通 Windows。
此时,可能是 windows 的防火墙在起作用。可以先简单的把所有设置都关闭,再测试一下能否 ping 通宿主机。
确认是否为防火墙问题。
如果是,则添加一条入站规则: 仅允许 wsl2 所在的网段主机对宿主机进行无障碍访问 。
其他步骤默认即可。
4. 确保wsl2能访问宿主机的Clash
启动 clash 并开启 Allow LAN
在 linux 中设置代理
export https_proxy="http://{windows Ip}:{clash port}"
export http_proxy="http://{windows Ip}:{clash port}"
可能遇到的问题
1. wsl2 ping 能通 Windows,但不能访问 Clash
此时,仍然可能是 windows 的防火墙在起作用。它不再拦截 wsl2,但它保护 clash。真安全啊,Windows,防不胜防。
总之和 clash 有关的全部勾选吧。
5. 不要用 ping 测试网络是否连通
挂上了代理仍然会 ping 不通谷歌,因为代理是 http 和 https 的代理,ping 直接用 ip 层,不会通过 http。用 curl来测试是否成功上外网。
这就是一些网络的知识了,脑子一抽可能就忘了,卡在那半天回不过神来。