如何让WSL内部的流量走Windows的代理通道?

目录

第一步:开启代理软件的"允许局域网连接"

[第二步:获取WSL虚拟机的 IP 地址](#第二步:获取WSL虚拟机的 IP 地址)

[第三步:允许代理软件通过Windows Defender防火墙](#第三步:允许代理软件通过Windows Defender防火墙)

[第四步:在 WSL 终端设置环境变量并验证](#第四步:在 WSL 终端设置环境变量并验证)


第一步:开启代理软件的"允许局域网连接"

打开你的代理软件的允许局域网连接。

这样你的代理软件才会监听来自其他 IP(即 WSL)的请求。

第二步:获取WSL虚拟机的 IP 地址

不要用以下命令,10.255.255.254 (DNS 网关),这是由 WSL2 内部虚拟出来的 DNS 转发服务器,它是 WSL 内部用来查找域名(比如把 google.com 转换成 IP 地址)的地址,它只是一个解析器。当你尝试通过它访问 7897 端口时,请求虽然能到达 Windows,但往往被视为一种"匿名转发",极易被防火墙拦截。

复制代码
export host_ip=$(grep nameserver /etc/resolv.conf | awk '{print $2}')
echo "Windows 宿主机 IP 是: $host_ip"

使用下面的命令,这是 Windows 宿主机专门为 WSL 创建的**虚拟网卡(vEthernet)**在 Windows 侧的真实 IP。

复制代码
ipconfig.exe | iconv -f gbk -t utf-8 | grep -A 10 "WSL"

第三步:允许代理软件通过Windows Defender防火墙

①按 Win + R,输入 control 打开控制面板。

②进入 系统和安全 -> Windows Defender 防火墙。

③点击左侧 "允许应用或功能通过 Windows Defender 防火墙"。

④点击右上角 "更改设置"。

⑤在列表中找到你的代理软件。

⑥确保它的 "专用" 和 "公用" 两个框都勾选上了。

⑦点击确定。

第四步:在 WSL 终端设置环境变量并验证

复制代码
export http_proxy="http://yours:7897"
export https_proxy="http://yours:7897"

curl -I https://www.google.com