我在通过 Cisco ASA5505 VPN 将文件从一台 Windows 2012 服务器复制到另一台服务器时遇到问题。我在 Win2008 服务器上进行过类似的设置,但从未遇到过问题(与此端相同的 ASA5505)
对于大约 20MB 或更多的每 20 个文件中的大约 1 个(每天一次或两次),我往往会导致数据损坏。
损坏往往以大约 5 个损坏区域的形式出现(有时都位于文件的 1MB 部分内),每个区域大约 12 个字节长,整个文件中总共有大约 60 个损坏字节。文件大小不变。
我已经通过本机 SQLServer 日志传送副本和 robocopy 看到了这一点。
与此相关的是,当我使用 Windows 拖放复制 40GB 文件时,复制通常在 15-30GB 后失败(或复制有一些损坏)。当我复制 Win2012 -> VPN -> SBS2011,然后复制 SBS2011 -> Win2012 时,这似乎没有发生。
ASA5505 上似乎未启用压缩。在标准 NetMonitor SMBErrors 跟踪中未发现任何错误。
这是 VPN(或网络 - TBC),而不是 Windows 问题。
这是我找到它的方法。
在 VPN 的两端运行 Microsoft 网络监视器后,我设法捕获了与损坏的文件内容相关的 TCP/IP 数据包。在远端捕获的数据包没有损坏。目的地的数据包已损坏。
为了找到坏的网络数据包,我十六进制转储了文件的好版本和坏版本,然后使用 KDiff3 比较了十六进制。然后,我在 NetMonitor 捕获中搜索文件损坏之前发生的 4 字节十六进制模式。我找不到这种模式,所以我在损坏后尝试了另一种模式,找到了它,然后通过字节向后工作到有问题的块(第一个模式跨越了数据包边界)。