外观
WSL2 怎么走宿主机代理?完整配置教程
Windows 上代理开好了,浏览器和 Git 都快了,可一进 WSL2 里 git clone、curl、pip install 还是龟速 —— 这是因为 WSL2 是独立虚拟网络,默认不会走 Windows 的代理。
本文给出三种方案,优先推荐方法一(Windows 11 22H2+ 支持,一劳永逸)。
方法一:镜像网络模式(推荐,Win11 22H2+)
Windows 11 22H2 及以上版本支持 mirrored 网络模式,让 WSL2 与宿主机共享网络栈 —— 宿主机代理开了全局/系统代理,WSL2 里的 127.0.0.1 也能直接访问宿主机端口。
编辑(或新建)C:\Users\你的用户名\.wslconfig:
ini
[wsl2]
networkingMode=mirrored
autoProxy=true然后在 PowerShell 中重启 WSL:
powershell
wsl --shutdown重新打开 WSL 终端,此时:
autoProxy=true会自动继承 Windows 的系统代理设置;- 即使不开 autoProxy,也可以直接用
127.0.0.1:7890访问宿主机上的代理端口。
bash
# WSL2 内验证(把 7890 换成你的代理端口)
curl -x http://127.0.0.1:7890 -I https://github.com方法二:环境变量指向宿主机 IP(通用)
老版本 Windows 用 NAT 模式,WSL2 里要用宿主机在虚拟网卡上的 IP 访问代理。把下面内容加入 ~/.bashrc 或 ~/.zshrc:
bash
# 自动获取宿主机 IP 并设置代理(把 7890 换成你的端口)
export hostip=$(ip route show default | awk '{print $3}')
export https_proxy="http://$hostip:7890"
export http_proxy="http://$hostip:7890"
export all_proxy="socks5://$hostip:7890"bash
source ~/.bashrc
curl -I https://github.com # 验证代理客户端必须"允许局域网连接"
NAT 模式下,WSL2 是通过"局域网"访问宿主机的。请在代理客户端里打开 Allow LAN / 允许来自局域网的连接,否则连接会被拒绝。同时确认 Windows 防火墙放行了代理端口。
方法三:只给单个工具配代理
不想全局走代理,可以只配 Git / pip 等常用工具:
bash
hostip=$(ip route show default | awk '{print $3}')
# Git
git config --global http.proxy "http://$hostip:7890"
# pip(临时)
pip install requests --proxy "http://$hostip:7890"常见问题
设置了代理还是不通?
按顺序检查:
- 代理客户端是否开启"允许局域网连接"(NAT 模式下最常见的原因);
- Windows 防火墙是否拦截了代理端口(可先临时关闭防火墙测试);
echo $https_proxy确认变量已生效;- 端口号是否正确(Clash 常见 7890,V2Ray 常见 10809)。
mirrored 模式下 localhost 冲突?
镜像模式下 WSL2 与宿主机共享端口空间,如果 WSL2 里起的服务端口和 Windows 冲突会失败,换端口即可。