01

先决定用哪种网络模式

WSL2 默认是 NAT 模式,发行版和 Windows 不共用回环地址,所以在 WSL 里填 127.0.0.1 加端口一定连不上。这是最常见的踩坑点。

Windows 11 较新的版本支持镜像网络模式:在用户目录的 .wslconfig 里给 wsl2 段加上 networkingMode=mirrored,重启 WSL 之后 127.0.0.1 就能直接用,这是最省事的做法。留在 NAT 模式的话,得用 Windows 主机在 WSL 网段里的地址,并且必须打开「允许局域网连接」,否则内核只监听回环,外面根本连不进来。

防火墙是第一嫌疑
启用局域网连接后 Windows 会弹一次防火墙提示,没放行的话后面所有步骤都白做。

合作推荐订阅链接从哪来?本站合作机场注册即送 1GB 香港高速体验流量,可直接一键导入。获取高速节点
02

分四步接上

  1. 1

    打开允许局域网连接

    在 Clash 设置里启用。第一次开启时 Windows 防火墙会弹窗,至少要允许专用网络。

  2. 2

    NAT 模式下取主机地址

    在 WSL 里执行 ip route show default,输出的第三个字段就是 Windows 主机地址。把它写进 https_proxy。这个地址每次重启 WSL 都可能变,建议在 .bashrc 里动态取,别写死。

  3. 3

    Docker Desktop 的代理设置

    在设置的 Resources - Proxies 里手动填 http://host.docker.internal 加端口。注意这一项只影响镜像拉取和构建时的网络,容器里跑的程序不受它管。

  4. 4

    容器内部

    docker run 时用 -e 传 HTTPS_PROXY 和 HTTP_PROXY,或者在用户目录的 .docker/config.json 里配 proxies 段作为默认值。同时把 localhost 和内网仓库加进 noProxy。

03

两边分别验证

在 WSL 里 curl 一次 ipinfo.io/ip,返回节点 IP 就成了。Docker 侧用一个带 curl 的临时容器测同一个地址,能出结果说明容器的代理变量也生效了。两边要分开测,WSL 通不代表容器通。

  • 镜像模式和 NAT 模式的配置不能混用,换模式后要改回环地址
  • 改完 .wslconfig 需要 wsl --shutdown 再启动才生效
  • 拉国内镜像时把仓库地址加进 noProxy,否则反而更慢
04

常见问题

开了 TUN 模式,WSL 还需要单独配吗?

看网络模式。镜像模式下通常能自动接管;NAT 模式下 WSL 走的是 Hyper-V 虚拟交换机,很可能绕过 TUN 网卡,还是配环境变量最稳。

WSL 里昨天还能用,今天连不上了?

先看主机地址是不是变了。NAT 模式下这个地址随 WSL 重启变化,写死在配置里就会失效,改成每次启动动态获取。