Skip to content

WSL2 怎么走宿主机代理?完整配置教程

Windows 上代理开好了,浏览器和 Git 都快了,可一进 WSL2 里 git clonecurlpip 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"

常见问题

设置了代理还是不通?

按顺序检查:

  1. 代理客户端是否开启"允许局域网连接"(NAT 模式下最常见的原因);
  2. Windows 防火墙是否拦截了代理端口(可先临时关闭防火墙测试);
  3. echo $https_proxy 确认变量已生效;
  4. 端口号是否正确(Clash 常见 7890,V2Ray 常见 10809)。

mirrored 模式下 localhost 冲突?

镜像模式下 WSL2 与宿主机共享端口空间,如果 WSL2 里起的服务端口和 Windows 冲突会失败,换端口即可。

相关阅读

🎯 镜像失效、加速站不稳定?
一个稳定的机场可以同时解决 ChatGPT、Netflix、GitHub、Hugging Face 的访问问题。 我们整理了 17 家机场的价格、节点与适用场景对比,并按稳定 / 便宜 / 专线分了专题。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。