回線障害のあと支店が戻ってくるとき、ゲートウェイは通常の日には決して現れないものを見ます。数十台のノート PC が一つの公開アドレスから一斉に到着するのです。どれも正規の端末で、どれもまだ完了していない IKE 交換を開始します。このバーストが成功するかどうかは、サーバーが何人の従業員を収容できるかとは無関係な制限にかかっています。バーストは短く、まさにその作業負荷に耐えるためにアドミッション経路は作られています。

一台のノート PC がネットワークに戻る道筋をたどる

クライアントは最初の要求を送って待ち、交換が完了するまでゲートウェイはその試行のアドミッション状態を保持します。同じアドレスの背後にある他の端末は、最初の端末がまだ待っている間に到着し、ユーザーではなくアドレスを数える制限の後ろに並びます。外から見た症状は、接続できる少数のユーザーと、タイムアウトするより大きなグループです。

この流れのどこにも障害はありません。アドミッション経路が設定どおりに動いているだけです。

半開の作業を独立したリソースとして数える

strongSwan は二つの集団を分けます。完全に確立されたアソシエーションと、まだ接続中または処理待ちの試行です。ブロックしきい値は一つのピアアドレスに帰属する半開アソシエーションに適用され、Cookie しきい値はグローバルおよびアドレスごとに適用されます。これらのカウンターは、未認証の作業にデーモンが食いつぶされるのを防ぎます。それはまさに再接続ストームの形です。その状態は 確立済みトンネルの一覧 には現れません。

これらを従業員セッションの上限と読むのが、すべてを一度に引き上げてしまう誤りです。四百本の確立済みトンネルを抱えるサーバーが、四百個の同時ファーストパケットを自動的に吸収できるわけではありません。二つのコストは別の場所で発生するからです。

認証の遅延が、各試行が半開の数に残る時間を決めます。応答の遅いバックエンドは、到着率が控えめでも短いバーストを長い待ち行列に変えます。

swanctl --stats
swanctl --list-sas | grep -c ESTABLISHED

アドミッション設定を変更する前に読む

稼働中のデーモンが実際に読み込んだ値を、意見を形成する前に見つけます。設定は多くの場合、メインファイルとプラグインごとの断片を置くディレクトリに分かれているため、ある場所で設定した値が別の場所で上書きされることがあります。以下の検索は、これらの設定に言及するすべてのファイルを表示します。

次に、どの数値が小さすぎるかを決めます。一つのアドレスが正当に支店全体を表すなら、アドレスごとのブロックしきい値がその集中を受け止める値です。グローバルな Cookie しきい値はより広い洪水からデーモンを守るもので、一つの拠点が再接続するからといって緩めるべきではありません。そのアドレスごとの値を、実際に持っている最大の拠点と比較してください。

Cookie の仕組みは有効なままにします。Cookie は、デーモンが交換に実際の作業を費やす前に、クライアントが主張するアドレスで受信できることを証明させます。無効化は中立的な容量増強ではありません。しきい値を上げるのは、測定された到着率と、その背後にある明示された認証予算がある場合だけにしてください。

grep -rn -E 'block_threshold|cookie_threshold' /etc/strongswan.conf /etc/strongswan.d/
swanctl --stats | grep -i half

定常状態だけでなく、復帰のために計画する

確立済みセッションだけを数える可用性目標は、静かな午後を描いており、復旧を描いていません。代わりに、共有ネットワークイベントの後に想定された集団がどう戻るか、アドミッション経路がその形を吸収できるかを問うてください。

管理されたフリート全体で再接続をずらすほうが、制限を大きくするより安く済むことがよくあります。人工的なバーストを取り除き、そのために恒久的に払う必要がないからです。半開の状態とアドミッションイベントを、確立の成功と並べて監視し、成功が横ばいなのに半開の数が増える場合は、珍しい話ではなく早期警告として扱ってください。

これらの設定についてのベンダーの参照先は strongswan.conf のドキュメント です。そこにはカウンターと、アドレスごとの Cookie しきい値を導入したリリースが記されています。最新のページではなく、インストールしたバージョンの節を読んでください。既定値はリリース間で動くからです。

関連記事