如何让WSL中运行的Flask应用允许公网/外部设备访问?
WSL中Flask应用外部无法访问的临时解决办法
以下是针对WSL2环境下Flask应用无法被外部设备/公网访问的临时解决方案(适合短期协作场景):
确认WSL内部IP
在WSL终端执行ip addr show eth0,找到inet字段后的IP地址(格式类似172.x.x.x),记录该地址备用。配置Windows端口转发
以管理员身份打开PowerShell,执行以下命令(替换WSL_IP为刚才查到的WSL内部IP,5000为Flask使用的端口):netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5000 connectaddress=WSL_IP connectport=5000可通过
netsh interface portproxy show all验证转发规则是否生效。开放Windows防火墙端口
两种操作方式任选:- 图形化操作:打开Windows Defender防火墙→高级设置→添加入站规则,选择「端口」类型,指定TCP端口(如5000),允许连接,命名规则后完成配置。
- 命令行操作(管理员PowerShell):
New-NetFirewallRule -DisplayName "WSL Flask Port 5000" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow
确保Flask正确启动
启动Flask时必须明确绑定0.0.0.0和指定端口,示例启动命令:flask run --host=0.0.0.0 --port=5000或在代码中指定:
if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)公网访问额外配置
若需要公网访问,需登录路由器后台添加端口转发规则:将路由器的公网端口(如5000)转发到你的Windows笔记本本地IP的对应端口(5000)。注意:公网暴露端口风险极高,协作结束后务必删除该规则。
协作完成后,请及时清理配置:用
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=5000删除端口转发规则,并在防火墙中移除对应的入站规则,消除安全隐患。
内容的提问来源于stack exchange,提问作者Ankit Sahay
相关产品推荐
相关产品推荐

