Data GroupにあるIPアドレスリストを用いてアクセスコントロールをするiRule
はじめに:
今回は、シンプルですが応用しやすい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/s/wiki/default.aspx/iRules/AccessControlBasedOnIP.html
送信元IPアドレス(ホストまたはネットワーク)、送信先IPアドレス(ホストまたはネットワーク)および送信先ポートを用いてより複雑なアクセスコントロールを行うサンプルの以下のDevCentralの記事にございます。
http://devcentral.f5.com/s/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ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。