TCP セッション数
ネットワーク内の TCP を介してデータを送信するには、スリーウェイ ハンドシェイク セッション確立プロセスに従います。セッションを開始するプロセスがあり、TCPセッションを終了するプロセスもあります。このトピックでは、TCP セッションの処理に伴うプロセスを理解するのに役立ちます。
ポリシーごとの TCP セッション チェックについて
デフォルトでは、すべてのTCPセッションでTCP SYNチェックおよびシーケンスチェックオプションが有効になっています。Junosオペレーティングシステム(Junos OS)は、TCPセッション中に以下の操作を実行します。
セッションの最初のパケットでSYNフラグを確認し、セッションを開始しようとする非SYNフラグを持つTCPセグメントを拒否します。
ステートフル インスペクション中に TCP シーケンス番号を検証します。
ポリシー単位のTCPセッションチェック機能により、各ポリシーに対してSYNおよびシーケンスチェックを設定できます。現在、サービス ゲートウェイの動作を制御するために、TCP オプション フラグ、no-sequence-check、および no-syn-check がグローバル レベルで利用できます。ポリシーごとの TCP オプションをサポートするために、次の 2 つのオプションを使用できます。
sequence-check-required: sequence-check-required 値は、グローバル値 no-sequence-check を上書きします。
syn-check-required: syn-check-required 値はグローバル値 no-syn-check を上書きします。
ポリシーごとのTCPオプションを設定するには、対応するグローバルオプションをオフにする必要があります。それ以外の場合、コミットチェックは失敗します。グローバルTCPオプションが無効で、SYNフラッド保護が最初のパケットを許可する場合、ポリシーごとのTCPオプションがSYNやシーケンスチェックを実行するかどうかを制御します。
ポリシー
syn-check-required
単位のオプションは、CLI コマンドの動作をset security flow tcp-session no-syn-check-in-tunnel
上書きしません。グローバルSYNチェックを無効にすると、パケットフラッディングからの防御においてデバイスの有効性が低下します。
グローバルSYNチェックを無効にし、ポリシー検索後にSYNチェックを適用すると、ルーターが処理できるパケット数に大きな影響を与えます。これにより、集中的な CPU 運用が行われます。グローバルSYNチェックを無効にし、ポリシー単位のSYNチェック適用を有効にする場合、このパフォーマンスへの影響を認識する必要があります。
TCPパケットセキュリティチェックの無効化
SRXシリーズデバイスでは、TCPパケットのセキュリティチェックを無効にして、TCP実装に欠陥のあるホストやデバイスとの相互運用性を確保できます。
このオプションは no-sequence-check
、TCPシーケンスチェックを無効にします。また、スループットも向上します。
コマンドは set security flow tcp-session no-sequence-check
、デフォルトまたはハッシュベースモードのすべてのTCPセッションでTCPシーケンスチェックを無効にします。
例:ポリシーごとのTCPパケットセキュリティチェックの設定
この例では、デバイス内の各ポリシーに対してTCPパケットセキュリティチェックを設定する方法を示しています。
要件
開始する前に、グローバル レベルで設定されている tcp オプション 、 、 tcp-syn-check
および tcp-sequence-check
を無効にする必要があります。
概要
SYN およびシーケンス チェック オプションは、すべての TCP セッションでデフォルトで有効になっています。大規模なファイル転送をサポートする必要がある環境や、非標準アプリケーションを実行する環境では、ポリシーごとにシーケンスと同期チェックを異なる方法で構成する必要がある場合があります。この例では、ポリシーのシーケンスと同期チェックを設定します pol1
。
構成
手順
手順
ポリシーレベルでTCPパケットセキュリティチェックを設定するには:
セッションを作成する前に、TCP SYNビットのチェックを設定します。
[edit] user@host# set security policies from-zone Zone-A to-zone Zone-B policy pol1 then permit tcp-options syn-check-required
ステートフルインスペクション中に、TCPセグメント内のシーケンス番号のチェックを設定します。
[edit] user@host# set security policies from-zone Zone-A to-zone Zone-B policy pol1 then permit tcp-options sequence-check-required
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正しく機能していることを確認するには、 コマンドを show security policies detail
入力します。
例:SRXシリーズサービスゲートウェイのTCPパケットセキュリティチェックの無効化
この例では、デバイスでTCPパケットセキュリティチェックを無効にする方法を示しています。
要件
開始する前に、TCPパケットセキュリティチェックを無効にする状況を理解してください。.
概要
Junos OSは、TCPパケットのセキュリティチェックを無効にするメカニズムを提供し、TCP実装に欠陥のあるホストやデバイスとの相互運用性を確保します。NO-SYNチェック中、Junos OSはセッション作成用にTCP SYNパケットを検索しません。シーケンスチェックなしは、TCPシーケンスチェックの検証を無効にします。また、スループットも向上します。SYN チェックとシーケンス チェックはデフォルトで有効になっています。set security flowコマンドは、すべてのTCPセッションでTCP SYNチェックとTCPシーケンスチェックを無効にすることで、セキュリティを軽減します。これは、大きな転送ファイルなどの顧客のシナリオや、標準で正しく動作しないアプリケーションの場合に必要な場合があります。
構成
手順
手順
次の例では、設定階層内のさまざまなレベルに移動する必要があります。その方法の詳細については、 CLIユーザーガイドの設定モードでのCLIエディターの使用を参照してください。
TCPパケットセキュリティチェックを無効にするには:
セッションを作成する前に、TCP SYN ビットのチェックを無効にします。
[edit security flow] user@host# set tcp-session no-syn-check
ステートフルインスペクション中に、TCPセグメント内のシーケンス番号のチェックを無効にします。
[edit security flow] user@host# set tcp-session no-sequence-check
デバイスの設定が完了したら、設定をコミットします。
[edit ] user@host# commit
検証
設定が正常に機能していることを確認するには、 コマンドを show security flow
入力します。
例:SRX シリーズ サービス ゲートウェイのすべての TCP セッションの最大セグメント サイズの設定
この例では、SRX シリーズ デバイスのすべての TCP セッションの最大セグメント サイズを設定する方法を示します。
要件
開始する前に、最大セグメント サイズを設定する状況を理解してください。
概要
TCP 最大セグメント サイズ(TCP-MSS)を変更することで、すべての TCP セッションを終了できます。フラグメント化の可能性を低下させ、パケットロスを防ぐために、tcp-mssを使用して、より低いTCP MSS値を指定できます。これは、MSS値が指定した値よりも高いルーターのイングレスインターフェイスを通過するすべてのTCP SYNパケットに適用されます。
DF ビットが設定されている場合、パケットはフラグメント化されず、Junos OS は ICMP エラー タイプ 3 コード 4 パケットをアプリケーション サーバーに送信します(宛先到達不能。フラグメント化が必要とされ、DF が設定されます)。この ICMP エラー メッセージには、アプリケーション サーバーが使用する正しい MTU(tcp-mss で定義)が含まれており、このメッセージを受信し、それに応じてパケット サイズを調整する必要があります。これは特に VPN で必要です。IPsec によってパケット オーバーヘッドが追加されるためです。したがって、tcp-mssは適切に下げる必要があります。
SRX シリーズ デバイスをパケット モードで実行する場合、 を set system internet-options tcp-mss 使用して TCP-MSS 値を調整します。すべてのポートは、TCP-MSS設定の影響を受けます。特定のポートを除外することはできません。SRXシリーズデバイスをフローモードで実行する場合は、 を set system internet-options tcp-mss 使用できますが、 を使用してTCP-MSS値を調整することをお set security flow tcp-mss 勧めします。両方のステートメントが設定されている場合、2 つの値のうち低い方が有効になります。
構成
手順
手順
すべての TCP セッションの最大セグメント サイズを設定するには:
すべての TCP セッションの TCP 最大セグメント サイズを設定します。
[edit security flow] user@host# set tcp-mss all-tcp mss 1300
デバイスの設定が完了したら、設定をコミットします。
[edit ] user@host# commit
結果
設定モードから、 コマンドを入力して設定を show security flow
確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
簡潔にするために、この show
コマンド出力には、この例に関連する設定のみが含まれています。システム上の他の設定はすべて省略記号(...)で置き換えられました。
[edit] user@host# show security flow ... tcp-mss{ all-tcp{ mss 1300; } } ...
検証
設定が正常に機能していることを確認するには、運用モードから コマンドを show configuration security flow
入力します。
user@host> show configuration security flow tcp-mss{ all-tcp{ mss 1300; } }
TCP アウトオブステート パケット ドロップ ロギングの概要
パケット交換ネットワーク内では、需要が利用可能な容量を超えた場合、パケットはキューに入るまで余分なパケットを保持するためにキューに入られ、パケットはドロップされます。TCP がそのようなネットワーク全体で動作する場合、エラーのないエンドツーエンドの通信を維持するために是正措置が講じます。
フロー モジュールは既に、セッション作成やセッション 終了などのセッションベースイベントの RTLOG の生成をサポートしています。SRXシリーズデバイスは、セッションを既存にすることなく、パケットドロップなどのパケットベースのイベントに対するRTLOGの生成をサポートするようになりました。
SRX シリーズ デバイスは、フロー モジュールによってドロップされた、同期されていない TCP アウトオブステート パケットのロギングをサポートします。
TCPアウトオブステートパケットドロップロギング機能は、パケットロスを回避し、エラーのない通信のために同期外れパケットをログに記録することでパケットの回復を可能にし、データベースサーバーが同期から外れないようにします。この機能は、RTLOG(セキュリティ ログ)ファシリティ上に構築されています。
TCP アウトオブステート パケット ドロップ ロギングは、以下の条件に基づく TCP パケット ドロップ ログのキャプチャをサポートします。
Session ages out—長い TCP セッションの上でクラウド アプリケーションが実行されている場合、これらのアプリケーションがセッション終了後に TCP セッションを更新しない場合、TCP パケットはドロップされます。この機能は、これらのドロップされた TCP パケットのロギングをサポートします。
Unsynchronized first packets due to attacks or asymmetric routes2つのサイトにSRXシリーズデバイスを展開する場合、 ルーティング時に非対称トラフィックを強制する場合、同期(SYN)パケットは1つのサイトで表示されますが、同期確認(SYN_ACK)パケットは別のサイトで確認されます。
これは、SRXシリーズデバイスに、一致するステートテーブルエントリーがないTCP ACKパケットを確認することを意味します。これは、一定期間接続が非アクティブであったり、接続テーブルがフラッシュされたりしたために発生する可能性があります(ポリシーのインストールや再起動など)。
この場合、別のサイトで見られるSYN_ACKパケットは、SRXシリーズデバイスによって拒否されましたが、ログに記録されませんでした。この機能は、拒否されたSYN_ACKパケットのロギングをサポートします。
Other out-of-state conditions (like TCP sequence check fail and synchronization packet received in FIN state)—SRX シリーズ デバイスがシーケンス障害を検出した場合、デバイスが TCP の 4 方向に近い状態でありながら SYN パケットを受信している場合、または 3 方向のハンドシェイク障害が発生した場合、SRX シリーズ デバイスは TCP パケットをドロップして、これらのパケットがログに記録されます。
同期されていない TCP の状態外パケット ドロップ ログは、セッションベースのログではなく、パケットベースのログです。
TCPアウトオブステートパケットドロップロギングは、CPUが攻撃されるのを防ぐスロットルメカニズムで設計されており、スロットル間隔ごとに一部のログをドロップすることができます。
フローモジュールがドロップしたTCPアウトオブステートパケットのみが記録されます。TCPプロキシとIDPによってドロップされたTCPパケットは記録されません。
TCPアウトオブステートパケットドロップロギングについて
TCP アウトオブステート パケット ドロップ ロギングの実装を理解するには、SRX シリーズ デバイスを 2 つのサイトに導入し、場合によってはルーティングによって非対称トラフィックが強制されます。SYN パケットは 1 つのサイトで見られますが、SYN_ACK パケットは別のサイトで見られます。この場合のSYN_ACKパケットは拒否されますが、ログに記録されません。TCP アウトオブステート パケット ドロップ ロギング機能は、これらの同期されていないパケット ドロップを可視化します。
データ センター内のデータベースが TCP ソケットを開いたまま、キープアライブを送信しないシナリオを考えてみましょう。データが送信されていない場合、SRXシリーズデバイスはセッションにタイムアウトします。データベースはその TCP ソケットを介してデータをいくつか送信しますが、トラフィックが SRX シリーズ デバイスに到達すると、セッションは存在しなくなり、パケットはドロップされますが、ログに記録されません。ドロップされたこれらの状態外 TCP パケットは、現在 SRX シリーズ デバイスによってログに記録されます。
サポートされている TCP アウトオブステート ロギング機能
TCPアウトオブステートロギングは、以下の機能をサポートしています。
ターゲット トラフィックをフィルタリングするパケット フィルター コンポーネント。
ログ メッセージによって CPU が過負荷状態になるのを防ぐスロットル コンポーネント。
ログ生成率を柔軟に変更できます。
パケット フィルター コンポーネント
ログ フィルターは、現在のフロー トレース フィルターを活用します。トラフィックをフィルタリングするさまざまな方法を提供します。パケット ログを生成するようにフィルターを構成する必要があり、そうでない場合はログはトリガーされません。
このフィルター機能は、ログを予期せず有効にすることを回避します。サポートされる最大フィルターは 64 です。
コマンドを set security flow packet-log packet-filter <filter-name>
使用して、必要な関連するフィルター コンポーネントを有効にします。
スロットル コンポーネント
TCPの状態外パケットをすべてログに記録すると、トラフィックが重い場合や攻撃が発生した場合にデバイスに過負荷が発生する可能性があります。CPU がアイドル状態で、できるだけ多くのメッセージをログに記録したい場合、CPU 過負荷が発生する可能性があります。
スロットル メカニズムでは、CLI からスロットル間隔を設定できるため、CPU が過負荷状態から保護できます。
ハッシュテーブルが導入され、ログに記録されたデータがマッピングされます。ハッシュキーは、送信元IPアドレス、宛先IPアドレス、送信元ポート、および宛先ポートで生成されます。
スロットル間隔ごとに、制限された数(1 つ以上)のメッセージのみが RTLOG に送信されます。残りのログメッセージは調整されます。
デフォルトのスロットル間隔は1秒です。スロットル間隔(ミリ秒レベル)は、2または0(0、1、2、4、8、16.)の電力として設定する必要があります。2^N)。
スロットル間隔を 0 に設定すると、スロットル メカニズムは関与しません。これは、トラフィックが非常に軽く、すべてのパケット ドロップ ログを記録するシナリオに適しています。
スロットル間隔を 2^N に設定すると、スロットル メカニズムはロックレスになり、良好なログ キャプチャパフォーマンスを提供します。
ログ生成レートを変更する柔軟性
スロットル間隔セットに基づいて、ログ生成レートを変更および管理できます。
つまり、各 32 ミリ秒(ms)の間隔内で、生成されるログの数は限られており、残りのログはドロップされる可能性があることを意味します。間隔を(0、1、2、4、8、16、32.)に設定することをお勧めします。2^N)。
入力値が 2^N に揃っていない場合、フロー処理中に自動的に 2^N に位置合わせされます。例えば、10-ms間隔を設定した場合、それは自動的に8-ms間隔に合わせて調整されます。
受信フラグメント化特性を維持することでスループットを向上させる方法を理解する
このトピックでは、SRX シリーズ デバイスを使用して受信パケット フラグメントの特性を保持するメリットについて説明します。
データがあるホストから別のホストに送信されると、一連のパケットとして送信されます。最大サイズのパケットがデータパス内のリンクでフラグメント化されることなく、ソースノードから宛先ノードへのパスを転送できる場合、パフォーマンスが向上し、ネットワークリソースが節約されます。パケットがそのリンクのために確立された最大送信単位(MTU)よりも大きいため、パス内のリンクを通過するためにパケットをより小さなパケットにフラグメント化する必要がある場合、その結果得られる各フラグメントには、ペイロード、またはデータに加えて、パケットヘッダー情報が含まれている必要があります。オーバーヘッドが増加すると、スループットが低下し、ネットワークパフォーマンスが低下する可能性があります。また、パケット フラグメントは宛先ノードで再構築する必要があり、追加のネットワーク リソースを消費します。
一方、ホストがパスMTU(パス最大送信単位)よりもはるかに小さいパケットを送信すると、ネットワークリソースが無駄になり、最適でないスループットになります。パスMTU検出プロセスは、データパスをソースノードからセッションの宛先ノードに転送するフラグメントに最適なMTUサイズを検出するために機能します。最適なパケット サイズはパス MTU です。フラグメント化は、パケットのサイズがパスMTUを超えた場合に発生します。
SRX シリーズ デバイスでアプリケーションレイヤー サービスが設定されている場合、サービスを適用してコンテンツを検査する前に、イングレス インターフェイスのパケット フラグメントを再構築する必要があります。これらの再アセンブリされたパケットフラグメントは、データがエグレスインターフェイスから送信される前に、再び分解する必要があります。通常、SRX シリーズ デバイスから次のリンクに送信されるフラグメントのサイズを決定するのは、エグレス インターフェイスの MTU サイズです。SRX シリーズ デバイスのエグレス MTU サイズがパス MTU よりも大きい場合、再びデータパスでパケットがフラグメント化され、パフォーマンスが低下したり、パケット ドロップが発生したりする可能性があります。パケット フラグメントは、送信元から宛先へのパス内のすべてのリンクを通過するのに十分小さくなければなりません。
デフォルトでは、SRXシリーズデバイスは、エグレスインターフェイスに設定されたMTUサイズを使用して、送信するパケットフラグメントのサイズを決定します。ただし、受信フラグメント特性を保持する機能を有効にすると、SRX シリーズ デバイスが検出し、受信パケット フラグメントのサイズを節約します。
データパスにおけるパケットフラグメント化の可能性を減らすには、SRXシリーズデバイスがそのフローのエグレスMTUを追跡して調整します。これは、すべての受信フラグメントの最大サイズを識別します。この情報をエグレスインターフェイスの既存のMTUと組み合わせて使用して、エグレスインターフェイスから送信されたフラグメントパケットの正しいMTUサイズを決定します。SRX シリーズ デバイスは、2 つの数値を比較しています。より小さな数を取得し、エグレスインターフェイスMTUサイズに使用します。
コマンドを使用してデバイスを set security flow preserve-incoming-frag-size
設定し、受信パケット フラグメントのサイズを考慮した機能を有効にします。
表1 は、SRXシリーズのエグレスMTUサイズの決定方法をまとめたものです。
受信フラグメント サイズ |
既存のエグレス MTU サイズ |
最終エグレスMTUサイズ |
---|---|---|
最大フラグメントが |
既存のエグレスMTUサイズよりも小さい |
最大の受信フラグメント サイズが使用されます。 |
最大フラグメントが |
既存のエグレスMTUサイズよりも大きい場合 |
既存のエグレスインターフェイスMTUが使用されます。 |
この機能は、SRXシリーズデバイスでサポートされています。トンネルから出る通過トラフィックとトラフィックをサポートします。これは、IPv4とIPv6の両方のトラフィックに適用されます。
フラグメント サイズに影響を与える 2 つの考慮事項を次に示します。
UTMやALGなどのストリームベースのアプリケーションでは、フラグメントを受信しなくても、アプリケーション自体がパケットを変更または再構築できます。この場合、既存のエグレスインターフェイスMTUが使用されます。
パスMTU検出パケットがセッションに配信されると、そのセッションのパスMTUはパスMTUパケットによって確立された値にリセットされます。
set security flow preserve-incoming-frag-size
設定し、受信パケット フラグメントのサイズを考慮した機能を有効にします。