やっとVPN問題が解決した

FW切替後、VPNを再設定したところ、厄介な問題が発生していました。結果からみると、よくある話(MTUサイズの調整不足)だったのですが、途中で起こったことが珍しいことだったので、ブログに書いておこうと思います。

IPSecVPNを設定。双方のセグメントにあるホストへPingがきれいに通り、無事開通、と思ったのもつかの間。リモートサイトにある端末からローカル側のサーバにHTTPでアクセスできません。

私の作業用PCで確認したところ、サクサクに動いてます。が、お客様のPCではNGです。どうやっても繋がりません。Pingは通るのに。

作業用PCとIPアドレスを入れ替えてもNG。お客様のPCをリカバリにかけてみてもNG。

時間をおいて、会社から違うPCを持ち込んだところ、これまたサクサク動く。

完全に手詰まりです。

基本に立ち返ってWiresharkでパケットキャプチャしたところ、[TCP segment of a reassembled PDU]の嵐。

ここでようやくMTUサイズ問題だと気づきました。

ルータでMTUを大幅に下げたところ、あっさりと接続。めでたしめでたしです。

しかし、どうして作業用PCや社から持ち込んだPCではOKで、お客様のPCではNGだったのか。

どうやら、Path MTU Black Hole Detection機能が関係しているようです。

Configure TCPIP stack settings in Windows NT にある

To configure Path MTU Black Hole Detection:

[HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services Tcpip Parameters]
EnablePMTUBHDetect = 0 (Enabled = 1, Disabled = 0, Default = 0)
Note Windows 2003 SP2, Windows XP SP3 and Windows Vista enables black hole detection by default, and changes the PMTU to 536 bytes if retransmissions occurs (If the following retransmission also fails then the PMTU is returned to its original size). More Info MS KB Q925280
More Info MS KB Q136970
More Info MS KB Q159211
More Info MS KB Q314825

このあたりの記述にヒントが。NGだったお客様のPCはWindowsXPSP2、持ち込んだPCはVista、作業用PCは7でした。

どうやらOKだった端末はMTUサイズのエラーを検知して、自動的にMTUを縮めていたようです。

なまじ接続が出来るPCがあったもので、解決までかなり時間がかかってしまいましたが、理屈の通る現象で一安心です。