推荐阅读
我们主机如果使用了代理,可能会配置 http_proxy=localhost:7890
之类的东西。此时 WSL 会报错:
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
WSL 在 NAT 模式下运行时,它自己的网络是隔离的,无法直接访问 Windows 主机上的 localhost。
此时我们需要在 WSL 中配置代理,ip 应该是主机的 ip。
主机 ip 可能会在网络环境变化的时候发生变化,所以需要一个脚本在 WSL 启动时获取主机 ip,并将其配置为 http_proxy
。
#!/bin/bash
# 0. 保存该内容到文件中。以下假定文件为 ~/set_proxy_dns.sh
# 1. 获取 Windows 主机的 IP 地址
host_ip=$(getent hosts host.docker.internal | awk '{print $1}')
# 检查是否获取到有效的主机 IP
if [[ -z "$host_ip" ]]; then
echo "Error: Unable to detect the host IP. Ensure your WSL is properly configured."
exit 1 # 如果没有找到主机 IP,就退出脚本
fi
# 2. 设置代理(假设你的代理端口是 1080)
export http_proxy="http://$host_ip:1080"
export https_proxy="http://$host_ip:1080"
# 3. 显示当前设置的代理和 DNS
echo "Current Proxy settings:"
echo "HTTP Proxy: $http_proxy"
echo "HTTPS Proxy: $https_proxy"
# 4. 需要使用 `source ~/set_proxy_dns.sh` 命令来使设置生效
# 5. 如果希望脚本在每次启动时自动运行,可以将上述命令放到 ~/.bashrc 或 ~/.zshrc 中
# 例如将 `[ -f ~/set_proxy_dns.sh ] && source ~/set_proxy_dns.sh` 放到 `~/.bashrc` 最后一行
如非特别声明,本站作品均为原创,遵循【自由转载-保持署名-非商用-非衍生 创意共享 3.0 许可证】。
对于转载作品,如需二次转载,请遵循原作许可。