機能 

・TCP接続が完了した際にアクティブ接続数カウンター変数で記録

管理者が指定した接続数を超えた場合、新規TCP接続を拒否

新規TCP接続を拒否した際、クライアントに理由を説明するHTMLコンテンツを返す

 

ベネフィット

VSへの接続を制限しながら、制限に当たったユーザに理由を説明するメッセージを返す

 

使い方

RULE_INIT::max_connections::html_content::debugの変数をカスタマイズ

 

 

when RULE_INIT {

  # RULE_INITイベントでiRuleの設定を実施:

   # 最大のTCP接続数を次のグローバル変数に設定
   set ::max_connections 1000

   # 最大接続数を超えた場合にクライアントに返答するHTMLコンテンツを設定
  # (下記の例より複雑なHTMLコンテンツが利用可能)
   set ::html_content "<html>over limit</html>"

   # デバッグ用のメッセージを/var/log/ltmに出力:  1=yes, 0=no
   set ::debug 1

   # アクティブ接続のカウンター変数(変更しないでください)
   set ::active_connections 0
}

when CLIENT_ACCEPTED {

   set over_limit 0

   if { $::active_connections > $::max_connections } {
      set over_limit 1
   } else {
      incr ::active_connections 1
   }
}
when HTTP_REQUEST {

   if { $over_limit }{
      HTTP::respond 200 content $::html_content
      TCP::close
      if { $::debug } {
         log local0. "Over limit (current/max: $::active_connections/$::max_connections). Sent response to [IP::client_addr]"
      }
   }
}

when CLIENT_CLOSED {

   incr ::active_connections -1
}



※F5ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。