下面是使用V2rayN下操作的,混合端口10808; clash换端口即可
win11可以wslconfig里面启用mirror模式和autoproxy
但是autoproxy只能把http https代理带到wsl2中
.wslconfig配置可参考:
[wsl2]
# 限制内存使用(可选)
# memory=8GB
autoProxy=true
# 开启镜像网络模式
networkingMode=mirrored
# 开启 DNS 隧道
dnsTunneling=true
# 开启 Windows 防火墙整合
firewall=true
[experimental]
# 自动回收内存
autoMemoryReclaim=gradual
# 自动释放虚拟硬盘空间
sparseVhd=true
# 允许 localhost 回环
hostAddressLoopback=true
Tun
然后最最最省心的就是开tun模式,但是如果开tun模式没用,解决方法:
进入v2rayn中的 设置–>参数设置–>tun参数设置–>MTU设置为1500
在我win11的电脑上tun模式代理不起作用之后,使用这个方法确实有效了。(我也建议把严格路由关了,很多开启tun之后电脑代理直接失效跟严格路由也有关系)
使用系统代理,不想用Tun
有很多佬友确实不喜欢tun,那就是在wsl2的bashrc末尾添加代理设置 (这里只是添加socks代理,部分程序使用socks,前面autoproxy已经把http/s代理带过去了)。
cat >> ~/.bashrc <<'EOF'
setall() {
if timeout 1 bash -c '</dev/tcp/127.0.0.1/10808' 2>/dev/null; then
export ALL_PROXY=socks5h://127.0.0.1:10808
export all_proxy=socks5h://127.0.0.1:10808
else
unset ALL_PROXY all_proxy
fi
}
setall
EOF
复制上面 回车后,再输入下面,回车
source ~/.bashrc
注:这个设置是长久性,不是窗口临时的
这样的话
- 10808 能连上,就设
ALL_PROXY
- 10808 连不上,就取消
ALL_PROXY 保证直连
- 手动重新检测的话(即wsl2开了 v2rayn没开读不到),输入setall
- 可能会出现关闭代理后10808端口依然监听导致默认读代理的情况,可以把第一行改成
if curl -s --proxy socks5h://127.0.0.1:10808 https://www.gstatic.com/generate_204 --max-time 3 >/dev/null判断是否能连外再设socks代理
win10 没有mirror模式
Tun最省事 ^-^
开tun什么都不怕了()
依旧建议关闭严格路由,MTU的问题我在win10上没遇到过,不过改1500也挺好
系统代理
win10的主机地址在wsl那通常不是127.0.0.1,我之前因为这个连不上。
所以需要先获取 设置 再添加代理。
下面是自动获取win10主机地址、添加代理,自动检测windows端代理通不通
cat >> ~/.bashrc <<'EOF'
# ==== WSL 代理自动配置 ====
proxyon() {
hostip=$(ip route | awk '/default/ {print $3}' | head -n1)
export http_proxy="http://$hostip:10808"
export https_proxy="http://$hostip:10808"
export all_proxy="socks5h://$hostip:10808"
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export ALL_PROXY="$all_proxy"
echo "WSL 代理已开启 -> $hostip:10808"
}
proxyoff() {
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
echo "WSL 代理已关闭"
}
proxyauto() {
hostip=$(ip route | awk '/default/ {print $3}' | head -n1)
if [ -n "$hostip" ] && timeout 1 bash -c "</dev/tcp/$hostip/10808" 2>/dev/null; then
proxyon
else
proxyoff
fi
}
proxyauto
EOF
然后输入下面 回车
source ~/.bashrc
每次你打开 WSL:
- 先拿当前 Windows 主机 IP
- 检查
$hostip:10808 是否能连通
- 能连通:自动设
http_proxy / https_proxy / ALL_PROXY
- 不能连通:自动
unset,走默认直连
仍然可以手动执行三个命令proxyon强制开启/ proxyoff强制关闭/ proxyauto重新检测
配置后检查
curl -I https://www.google.com --max-time 10 有http 200啥的就是成功了
curl https://ifconfig.me --max-time 10 显示代理ip就是成功了
结尾
应该能帮到大部分被这wsl代理配置折磨很久的佬,有错的地方佬友指正。
我是小白,碰到的问题大部分这样都解决了。
(还是tun省事啊)