跳到主要内容

2 篇博文 含有标签「Docker」

Container / Devcontainer / Docker-compose

查看所有标签

Docker端口转发RST排查:Hyper-V端口冲突

· 阅读需 6 分钟
RibomBalt
CTF enthusiastist, GeoPhysics PhD, Amateur coder

TL;DR;

  • 在 Windows Docker Desktop 中,通过端口转发(如 -p 50022:80)访问容器内 HTTP 服务时,客户端收到大量 RST 包,连接被拒绝。
  • 使用 Wireshark 抓包后发现 RST 由宿主机 Windows 发出,且发生在三次握手后立即。
  • 诊断脚本 netsh int ipv4 show excludedportrange protocol=tcp 发现映射的端口(50022、50023)落在 Hyper‑V 预留的排除范围(50000–50059)内。
  • 根本原因是 Windows 的 WinNAT / Hyper‑V 预留了该端口段,Docker 的端口转发进程(docker-proxy)无法成功监听,导致系统返回 RST。
  • 解决方案:更换端口至不在排除列表中的端口(如 8080)即可解决。也可通过重启 WinNAT 后立即映射抢占,但不推荐。