在 WSL 中优雅地使用宿主机的代理

打开 WSL 终端的时候,会出现下面的一个报错:

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

这个报错告诉我们,不能用 localhost 直接访问宿主机的代理。 但是如果在 WSL 中能够访问宿主机的 IP,并且宿主机的代理服务“允许来自局域网的连接”,那么 WSL 就可以轻松使用宿主机的代理了。

宿主机的 IP 可以在 /etc/resolv.conf 文件里面找到,但这个 IP 可能会变动。因此只要在使用的时候,去解析出这个 IP 即可。 我们可以通过如下的命令解析出宿主机 IP:

1
$ cat /etc/resolv.conf | grep "nameserver" | cut -f 2 -d " "

有了宿主机 IP,我们就可以在~/.bashrc~/.zshrc 直接定义一个alias proxy

1
2
3
host_ip=$(cat /etc/resolv.conf | grep "nameserver" | cut -f 2 -d " ")
proxy_port=10809
alias proxy="all_proxy=http://$host_ip:$proxy_port"

proxy_port 要改成宿主机代理端口。现在就可以在 WSL 中使用宿主机代理执行 HTTP 请求了:

1
proxy curl www.some-proxy-domain.com

在 WSL 中优雅地使用宿主机的代理
https://aizpy.com/2023/11/28/wsl-proxy/
作者
aizpy
发布于
2023年11月28日
许可协议