web-dev-qa-db-ja.com

Cisco適応型セキュリティアプライアンスは、SYNフラグが設定されていないパケットをドロップしています

DMZ内にApacheインスタンスがあり、ネットワーク内の内部NATed Tomcatインスタンスにリクエストをプロキシするように構成されています。正常に動作しますが、ApacheからTomcatへの突然のリクエストはすべてインスタンスは、Apacheログで次の処理を停止します。

[エラー](70007)指定されたタイムアウトの期限が切れました:ajp_ilink_receive()はヘッダーを受信できません

Ciscoログビューアを調べると、次のことがわかります。

エラーメッセージ%ASA-6-106015:Deny TCP(no connection)from IP_address/port to IP_address/port flags tcp_flags on interfaceinterface_name。説明アダプティブセキュリティアプライアンスアダプティブセキュリティアプライアンス接続テーブルに接続が関連付けられていないTCPパケットを破棄しました。アダプティブセキュリティアプライアンスは、新しい接続を確立する要求を示すSYNフラグをパケット内で検索します。 SYNフラグが設定されておらず、既存の接続がない場合、適応型セキュリティアプライアンスはパケットを破棄します。

推奨処置適応型セキュリティアプライアンスがこれらの無効なTCPパケットを大量に受信しない限り、不要です。この場合は、パケットを送信元までトレースして、これらのパケットが送信された理由。

すべてのマシンはVMwareを使用して仮想化されており、デフォルトでは、マシンはIntelE1000エミュレートNICを使用しています。ネットワーク管理者は、問題を修正するためにこれをVMXNET3ドライバーに変更しました。断続的な問題であるため、問題が解決しないかどうかを確認する必要があります。

この問題を引き起こしている可能性のある他の何かがありますか?これは、同様の問題が発生した最初のサービスではありません。

Apacheホストは、カーネルバージョン3.0.0-17-serverでUbuntu11.10を実行しています。カーネル2.6.18-308.16.1.el5を実行しているRHEL5(5.8)でもこの問題が発生しました。このマシンには、E1000NICもあります。

[〜#〜] note [〜#〜]:私はネットワーク管理者ではなく、これらのシステムを担当するソフトウェアアーキテクトおよびアナリストプログラマーです。

1
Brett Ryan

問題は、ASAが一定期間後に持続的接続を閉じることであることが判明しました。接続を閉じると、再度呼び出しが行われたときにRSTメッセージを送信しないように設定されています。

これが問題を引き起こす理由を理解するために、ここで説明します。

  1. Apacheは、成功する最初の接続を作成します。
  2. ASAのリセット時間よりも長い遅延の後、ASAは接続を閉じます。
  3. リクエストが行われ、Apacheは接続が開いていると思われるものを送信しようとし、TimeOut-デフォルトの300秒後にタイムアウトします。
  4. Apacheはクライアントにエラーを送信します

プールされた接続がまだ開いている場合、ここでの問題は増幅されます。たとえば、Apacheが5つのプールされた接続で開始し、上記の接続を閉じた後でも、クライアントが要求を成功させる前に、さらに4回この動作を示します。

これを克服する方法はいくつかあります。

  1. ASAが信頼するクライアントにRSTメッセージを送信できるようにします。
  2. mod_proxy:ProxyPass - keepaliveの構成をOnに設定します
  3. mod_proxy:ProxyPass - ttlの構成をファイアウォールのリセット時間よりも短い時間に設定します。

mod_proxy:ProxyPass - timeoutmod_proxy:ProxyPass - connectiontimeoutを低く設定しようとしないでください。たとえば、WebサービスやReSTエンドポイントなど、Tomcatインスタンスに長時間実行される操作が存在する場合、それらが失敗し始める可能性があります。この時間より長く。

私たちの解決策は、最初の2つのオプションの両方を実行することです。

1
Brett Ryan