WSL2中localhost:<端口>可访问,<WSL_IP>:<端口>无法访问求助
WSL2 服务无法通过WSL IP访问的排查与解决
以下是针对该问题的具体排查方向和解决方法:
1. 检查WSL内部防火墙(ufw)限制
Ubuntu默认启用的ufw防火墙可能会阻止外部主机通过WSL IP访问服务:
- 在WSL终端执行
sudo ufw status,查看防火墙状态。如果显示active,则需要允许对应端口的访问:sudo ufw allow 6999/tcp - 也可以临时关闭ufw测试是否能访问:
sudo ufw disable
2. 修正Windows防火墙入站规则配置
即使你添加了入站规则,可能存在规则范围不匹配的问题:
- 打开「Windows Defender防火墙 -> 高级设置 -> 入站规则」,找到你添加的端口规则
- 右键选择「属性」,切换到「高级」标签页,确保所有网络接口都被勾选(至少要包含
vEthernet (WSL)虚拟网卡) - 切换到「常规」标签页,确认规则的「作用域」中,远程IP地址设置为「任何IP地址」
3. 重置WSL网络配置
WSL2的NAT网络偶尔会出现路由异常,导致IP访问失效:
- 以管理员身份打开Windows命令提示符,执行以下命令关闭WSL:
wsl --shutdown - 然后重置Windows网络组件:
netsh winsock reset netsh int ip reset - 重启电脑后重新启动WSL,测试访问
4. 确认服务绑定的地址
虽然你的脚本中绑定的是""(对应0.0.0.0,允许所有IP访问),但可以通过命令确认:
- 在WSL终端执行:
ss -tulpn | grep 6999 - 检查输出中
LISTEN对应的地址是否为0.0.0.0:6999或:::6999。如果是127.0.0.1:6999,则服务仅允许WSL内部访问,需要修改脚本绑定地址为0.0.0.0
内容的提问来源于stack exchange,提问作者vkmjapan
相关产品推荐
相关产品推荐

