はじめに:
今回は、シンプルですが応用しやすいiRuleをご紹介します。

送信元IPアドレスを見てバーチャルサーバへのアクセスをコントロールするというiRuleで、アクセスを許可するIPアドレスをData Groupに格納します。

タイトル:Data GroupにあるIPアドレスリストを用いてアクセスコントロールをするiRule

メリット:
アクセスを許可するIPアドレスをiRule本文中ではなくData Groupに格納する事で保守性を高めます。
Data Groupを用いる他のiRuleを作成するための基礎を取得できます。


機能説明:
送信元IPアドレスと一致するエントリがtrustedAddresses という名前のData Group に存在する場合のみ、当該バーチャルサーバへのアクセスを許可します。その他のトラフィックはドロップします。

関連する情報は以下のDevCentralの記事でもご確認いただけます。
http://devcentral.f5.com/wiki/default.aspx/iRules/AccessControlBasedOnIP.html

送信元IPアドレス(ホストまたはネットワーク)、送信先IPアドレス(ホストまたはネットワーク)および送信先ポートを用いてより複雑なアクセスコントロールを行うサンプルの以下のDevCentralの記事にございます。
http://devcentral.f5.com/wiki/default.aspx/iRules/AccessControlBasedOnNetworkOrHost.html

設定概要:
下記のiRuleを入力し、バーチャルサーバに適用します。

trustedAddressesという名前のData Groupを作成しアクセスを許可した送信元のIPアドレスを列挙します。

Data Groupの内容を変更した際は、iRule中の「# Serial: 0001」行の「0001」の部分をアップデートし、再度iRuleを読み込みます。これにより更新されたData Groupが新たに読みこまれます。

【iRule定義】 (v9.4.以降にて動作します)

when RULE_INIT {
#
# Purpose:
#   Bind this rule to a network virtual server to simply allow
#   or disallow traffic based on source IP.  This rule expects
#   a datagroup named trustedAddresses that lists the addresses
#   you wish to allow.
#   By default, traffic will be dropped.
#
#  Serial: 0001
#
}
when CLIENT_ACCEPTED  {

        if { [matchclass [IP::client_addr] equals $::trustedAddresses] }{

                        #Uncomment the line below to turn on logging.
                        #log local0.  "Valid client IP: [IP::client_addr] - forwarding traffic"
                        return
        } else {

                #Uncomment the line below to turn on logging.
                #log local0. "Invalid client IP: [IP::client_addr] - discarding"
                discard
        }

}


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