flightPATH」は、ADCに搭載されたトラフィック管理技術です。「flightPATH」は、HTTPやHTTPSのトラフィックをリアルタイムに検査し、条件に応じてアクションを実行することができます。
IPオブジェクトをルール内で使用する場合、flightPATHルールをVIPに適用する必要があります。
フライトパスルールは4つの要素で構成されています。
1. Details(詳細)では、flightPATH Name(フライトパス名)とアタッチ先のService(サービス)を定義します。
2. ルールのトリガーとなる条件を定義することができます。
3. アクションの中で使用できる変数を定義することができる評価
4. 条件が満たされたときに起こるべきことを管理するために使用されるアクション
詳細
詳細セクションには、利用可能なflightPATHルールが表示されます。このセクションでは、新しいflightPATHルールを追加したり、定義済みのルールを削除することができます。
新しいflightPATHルールの追加
フィールド
|
説明
|
フライトパス名
|
このフィールドは、flightPATHルールの名前です。ここで指定した名前は、ADCの他の部分に表示され、参照されます。
|
VSに適用
|
この列は読み取り専用で、flightPATHルールが適用されるVIPを示します。
|
説明
|
読みやすさのために用意された説明文を表す値。
|
flightPATHルールを追加する手順
1. まず、"Details "セクションにある "Add New "ボタンをクリックします。
2. ルールの名前を入力します。例 Auth2
3. ルールの説明を入力する
4. ルールがサービスに適用されると、[Applied To]列にIPアドレスとポートの値が自動入力されます。
5. 更新ボタンを押して変更内容を保存するのを忘れないでください。間違った場合は、キャンセルボタンを押して以前の状態に戻してください。
状態
flightPATH ルールは任意の数の条件を持つことができます。条件は AND で動作するため、アクションがトリガーされる条件を設定できます。OR条件を使用したい場合は、追加のflightPATHルールを作成し、正しい順序でVIPに適用します。
また、[Check] フィールドで [Match RegEx] を、[Value] フィールドで [RegEx] の値を選択して RegEx を使用することもできます。RegEx の評価を含めることで、flightPATH の機能が大幅に拡張されます。
flightPATH条件の新規作成
状態
私たちは、ドロップダウン内にあらかじめ定義されたいくつかの条件を提供し、想定されるすべてのシナリオをカバーしています。新しい条件が追加された場合は、Jetpackのアップデートにより利用可能になります。
選択肢は以下の通りです。
コンディション
|
説明
|
例題
|
<form>(英語
|
HTMLフォームはサーバーにデータを渡すために使われる
|
例 "form doesn't have length 0"
|
GEO ロケーション
|
送信元IPアドレスとISO3166の国別コードを比較して
|
GEO ロケーションが GB に該当する場合、または GEO ロケーションが Germany に該当する場合
|
ホスト
|
URLから抽出したホスト
|
www.mywebsite.com または 192.168.1.1
|
言語
|
language HTTPヘッダから抽出した言語
|
この条件では、Languagesのリストを含むドロップダウンが生成されます。
|
方法
|
HTTPメソッドのドロップダウン
|
GET、POSTなどを含むドロップダウン
|
オリジンIP
|
上流のプロキシがX-Forwarded-For(XFF)をサポートしている場合、真のOriginアドレスを使用します。
|
クライアントIPです。また、複数のIPやサブネットを使用することもできます。
10.1.2.0 /24 subnet
10\.1.2.3|10\.1.2.4 Use | for multiple IP's
|
パス
|
ウェブサイトのパス
|
/mywebsite/index.asp
|
POST
|
POSTリクエストメソッド
|
Webサイトにアップロードされるデータのチェック
|
問い合わせ
|
クエリの名前と値で、クエリ名か値も受け付けることができる
|
"Best=jetNEXUS" マッチがベストで、バリューがエッジNEXUSの場合
|
問い合わせ文字列
|
? "文字以降のクエリ文字列全体
|
|
リクエストクッキー
|
クライアントから要求されたクッキーの名前
|
MS-WSMAN=afYfn1CDqqCDqUD::
|
リクエストヘッダー
|
Any HTTP Header
|
リファラー、ユーザーエージェント、From、Date
|
リクエストバージョン
|
HTTPバージョン
|
http/1.0またはhttp/1.1
|
レスポンスボディ
|
レスポンスボディに含まれるユーザー定義の文字列
|
サーバーアップ
|
応答コード
|
レスポンスのHTTPコード
|
200 OK, 304 Not Modified
|
レスポンスクッキー
|
サーバーから送られてきたクッキーの名前
|
MS-WSMAN=afYfn1CDqqCDqUD::
|
レスポンスヘッダー
|
Any HTTP Header
|
リファラー、ユーザーエージェント、From、Date
|
レスポンスバージョン
|
サーバーから送られてきたHTTPバージョン
|
http/1.0またはhttp/1.1
|
ソースIP
|
オリジンIP、プロキシサーバーIP、またはその他の集約されたIPアドレスのいずれか
|
ClientIP、ProxyIP、FirewallIP。複数のIPやサブネットを使用することもできます。ドットはRegEXなので必ずエスケープしてください。例 10\\.1\.2\.3 は 10.1.2.3 です。
|
マッチ
一致」フィールドは、ドロップダウンまたはテキスト値のいずれかで、「条件」フィールドの値に応じて定義できます。例えば、ConditionがHostに設定されている場合、Matchフィールドは利用できません。Conditionが<form>に設定されている場合、Matchフィールドはテキストフィールドとして表示され、ConditionがPOSTに設定されている場合、Matchフィールドは適切な値を含むドロップダウンとして表示されます。
選択肢は以下の通りです。
MATCH
|
説明
|
例題
|
受け入れ
|
許容されるコンテンツタイプ
|
Accept: text/plain
|
Accept-Encoding
|
使用可能なエンコーディング
|
Accept-Encoding: <compress | gzip | deflate | sdch | identity>。
|
アクセプト・ランゲージ
|
回答に使用できる言語
|
Accept-Language: en-US
|
受け入れ範囲
|
このサーバーがサポートしているパーシャルコンテンツの範囲タイプ
|
Accept-Ranges: bytes
|
オーソライズ
|
HTTP認証用の認証情報
|
オーソライズされています。基本 QWxhZGRpbjpvcGVuIHNlc2FtZQ==。
|
チャージ・トゥー
|
要求された方法の適用にかかるコストの勘定情報を含む
|
|
Content-Encoding
|
使用されているエンコーディングの種類
|
Content-Encoding: gzip
|
Content-Length
|
レスポンスボディの長さをオクテット(8ビットバイト)で表したもの
|
Content-Length: 348
|
コンテンツタイプ
|
リクエストの本文のmimeタイプ(POSTおよびPUTリクエストで使用されます
|
Content-Type: application/x-www-form-urlencoded
|
クッキー
|
Set-Cookie(下記)でサーバーから送られてきたHTTPクッキー
|
Cookie: $Version=1; Skin=new;
|
日付
|
メッセージが発信された日付と時間
|
Date = "日付" ":" HTTP-date
|
ETag
|
リソースの特定のバージョンを示す識別子で、多くはメッセージダイジェストです。
|
ETag:"aed6bdb8e090cd1:0"
|
より
|
リクエストを行ったユーザーのEメールアドレス
|
From: user@example.com
|
If-Modified-Since
|
コンテンツが変更されていない場合に、304 Not Modifiedを返すことができる。
|
If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
|
Last-Modified
|
リクエストされたオブジェクトの最終更新日(RFC2822形式)。
|
Last-Modified:Tue, 15 Nov 1994 12:45:26 GMT
|
Pragma
|
実装。リクエスト-レスポンスの連鎖のどこかで様々な効果をもたらす可能性のある特定のヘッダー。
|
Pragma: no-cache
|
リファラー
|
現在要求されているページへのリンクを辿った前のWebページのアドレス
|
リファラー:HTTP://www.edgenexus.io
|
サーバー
|
サーバーの名前
|
サーバーです。Apache/2.4.1 (Unix)
|
セット-クーキー
|
HTTPクッキー
|
セット-クーキーUserID=JohnDoe; Max-Age=3600; Version=1
|
User-Agent
|
ユーザーエージェントの文字列
|
User-AgentMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
|
Vary
|
下流のプロキシに対して、将来のリクエストヘッダーをどのように照合し、
オリジンサーバーから
新たなレスポンスをリクエストするのではなく、キャッシュされたレスポンスを使用できるかどうかを判断する方法を指示します。
|
Vary:User-Agent
|
X-Powered-By
|
Webアプリケーションを支える技術(ASP.NET、PHP、JBossなど)を指定します。
|
X-Powered-By:PHP/5.4.0
|
センス
Senseフィールドはドロップダウン式のブール型フィールドで、DoesまたはDoesn'tの選択肢があります。
チェック
チェックフィールドでは、条件に対するチェック値を設定することができます。
選択できる項目は以下の通りです。Contain、End、Equal、Exist、Have Length、Match RegEx、Match List、Start、Exceed Length
CHECK
|
説明
|
例題
|
存在する
|
これは、条件の詳細を気にせず、存在するかしないかだけを気にするものです。
|
ホストが存在する
|
スタート
|
文字列は、Valueで始まります。
|
パス - Does - Start - /secure
|
終了
|
文字列の最後には、Value
|
パス - Does - End - .jpg
|
収録内容
|
この文字列には、以下の値が含まれています。
|
リクエストヘッダー - アクセプト - Does - Contain - image
|
イコール
|
文字列は「値」と等しい
|
ホスト - Does - Equal - www.jetnexus.com
|
長さ
|
文字列は、値の長さを持っています。
|
ホスト - Does - Have Length - 16
www.jetnexus.com = TRUE
www.jetnexus.co.uk = FALSE
|
Match RegEx
|
完全なPerl互換の正規表現を入力することができます。
|
Origin IP - Does - Match Regex - 10\...* | 11\...*
|
条件を追加する手順
新しい flightPATH 条件の追加はとても簡単です。その例を上に示します。
1. 条件エリア内の「新規追加」ボタンをクリックします。
2. ドロップダウンボックスから条件を選択します。ここではHostを例に説明します。フィールドに入力することもでき、ADCはドロップダウンで値を表示します。
3. Senseを選ぶ。例えば、Does
4. チェックを選びます。例えば、「Contain
5. 値を選択します。例えば、mycompany.com
上記の例では、ルールが完了するためには、両方ともTRUEでなければならない2つの条件があることを示しています。
· 1つ目は、要求されたオブジェクトが画像であるかどうかを確認することです。
· 2つ目は、URLのホストがwww.imagepool.com であるかどうかをチェックします。
評価
定義可能な変数を追加できるのは魅力的な機能です。通常のADCでは、スクリプトやコマンドラインのオプションを使ってこの機能を提供していますが、これは誰にとっても理想的ではありません。ADCでは、以下に示すように、使いやすいGUIを使って任意の数の変数を定義することができます。
flightPATH変数の定義には、4つのエントリーが必要です。
· Variable - これは変数の名前です。
· Source - ドロップダウンリストに表示されるソースポイント。
· 詳細 - ドロップダウンから値を選択するか、手動で入力します。
· Value - 変数が保持する値で、英数字または微調整用のRegExが使用できます。
内蔵変数。
組み込み変数はすでにハードコードされているので、これらのために評価エントリを作成する必要はありません。
アクション "セクションでは、以下のような変数が使用できます。
各変数の説明は、上の「条件」の表にあります。
· メソッド = $method$
· パス = $path$
· クエリストリング = $querystring$
· Sourceip = $sourceip$
· レスポンスコード(テキストには "200 OK "も含まれる) = $resp$
· ホスト = $host$
· バージョン = $version$
· クライアントポート = $clientport$
· Clientip = $clientip$
· ジオロケーション = $geolocation$"
ACTION
|
TARGET
|
アクション = リダイレクト 302
|
ターゲット = HTTPs://$host$/404.html
|
アクション=ログ
|
ターゲット = $sourceip$:$sourceport$のクライアントが$path$ページをリクエストしました。
|
説明します。
· 存在しないページにアクセスすると、通常はブラウザの404エラーページが表示されます。
· 代わりに、ユーザーが使用した元のホスト名にリダイレクトされますが、不正なパスは404.htmlに置き換えられます。
· Syslogに "A client from 154.3.22.14:3454 has just requested the wrong.html page "というエントリが追加されます。
アクション
プロセスの次の段階では、flightPATHルールと条件に関連するアクションを追加します。
この例では、ユーザーが入力したURLを反映させるために、URLのパス部分を書き換えます。
· 新規追加」をクリックします。
· アクション」ドロップダウンメニューから「パスの書き換え」を選択します。
· ターゲット」欄に「$path$/myimages」と入力します。
· アップデートをクリック
このアクションでは、パスに/myimagesが追加されるので、最終的なURLはwww.imagepool.com/myimages となります。
flightPATHルールの適用
flightPATHルールの適用は、各VIP/VSのflightPATHタブ内で行われます。
· サービス」>「IPサービス」を選択し、flightPATHルールを割り当てるVIPを選択します。
· 以下のようなReal Serverのリストが表示されます。
· flightPATHタブをクリックします。
· 設定したflightPATHルール、またはサポートされている事前構築済みのルールのいずれかを選択します。必要に応じて、複数のflightPATHルールを選択できます。
· 選択したセットを「Applied flightPATHs」セクションにドラッグ&ドロップするか、>>矢印ボタンをクリックします。
· ルールは右側に移動し、自動的に適用されます。