无法从Windows 11主机通过localhost访问WSL2中的Python http.server(端口7070)
我在Windows 11的 WSL2(Ubuntu)实例里运行一个Python HTTP服务器,但无法从Windows主机的浏览器访问它。
以下是在WSL2终端中执行的操作:
drown@DESKTOP-N9JM9BA:/mnt/c/Windows/system32$ python3 -m http.server 7070
Serving HTTP on 0.0.0.0 port 7070 (http://0.0.0.0:7070/) ...
问题描述:
当我尝试使用以下任一URL,从Windows 11主机浏览器访问服务器时,连接超时,页面没有加载:
http://localhost:7070/http://127.0.0.1:7070/http://0.0.0.0:7070/
环境:
- 操作系统: Windows 11
- WSL版本: WSL 2
- WSL发行版: Ubuntu
以下是我的WSL设置

我已检查:
- 服务正在
0.0.0.0上监听,这在理论上应该允许外部连接。 - WSL2正在运行,终端输出中没有错误信息。
为什么Windows 11主机无法将 localhost 请求转发到WSL2 VM的这个端口?是否需要某些特定的Windows防火墙规则或WSL网络配置来修复?
非常感谢任何帮助!
解决方案
开启镜像网络模式后,localhost 转发应该可以原生工作——在这种模式下,WSL2共享Windows的网络栈。问题在于Hyper-V防火墙(你设置中也启用)是一个独立的防火墙层,专门过滤WSL流量,独立于Windows Defender防火墙。
修复方法——以管理员身份在PowerShell中运行以下命令:
New-NetFirewallHyperVRule -DisplayName "WSL Allow 7070" -Direction Inbound -Action Allow -Protocol TCP -LocalPorts 7070 -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'
GUID 40E0AC32... 是标准的WSL2 VM创建者ID——无需查找。
要永久允许来自WSL的所有端口,而不是逐个端口设置:
New-NetFirewallHyperVRule -DisplayName "WSL Allow All Inbound" -Direction Inbound -Action Allow -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'
执行任一命令后无需重启WSL。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。
相关文章
Copyright © 超人AI导航
辽ICP备2024029316号-4