![破損したファイルのコピー Windows 2012 -> VPN -> Windows 2012](https://rvso.com/image/617824/%E7%A0%B4%E6%90%8D%E3%81%97%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC%20Windows%202012%20-%3E%20VPN%20-%3E%20Windows%202012.png)
Cisco ASA5505 VPN 経由で Windows 2012 サーバーから別のサーバーにファイルをコピーするときに問題が発生します。Win2008 サーバーで同様の設定を行ったことがありますが、問題は発生していません (こちら側は同じ ASA5505 です)
約 20 MB 以上のファイルの場合、20 個に 1 個程度 (1 日に 1 回または 2 回) でデータ破損が発生する傾向があります。
破損は、約 5 つの破損領域 (ファイルの 1 MB セクション内にすべて局在する場合もあります) の形で発生する傾向があり、各領域の長さは約 12 バイトで、ファイル全体で約 60 バイトの破損が発生します。ファイル サイズは変わりません。
私はネイティブ SQLServer ログシップ コピーと robocopy でこれを確認しました。
これに関連して、Windows のドラッグ アンド ドロップを使用して 40 GB のファイルをコピーすると、通常、15 ~ 30 GB あたりでコピーが失敗します (または、コピーに何らかの破損が生じます)。Win2012 -> VPN -> SBS2011 をコピーし、次に SBS2011 -> Win2012 をコピーすると、この問題は発生しないようです。
ASA5505 では圧縮が有効になっていないようです。標準の NetMonitor SMBErrors トレースでエラーは検出されませんでした。
答え1
これは Windows の問題ではなく、VPN (またはネットワーク - TBC) の問題でした。
私がそれを見つけた方法は次の通りです。
VPN の両端で Microsoft ネットワーク モニターを実行した後、破損したファイル コンテンツに関連する TCP/IP パケットをキャプチャすることができました。リモート エンドでキャプチャされたパケットには破損はありませんでした。宛先のパケットが破損していました。
不良ネットワーク パケットを見つけるために、ファイルの正常バージョンと不良バージョンを 16 進ダンプし、KDiff3 を使用して 16 進数を比較しました。次に、NetMonitor キャプチャを検索して、ファイルの破損の直前に発生した 4 バイトの 16 進パターンを探しました。このパターンは見つからなかったため、破損の直後に別のパターンを試して見つけ、問題のブロックまでバイトを逆方向にたどりました (最初のパターンはパケット境界を越えました)。