如何在主机所处的局域网中通过 IP 访问 WSL 容器
高手省流
修改用户目录下 .wslconfig 文件如下并重启 WSL 服务。
[wsl2]
networkingMode=mirrored
[experimental]
dnsTunneling=true
autoProxy=true
localhostForwarding=true
hostAddressLoopback=true
小白操作流程
打开 Powershell 并通过以下一条命令在主机的用户文件夹 ~ 下创建并完成文件 .wslconfig。
echo @"
[wsl2]
networkingMode=mirrored
[experimental]
dnsTunneling=true
autoProxy=true
localhostForwarding=true
hostAddressLoopback=true
" > $HOME\.wslconfig
在同一命令行使用 wsl --shutdown 关闭 WSL 容器服务。此时 Docker Desktop 会报错,无视。等待 2 秒左右使用 wsl 命令重启服务。
到此操作完成,可以进入 wsl 系统使用命令 ip addr 查看当前系统的局域网地址,通常为 192.168.*.*(*为任意1-254的数字)。
解释
使用到的各个配置项的作用如下表所示。
| 配置名 | 配置值 | 作用备注 |
|---|---|---|
| networkingMode | mirrored | WSL 2 直接“镜像” Windows 主机的网络接口。这意味着 WSL 内部拥有的 IP 地址、路由表、DNS 设置与 Windows 完全一致。人话就是和主机使用同一个网络 |
| dnsTunneling | true | 启用 DNS 隧道,网络请求让 Windows 主机发 |
| autoProxy | true | WSL 会自动检测并应用 Windows 系统的代理设置,即可以使用 Windows 的 VPN |
| localhostForwarding | true | 本地端口转发,把访问主机本地的请求转发到 WSL |
| hostAddressLoopback | true | 允许 WSL 通过“localhost/127.0.0.1”访问 Windows 主机上运行的服务 |
浙公网安备 33010602011771号