简单记录 WSL2 的网络模式。
一、疑惑
偶然的机会,发现 WSL 和 宿主机共享一个 localhost,非常的方便。不过
- 一直疑惑实现原理(共享
localhost) - 以及外部机器该如何访问到 WSL。(内部访问外部是容易的)
二、网络模式
2.1 NAT 模式(默认)
WSL2 默认是 NAT 模式。和 Vmware Workstation 的 NAT 没什么区别。
问:那为什么在 Windows 本机上 localhost:端口 能访问到 WSL 里的服务?
答: Windows 额外做了一个叫 localhostForwarding 的便利功能,把本机对 localhost 的请求悄悄转发进 WSL 那台小虚拟机。
这座桥只对 Windows 本机生效。它本质是一座”宿主机回环 → WSL 虚拟机”的私桥。
所以其实本质并不是”共享”:是 Windows 能通过 localhost 访问到 WSL 里的服务;反过来,WSL 用 localhost 是访问不到 Windows 的(在 WSL 里 localhost 指的是它自己)。刚刚验证,果然如此。
2.2 镜像模式(mirrored)
镜像模式下,WSL2 没有自己的网卡,而是直接镜像/共享宿主机的真实网络接口和 IP。WSL 和 Windows 等于站在同一组网卡后面,看到的是同一套网络视图。
所以两者的根本区别一句话能说清:
NAT:WSL 有自己隔离的私有网卡,只能靠”宿主机专用的 localhost 转发”从本机单向进入,局域网看不见它。
镜像:WSL 直接用宿主机的网卡,跟宿主机一起暴露在局域网里。
三、开启镜像模式
需要 Windows 11 22H2 及以上 + 较新的 WSL。
- 编辑
C:\Users\<你>\.wslconfig
1 | [wsl2] |
- 重启
WSL
1 | wsl --shutdown |
- 放行 Hyper-V 防火墙
1 | New-NetFirewallHyperVRule -Name "MyService" -DisplayName "My Service" ` |
四、参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 一世贪欢的私域!
评论





