SMB 连接期间的 TCP 三向握手失败

本文介绍如何排查 SMB 连接期间传输控制协议(TCP)三向握手失败的问题。

分析网络跟踪时,你会注意到发生 TCP 三向握手失败,导致 SMB 问题发生。

通常情况下,原因是本地防火墙或基础结构防火墙阻止了流量。 在以下任一情况下都可能出现此问题。

TCP SYN 数据包到达 SMB 服务器,但 SMB 服务器不会返回 TCP SYN-ACK 数据包

若要对此方案进行故障排除,请执行以下步骤:

  1. 运行 netstatGet-NetTcpConnection 确保 TCP 端口 445 上有一个侦听器,该侦听器应该归 SYSTEM 进程所有。

    netstat -ano | findstr :445
    
    Get-NetTcpConnection -LocalPort 445
    
  2. 确保服务器服务已启动并运行。

  3. 执行 Windows 筛选平台 (WFP) 捕获来确定哪个规则或程序正在丢弃流量。 为此,请在命令提示符窗口中运行以下命令:

    netsh wfp capture start
    

    重现此问题,然后运行以下命令:

    netsh wfp capture stop
    

    运行方案跟踪,查找 SMB 流量中的 WFP 丢弃(在 TCP 端口 445 上)。

    (可选)你可以删除防病毒程序,因为它们并不总是基于粮食计划署。

  4. 如果启用了 Windows 防火墙,请启用防火墙日志记录,以决定它是否记录流量丢弃。

    确保在“高级安全 Windows 防火墙”>“入站规则”中启用相应的“文件和打印机共享 (SMB-In)”规则。

    注意

    “Windows 防火墙”可能称为“Windows Defender 防火墙”,具体取决于你的计算机的设置情况。

TCP SYN 数据包永远不会到达 SMB 服务器

在此情况中,你必须调查网络路径上的设备。 你可以分析每个设备上捕获的网络跟踪,以确定哪个设备正在阻止流量。