资讯动态

WSL2 网络配置实操指南:改对 `.wslconfig` 里 1 个字段,localhost 与局域网 5 分钟都能访问

发布时间:2026/10/16 15:51:49 来源:尧图企业网站定制
WSL2 网络配置实操指南改对.wslconfig里 1 个字段localhost 与局域网 5 分钟都能访问【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSLWSLWindows Subsystem for Linux即 Windows 里的 Linux 子系统里服务连不上、端口打不开九成问题出在一个字段%UserProfile%\.wslconfig文件[wsl2]段下的networkingMode。它只有三个取值——NAT、mirrored、bridged决定了 WSL2 虚拟机的 IP 从哪来、外部从哪条路径访问你的服务。读完并照做一次你能解决三件具体的事Windows 浏览器里localhost打不开 WSL 中正在运行的服务想让局域网里的另一台电脑/手机访问 WSL 服务却拿不到一个能被别人看到的 IP公司代理环境下WSL 里的 DNS 或 HTTPS 时好时坏先看这张表三种模式到底差在哪不用记原理先记住每个取值下IP 是谁发的、访问路径怎么走这两个变量networkingModeIP 从哪来服务访问路径适合谁NAT默认WSL 虚拟机内部虚拟网段常见172.16.0.x仅 Windows 宿主侧localhost端口自动转发进 WSL日常开发零配置起步mirrored与 Windows 宿主共用同一个 IPWindows 与其他设备都用宿主 IP 直连端口空间共享前后端联调、微服务本地组合bridged从局域网 DHCP 独立分配如192.168.x.x局域网任意设备直连该独立 IP服务要给团队/其他机器访问动手前自查3 个确认项避免改完不生效WSL 的网络配置只在虚拟机启动时读取一次。改之前先花一分钟确认环境能省掉后面 80% 的为什么没生效。① 确认 WSL 版本支持目标模式。在 PowerShell 里执行wsl --version预期输出看到 WSL 版本号。如果低于 2.3先执行wsl --update升级否则mirrored、dnsTunneling等新特性不会被识别。② 确认配置文件位置和段落名。查看不存在会报错属正常Get-Content %UserProfile%\.wslconfig预期输出看到[wsl2]开头的段落或提示文件不存在稍后新建即可。注意文件以点开头的隐藏文件且是INI 格式不是 JSON。③ 记住重启命令。改完配置必须执行wsl --shutdown彻底关停所有 WSL 虚拟机配置才会重新加载——只关终端窗口不算重启。三问定位你的场景该选哪个模式按顺序问自己三个问题答案直接指向取值问 1谁来访问 WSL 里的服务只有你自己Windows 侧浏览器/工具→ 进问 2局域网里其他设备也要访问 → 选bridged问 2需要和 Windows 共用同一个 IP 吗需要前端在 Windows、后端在 WSL想localhost直接互访或做端口空间统一调度→ 选mirrored不需要宿主侧能访问就行 → 保持NAT不写任何配置就是它问 3有没有公司代理 / PAC且 DNS 偶发抽风有 → 无论选哪个模式都建议追加dnsTunnelingtrue让 DNS 请求走宿主隧道绕开代理 PAC 的干扰三问答完取值就锁定了。下面统一走配置流程。配置三件套改文件 → 重启 → 验证通用流程只讲一次第 1 步改文件。用记事本打开不存在就新建%UserProfile%\.wslconfig写入对应模式的[wsl2]段。第 2 步重启生效。PowerShell 执行wsl --shutdown预期输出无输出几秒内返回。再执行wsl启动系统新配置才被加载。第 3 步验证。进入 WSL 执行ip addr show eth0对照目标模式确认 IP 来源是否正确。配置键的完整定义可参考 src/windows/common/WslCoreConfig.cpp三种模式的实现分别在下文给出对应源码位置。NAT默认模式出问题先退回这里改什么[wsl2] networkingModeNAT怎么确认生效WSL 内执行curl ifconfig.me预期返回公网 IPWindows 侧执行curl http://localhost:8080端口换成你实际监听的预期返回服务页面。如果没成怎么办如果 WSL 内绑定 80、443 端口时报Address already in use说明 Windows 的 HTTP.sys 或 IIS 先占了端口直接换到 8080 这类高位端口即可。localhost端口转发的底层逻辑见 src/linux/init/localhost.cpp设计文档见 doc/docs/technical-documentation/localhost.md。NAT 引擎实现位于 src/windows/common/NatNetworking.cpp。bridged让 WSL 拿到局域网独立 IP改什么[wsl2] networkingModebridged怎么确认生效ip addr show eth0应看到192.168.x.x或10.x.x.x这类局域网网段地址而不是 NAT 常见的172.x再拿另一台同网段设备访问该 IP。如果没成怎么办如果 eth0 拿不到 IP第一嫌疑是公司网络做了 MAC 准入或 802.1x 认证——WSL 默认随机生成 MAC可在[wsl2]段追加wsl2.macAddressAA:BB:CC:DD:EE:FF固定成已准入的 MAC搞不定就退回NAT。实现见 src/windows/service/exe/BridgedNetworking.cpp。mirroredWindows 浏览器直连 Linux 服务改什么[wsl2] networkingModemirrored dnsTunnelingtrue怎么确认生效WSL 内跑python3 -m http.server 8000Windows 浏览器打开http://localhost:8000预期直接看到文件列表页面——两边共用 IP 与端口空间无需任何转发规则。如果没成怎么办如果 WSL 侧绑定端口失败先确认 Windows 侧是否已有程序监听同一端口用netstat -ano | findstr :8000排查如果企业代理下 DNS/HTTPS 异常确认dnsTunnelingtrue已写入并执行过wsl --shutdown。该模式要求 WSL 2.3 及以上版本实现见 src/windows/service/exe/MirroredNetworking.cpp。排障三步 快查表遇到问题按这个顺序走别跳步确认配置被读到——文件确实在%UserProfile%\.wslconfig段名确实是[wsl2]写法是 INI 等号形式确认重启过——执行过wsl --shutdown并且之后重新wsl启动确认模式与 IP 匹配——ip addr show eth0看到的网段符合你选的模式仍不通查这张表症状第一嫌疑第一处置WSL 内curl ifconfig.me超时宿主断网或 NAT 状态残留先确认 Windows 能上网再wsl --shutdown重来Windows 访问报端口占用Windows 进程已监听同端口netstat -ano \| findstr :8080定位进程或换端口bridged下 eth0 无 IPMAC 准入 / 802.1x 认证固定wsl2.macAddress或退回NATmirrored下代理环境 DNS 异常PAC 未作用于 Linux 侧追加dnsTunnelingtrue后重启改完完全没反应文件位置或段名错误核对%UserProfile%\.wslconfig[wsl2]收尾确认 3 件事文件在%UserProfile%\.wslconfig、段名[wsl2]、networkingMode取值是NAT/bridged/mirrored之一改完后执行过wsl --shutdown并重新进入系统ip addr show eth0的 IP 符合所选模式mirrored与 Windows 一致bridged落在局域网网段进阶可选项如果还想榨一点网络与文件系统性能可在[wsl2]段追加virtiotrue与任一模式叠加使用。最后记住没有最好的网络模式只有和你的访问方向最匹配的那个。访问方变了改一个字段、重启一次五分钟的事。【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑