解决:wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理

这个问题是因为 WSL2 使用 NAT 网络模式,无法直接访问 Windows 的 localhost 代理。解决方法如下:

✅ 方案一:改用 Windows 主机 IP(推荐)

在 WSL 中,不要用 127.0.0.1 或 localhost,而是用 Windows 在 WSL 中的 IP。

1️⃣ 获取 Windows 主机 IP

在 WSL 中执行:
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'

输出类似:172.20.0.1

2️⃣ 设置代理环境变量

假设你的代理端口是 7890:
export http_proxy="http://172.20.0.1:7890"
export https_proxy="http://172.20.0.1:7890"
export all_proxy="socks5://172.20.0.1:7890"

3️⃣ 永久生效(可选)

写入 ~/.bashrc 或 ~/.zshrc:
echo 'export http_proxy="http://$(grep nameserver /etc/resolv.conf | awk '''{print $2}'''):7890"' >> ~/.bashrc
source ~/.bashrc

✅ 方案二:让代理监听 0.0.0.0

在 Windows 代理软件中:
• 将 监听地址 从 127.0.0.1 改为 0.0.0.0

• 允许局域网连接(Allow LAN)

⚠️ 注意:这样会让同一局域网的设备都能使用你的代理,请确保网络安全。

✅ 方案三:使用 .wslconfig(仅部分情况有效)

在 Windows 用户目录创建 %USERPROFILE%.wslconfig:
[wsl2]
networkingMode=mirrored

然后重启 WSL:
wsl --shutdown

📌 要求 Windows 11 22H2+,且可能带来其他网络变化。

✅ 方案四:关闭 WSL 代理检测(治标不治本)

临时关闭警告:
unset http_proxy https_proxy all_proxy

🔍 验证是否成功

curl ipinfo.io

curl google.com

🧠 原因总结

项目 说明

WSL2 网络 NAT,不是桥接

localhost 指向 WSL 自身

Windows 代理 在宿主机上

正确做法 用 Windows 的 真实 IP

posted @ 2026-04-25 22:35  卓能文  阅读(719)  评论(0)    收藏  举报