368 字
2 分钟
使用本机LAN IP访问WSL2中暴露的Web服务
1. 环境概览
| 环境 | 版本 |
|---|---|
| Windows 11 | 10.0.26100.7462 |
| WSL | 2.6.3.0 |
| WSL内核 | 6.6.87.2-1 |
| WSLg | 1.0.71 |
2. 问题
当我想测试二维码预览文件功能时,发现启动的Web服务无法通过局域网具体ip访问,只能在本机上使用localhost:9098这样的路径访问。
起初我以为是一个比较简单的问题,于是在Gemini 3.0 Pro上面询问了一番,只不过并没有解决我的实际问题。
当然,为了节省时间,你可以跳过这一段往下看
2.1 LLM的解决方案
无外乎就是防火墙开放端口以及设置网络环境为Private这两个方案,你反馈都不行它会告诉你将.wslconfig中的firewall置为false。
但这些方案仅仅是常规操作,解决的是因防火墙以及网络环境带来的问题,但本机会因为WSL的默认设置无法使用LAN IP访问服务。
2.2 实际解决方案
其实事情很简单,这是因为WSL2默认情况下压根就没有做除了host以外的loopback address。
参考:
- mirrored networking mode doesn’t allow host to use IP to reach the service in WSL
- hostAddressLoopback
WSL默认只会将loopback address路由到127.0.0.1上面,但并没有映射IP地址,导致你无法从LAN IP中访问你的服务。
简单来说,配置你的.wslconfig
[experimental]hostAddressLoopback=true重启电脑后即可访问,仅仅通过wsl --shutdown重启WSL可能不会生效。
使用本机LAN IP访问WSL2中暴露的Web服务
https://blog.astro777.cfd/posts/development-environment/accessing-wsl2-from-lan/