手账正文

Windows 代理能用,WSL2 却连不上?NAT、localhost 与自动代理排查

Windows 浏览器能用代理,WSL2 里的工具却连不上,先查 WSL2 到 Windows 代理入口的路径。NAT 模式与镜像模式对本机地址的处理不同,Windows 的系统代理设置也不能单独证明 Linux 工具已经采用它。先确认入口可达,再检查工具设置,通常比刷新机场订阅更有针对性。

作者:小六|资料核对日期:2026年10月11日。本文讨论 WSL2 内的 Linux 工具显式访问 Windows 上的 HTTP 代理;WSL1、容器内部和其他网络模式,需要按各自环境另行核对。

一、先确认发行版类型与 WSL 版本

在 Windows PowerShell 中运行下面两条查询命令:

wsl --list --verbose
wsl --version

第一条显示发行版及其 WSL1/WSL2 类型,第二条显示 WSL 与组件版本,含义见微软 WSL 基本命令。列表里的“2”不是 WSL 软件包版本号,别把这两个数字混为一谈。

同时记录 Windows 版本、客户端的实际 HTTP 代理端口和当前 WSL 网络设置。如果旧环境不支持某条命令,先查看对应版本的帮助,不据此猜测它已经支持新网络功能。

二、NAT 与镜像模式,入口地址不同

微软的 WSL 网络文档区分这两种情况:

当前模式 从 WSL2 访问 Windows 服务时的重点
NAT 使用 WSL2 所见的 Windows 宿主机地址,不能直接套用 Linux 自身回环地址
镜像模式 mirrored 支持用 IPv4 回环地址 127.0.0.1 访问 Windows 服务

镜像模式有 Windows 11 22H2 或更高版本等适用条件;官方还说明,这种访问不支持 IPv6 回环地址 ::1。使用 localhost 遇到异常时,也要区分它最后解析成哪个地址。

仅在已确认使用 NAT 模式时,可在 Linux 终端查看默认路由:

ip route show default

核对输出中 via 后面的地址;微软的 NAT 示例用默认路由取得 Windows 宿主机地址。它不是随便找一个虚拟网卡 IP,也不需要照抄教程中的固定数字。若存在多条默认路由或自定义网络,先确认实际路径,不自动取第一行。

不要把“Windows 能通过 localhost 访问 WSL 服务”,反推成 NAT 模式下“WSL 也能同样访问 Windows”。两个方向的处理不同,见微软的网络互操作说明。无法确认模式时,先保留配置与启动提示,别直接套用 NAT 地址办法。

三、地址对了,还要确认 Windows 入口接受连接

NAT 下通过宿主机地址访问,Windows 代理程序需要在相应地址上接受连接。只监听 Windows 的 127.0.0.1,与监听 WSL 能到达的接口,是不同条件。微软网络文档也提示,使用远程地址访问服务时,要核对应用是否允许这种连接。

通过客户端支持的设置检查监听地址、访问范围及用户验证,再核对适用的 Windows 或 Hyper-V 防火墙规则。优先限定所需接口、端口和来源;不要为了一个 WSL 工具关闭整个防火墙,或把代理入口直接开放到公网。

这里需要的是 HTTP 代理入口,不是订阅地址、节点端口或管理面板接口。先把协议与端口记清楚,再进行下面的对照。

四、用一个明确请求区分入口问题与工具问题

假设已经确认 NAT 下宿主机地址为 172.30.96.1,HTTP 入口为 7890,可以在 WSL2 中参考以下写法:

curl --proxy http://172.30.96.1:7890 --noproxy "" --connect-timeout 10 --max-time 30 https://example.com/

地址、端口和目标都是示例,必须换成已核对的值;镜像模式下也应按实际入口调整。本例没有执行结果,不代表测速。--noproxy "" 仅用于这次明确代理测试,避免已有排除名单绕过代理,参数依据是 curl 官方手册。

观察客户端是否收到对应请求,并保留错误阶段:连入口失败,先查路径与监听;出现代理认证要求,查该入口的认证;已经收到请求但目标失败,再查规则、节点和目标。不要把所有报错都解释为 WSL 的 DNS 有问题。

五、autoProxy 是设置传递,不是所有工具可用的证明

微软针对 Windows 11 22H2 或更高版本的网络说明列出,autoProxy 可让 WSL 使用 Windows 的 HTTP 代理信息。旧环境不要直接照搬;先核对当前版本的适用条件、Windows 代理设置及 WSL 配置,再看实际 Linux 工具是否读取了相应设置。

curl 的官方手册列出 http_proxy、HTTPS_PROXY、ALL_PROXY 与 NO_PROXY 等变量。一个工具正常,不能保证其他工具以同样方式读取;比较两个终端时,也要检查各自当前进程的设置,不把含密码的变量输出公开。

如果显式请求可用、平常命令失败,下一步应检查工具自己的代理配置、环境和排除项,可参考本站curl 代理设置排查。先在一个测试终端里缩小范围,不必同时改多个工具的全局设置。

六、改配置后,要确认 WSL 完整重启

WSL2 的全局设置文件是 Windows 用户目录下的 .wslconfig,与发行版里的 /etc/wsl.conf 不同。配置需要在 WSL 虚拟机停止并重新启动后生效,仅关掉一个终端可能不够。见微软高级配置说明。

确需重启时先保存各发行版中的任务。wsl --shutdown 会终止所有运行中的发行版和 WSL2 虚拟机,不能把它当成无影响的刷新按钮。重启后保持代理入口和测试目标相同,再比较新请求;不要一轮测试同时切换网络模式、改 DNS 和换节点。

欢迎带着 WSL 版本、实际网络模式、入口协议和脱敏后的报错交流,说明是“到不了 Windows 入口”还是“入口已收到但目标失败”,不用发送订阅或代理密码:Telegram 联系我。

评论

搜索文章

正在加载搜索…