查看: 146|回复: 0

WSL2 Docker端口映射失败:重启winnat与检查保留端口

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
在 Windows 上使用 WSL2 + Docker 时,把容器端口映射到 MQTT 常用的 1883 端口,可能会遇到绑定失败。现象很迷惑:用 netstat 或 lsof 检查时看不到进程占用 1883,但 Docker 就是无法完成端口映射。

这通常不是端口被某个进程占用,而是 Windows 将该端口放进了 Excluded Port Range(保留端口范围)。保留范围内的端口在系统层面不可供 Docker 使用,所以从进程检查角度看起来是空闲的,实际却无法绑定。

解决方法是重启 Windows NAT 服务(winnat)。重启 NAT 服务会短暂中断 WSL 和 Docker 的网络连接,操作前请先停止依赖这些网络的容器,并使用管理员身份打开命令提示符或 PowerShell。
  1. net stop winnat
  2. net start winnat
复制代码

执行后重新尝试启动容器并映射 1883 端口。如果重启 NAT 服务后仍然无法绑定,再检查系统保留端口范围:
  1. netsh interface ipv4 show excludedportrange protocol=tcp
复制代码

查看输出中的起止端口范围是否包含 1883。例如某个范围是 1800-1899 时,1883 就属于系统保留端口,Docker 自然无法绑定。

实际排查可以按这个顺序进行:先确认 Docker 端口映射失败,再用 netstat 或 lsof 排除常规端口占用,接着检查 Windows Excluded Port Range,必要时重启 winnat,最后重新启动容器验证映射。这样可以避免把系统保留端口误判成应用进程占用问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-9-27 16:23 , Processed in 0.024231 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部