Clash Verge logo Clash Verge开源跨平台代理客户端

进阶技巧

让 WSL2 与 Docker 走 Clash Verge 代理

发布于 · 更新于 · 2 分钟读完

Windows 上开着代理,WSL2 里 curl 照样超时——这不是 bug。WSL2 有独立的虚拟网络,里面的 127.0.0.1 指向它自己,不是宿主机。

WSL2 通过虚拟网卡访问宿主机,得走宿主机的局域网 IP
WSL2 通过虚拟网卡访问宿主机,得走宿主机的局域网 IP

先放行局域网

「设置 → 局域网连接」打开允许局域网,否则内核只监听 127.0.0.1,WSL 连不上。Windows 防火墙弹窗记得选允许,细节见局域网共享代理

合作推荐订阅链接从哪来?本站合作机场注册即送 1GB 香港高速体验流量,可直接一键导入。获取高速节点

在 WSL 里指向宿主机

export hostip=$(ip route show | grep -i default | awk '{print $3}')
export http_proxy="http://$hostip:7897"
export https_proxy="http://$hostip:7897"

宿主机 IP 每次重启 WSL 都可能变,所以用命令取而不是写死。把这几行放进 ~/.bashrc 就不用每次敲。端口以你实际的混合端口为准,改过端口的见端口冲突

镜像网络模式更省事

较新的 Windows 11 上 WSL 支持镜像网络。在 %USERPROFILE%\.wslconfig 里写:

[wsl2]
networkingMode=mirrored

wsl --shutdown 重启后,WSL 里可以直接用 127.0.0.1:7897,和宿主机共用网络栈。Windows 10 没有这个模式,只能用上面那套。

Docker

容器里访问宿主机用 host.docker.internal。构建镜像时代理要单独传,容器运行时的环境变量不会自动带进构建阶段:

docker build --build-arg http_proxy=http://host.docker.internal:7897 .
说明

开了 TUN 也不一定能接管 WSL2 的流量,虚拟网卡的路由归 Hyper-V 管。要确保走代理,老老实实设环境变量最可靠。

还没有安装 Clash Verge?

Windows 64 位安装包 · v2.5.1 · 免费开源

下载 v2.5.1