【質問】
AR550Sルータにファイアウォールを設定し、LAN側にWebサーバを設置してインターネットに公開している。
概ね問題なく動作しているものの、以下のような現象が発生し、完全に動作しているとはいえない。
原因及び解消法は?
(1)画像ファイルが一部欠けることがある
(2)特定のキャリアの携帯電話からのアクセスが遅い
(3)VPN接続先からのファイル共有が一部できない
(この下は自動配信されるネット広告スペースです)
【回答】
AR550S, AR560S, AR570S他アライドテレシスのルータにファイアウォール機能を設定した場合、SYN flood攻撃を防御するため、デフォルトではルータがWAN側からのSYNに対して代理応答するような仕様となっています。
詳細はこちら。
この機能が、時には質問にあったような不安定な動作を招く場合があります。
(1)画像ファイルなど、一部のファイルがサーバからダウンロードできない
ルータのSYN代理応答機能が有効になっている場合で、ネットワークやサーバが高負荷状態にある場合、ルータからサーバへのSYNパケットが届かない場合があります。また、ルータからサーバへのACKパケットが届く前に、クライアントからサーバへデータパケットが送られる場合があります。いずれもサーバは3ウェイハンドシェイクが完了していないため、コネクションを確立することができず、ファイルの転送に失敗してしまいます。
(2)特定のキャリアの携帯電話からのアクセスが遅い
通常、3ウェイハンドシェイクの手順が完了するまでは、実際のデータの転送は行わない決まりとなっています。
但し、SYNパケット、SYN-ACKパケット、ACKパケットは、TCPフレームのTCPヘッダ中にあるSYNフラグやACKフラグを立てたパケットであるため、TCPデータメッセージ部が空いた状態となっています。
ある携帯電話会社では、データ量を節約するために、このACKパケットのデータメッセージ部に実際のデータを乗せるような仕様としています。なお、この仕様はRFCに違反していると考えられます。
ルータの代理応答機能が有効になっている場合、ACKパケットに載せられたデータメッセージはサーバに届きません。この場合、TCPフレーム消失と見なされた再送信が行われることとなり、その分アクセスが遅くなってしまいます。
(3)VPN接続先からのファイル共有が一部できない
Windowsのファイル共有では、NETBIOS用にTCPの137,139番、UDPの137番,138番ポートを使用します。
また、ダイレクト・ホスティングSMBサービス用にTCP/UDPの445番ポートを使用します。
NETBIOSは主にWindows 9x/Me/NT/2000といった古いOSで使用されており、それ以降のOSではダイレクト・ホスティングSMBサービスが主に使用されています。但し旧版のWindwosとの互換性を保つために、通常は新しいWindowsでもNETBIOS用のポートが有効になっています。
WindowsXP以降のクライアントでは、まずTCP/445番から接続を試みるようになっており、サーバのTCP/445番ポートに向かってSYNパケットを送ります。相手側サーバでTCP/445を使用していない場合、SYNパケットに代理応答するルータが無ければ、ポートがポートが閉じられていることを示すRSTフラグをセットしたTCPパケットが戻ってくるので、クライアントはTCP/139に切り替えて接続を試みます。これにより古いOSとの互換性を保ってます。
ここにSYNパケットに代理応答するルータが介在した場合、RSTフラグをセットしたTCPパケットが戻らず、SYN-ACKが戻ってくるので、そのままサーバのTCP/445に向かってデータ転送を行ってしまい、通信不能に陥ってしまうのです。
回避方法
これらの問題を回避するには、以下のコマンドにより、SYNに対する代理応答を停止します。
disable firewall policy=(ポリシー名) tcpsetupproxy |