1

Size: px
Start display at page:

Download "1"

Transcription

1 irules 設定ガイド (V 対応 ) 初級 & 中級編 F5 Networks Japan V1.0

2 目次 1. irules とは irules の構成 TCL 動作確認の準備 (tclsh の利用 ) BIG-IP への SSH アクセス tclsh を使う TCL の基礎 基本のコマンド行 コマンド行の終わり expr ( 計算 )... 8 単純な計算... 8 計算式を () でまとめる... 8 真偽の計算... 8 [ 参考 ] TCL の演算子の一覧 ドル記号 $ ( 変数置換 ) [ その 1] ブレス記号 :{ ( 無効化 ) ドル記号 $ ( 変数置換 ) [ その 2] ブラケット記号 [ ] ( コマンド置換 ) ダブルクォーテーション記号 " " ブレス { の中身をコマンド内部で評価するもの expr if while for if, else, elseif switch switch の基本サンプル switch のオプション switch の glob オプションの例 配列変数 文字列操作 string split join append concat リスト操作 list lindex llength lappend linsert lrange lreplace lsearch lsort foreach TCL のマニュアル irules の概要 イベント 変数 (variables) について ローカル変数 (Local variables) グローバル変数 (Global variables) irules 間で読み書き可能な変数 :Table コマンド irules の変数一覧 演算子 ( Operators ) Ⅹ

3 4.4. ファンクション ステートメント コマンド 出現頻度の高いコマンド コマンドの注意点 irules 動作確認用のネットワーク構成サンプル LTM の設定 Platform 設定 VLAN 設定 Self IP 設定 Routing 設定 Pool の設定 http-pool A-pool B-pool Virtual Server の設定 Web-vs (Port:80) Secure-vs (Port:443) irules の使い方 [ パターン 1] irule Editor を使う [ パターン 2] BIG-IP の Web GUI を使う irule の適用 出力されるログの確認 irules の具体例 よく使う EVENT の例 CLIENT_ACCEPTED CLIENT_DATA HTTP_REQUEST HTTP_RESPONSE RULE_INIT LB_FAILED Class / Data-Group の使い方 Data-Group のデータの Type Internal Data-Group External Data-Group ( その 1:String 形式 ) External Data-Group ( その 2:Address 形式 ) table の使い方 irule 作成のテクニック デバッグのやり方 本番環境でのロギング有効化 / 無効化 irule による CPU 使用率の測定 つの irule で CPU 使用率を比較 irule の CPU 使用率の計算 irule を最適化する おわりに Appendix EVENT 発動のタイミング EVENT のフロー EVENT 発動を確認するためだけの irule 出力されたログ コマンド一覧 (2015/6 現在 ) Ⅹ

4 1. irules とは irule は BIG-IP 上で動作する パワフルでフレキシブルな機能です irule は VirtualServer( 以下 VS) に関連付けられるオブジェクトの 1 つで VS に到着 または VS から出力される IP アプリケーショントラフィックに対して 記述されたスクリプトの内容をもとに インターセプト ( 割込 ) インスペクト ( 調査 ) トランスフォーム ( 変換 ) などの様々な処理を行うことが可能です 処理されたパケットは VS に設定される Default pool だけではなく irule で書かれた pool や node へ送ることもできます また irule はパーシステンスでも使用でき 更に認証にも使用されます irule は TCL(Tool Command Language) を用いており 汎用性の高い実装を行っているので 様々な用途に使用できます 1.1. irules の構成 irule は 1 つ以上の event と その event が発動した際に実行される TCL コードから構成されます < 基本的なシンタックス > when EVENT { if { 条件式 ( 比較演算など ) { コマンド EVENT が irule 発動のトリガーとなり 条件式 が True なら コマンド を実行します 例えば のような "txt" で終わる URI は "Pool1" に振り分け それ以外の HTTP リクエストは "Pool2" に振り分けたい という要件があったとします 以下が この要件を実現する irule です when HTTP_REQUEST { 1 if { [ ends_with "txt" { 2 pool pool1 3 else { 4 pool pool2 5 1 HTTP リクエストを受信したとき 2 その HTTP リクエストの URI が txt で終わるのならば 3 Pool1 へ送る 4 それ以外は 5 Pool2 へ送る 以降 詳細解説に入ります 4

5 2. TCL 動作確認の準備 (tclsh の利用 ) 以降で TCL コマンドの動きを確かめることを目的として BIG-IP へ SSH でログインし CLI 画面の bash で "tclsh" を実行します tclsh は TCL インタプリタのためのシンプルなシェルで BIG-IP に限らず多くの Linux ディストリビューションで標準搭載またはインストールして利用することができます 例 )CentOS の場合のインストール方法 : # yum -y install tcl 2.1. BIG-IP への SSH アクセス SSH クライアント ( 例 :TeraTerm) を使って BIG-IP へ SSH でアクセスします (1) SSH でログインします BIG-IP のマネージメント IP アドレス (2) User name に root を入力し Use challenge/response to log in をチェックします 5

6 (3) パスワードを入力します ( デフォルト状態のパスワードは default です ) (4) 以下のようなコマンドプロンプトが表示されます [root@big208:active:in Sync] config # 2.2. tclsh を使う この bash で tclsh を実行します [root@big208:active:in Sync] config #tclsh % 以降で出てくる TCL コマンド (% が先頭についているものが目印です ) を この tclsh で実行してその結果を確認してみてください tclsh を終了する際は % exit を入力 または Ctrl + D キーを押してください 6

7 3. TCL の基礎 TCL(Tool Command Language) はスクリプト言語で ティクルと読みます インタプリタ言語 リスト処理 連想配列などの特長を持ち アプリケーション開発のためのスクリプト言語として設計 拡張されてきた言語です irules は TCL で記述されるので irules を作成するには まず TCL の基本を理解する必要があります TCL の基本を理解することで irule サンプルスクリプトもグッと読み取りやすくなります 本セクションでは TCL について解説します 3.1. 基本のコマンド行 TCL は以下のようなリスト構造 (= 要素をブランクで区切って並べたもの ) になっています リストの先頭要素が コマンド で 残りの要素は アーギュメント ( 引数 ) です コマンド アーギュメント 1 アーギュメント 2 上記のような形で コマンドの後にブランクで区切られたアーギュメントが続きます TCL はこのようなリスト構造をとっているため ブランクやタブは リストを構成する要素の区切り文字として 重要な意味を持つ という点に注意が必要です 3.2. コマンド行の終わり コマンド行の終わりは 改行 によって示されます もうひとつは ; ( セミコロン ) です ; を使うと 複数のコマンド行を続けて 1 行に書くことができます コマンド アーギュメント 1 アーギュメント 2; コマンド アーギュメント 3 アーギュメント 4 7

8 3.3. expr ( 計算 ) まず TCL で計算を行う際に使う expr コマンドにについて触れておきます expr は 数式を解釈して計算した結果を返します 計算式は オペランド と演算子 (+ - * / < > == 等 ) の組み合わせで構成されます オペランドとは演算の対象となる値や文字列のこと 尚 TCL でのブランクやタブは リストを構成する要素の区切り文字として重要な意味を持つ とお伝えしましたが 式のなかのブランクに関しては無視されます 単純な計算 % expr が返されます 計算式を () でまとめる ( 丸カッコ ) は 計算と論理変数をまとめるときに使います % expr 2 * 3 / が返されます % expr 2 * 3 / (3 + 3) 1 が返されます 真偽の計算 expr コマンドで 対象比較演算子 (< > <= >=) や等値比較演算子 (==!=) などを利用することで 真偽の計算ができます % expr 1 > 1 0 = " 偽 " という値が返されます % expr 1 == 1 1 = " 真 " という値が返されます 8

9 [ 参考 ] TCL の演算子の一覧 TCL では 以下のような演算子を使うことができます 演算子 - + ~! * / % 説明 単項のマイナス プラス ビット毎の否定 論理否定 いずれも文字列に対しては使えない ビット毎の否定は整数に対してのみ適用可能 乗算 除算 剰余の 2 項演算子 いずれも文字列に対しては使えない 剰余演算子 (%) は整数に対してのみ適用可能 + - 加算および減算 (2 項演算子 ) オペランドが数値ならば使用可能 << >> 左シフトおよび右シフト演算子 オペランドは整数のみ可能 < > <= >= ==!= eq ne & ^ 大小比較演算子 比較結果が真なら 1 を 偽なら 0 を返す オペランドは数値だけではなく 文字列でもよい 等値比較演算子 結果が真なら 1 を 偽なら 0 を返す オペランドは数値だけではなく 文字列でもよい 文字列専用の等値比較演算子 eq は等しいときに 1 を返し ne は等しくないときに 1 を返す ビット毎の and 演算子 オペランドは整数のみ ビット毎の exor 演算子 オペランドは整数のみ ビット毎の or 演算子 オペランドは整数のみ && 論理的な "and" 演算子 2 つのオペランドがともに非ゼロなら 1 を返し そうでなければ 0 を返す オペランドはブーリアンタイプかまたは数値 論理的な "or" 演算子 2 つのオペランドがともにゼロなら 0 を返し そうでなければ 1 を返す オペランドはブーリアンタイプかまたは数値 x? y : z C 言語と同様の 3 項演算子で x が非ゼロなら y を そうでなければ z を返す x はブーリアンタイプかまたは数値 9

10 3.4. ドル記号 $ ( 変数置換 ) [ その 1] TCL の重要な機能のひとつに変数があります この変数機能の提供により コマンド間でのデータの受け渡しが可能になります 変数は set コマンドにより生成されます TCL パーサー は $ 記号が先頭に付いた要素を変数名とみなし その変数をその実体に置き換えてからコマンドを実行します これが 変数置換 です % set a 100 % puts $a 100 が返されます TCL パーサーが $a (= 変数 ) を 100 (= 実体 ) に変数置換した結果です ( ちなみに "puts" は ディスプレイへの標準出力を行うコマンドです ) [ 参考 ] TCL パーサー (Parser) とは パーサー (Parser) は 一般的には 構文解析を行うためのプログラムの総称です TCL においてもパーサーが存在しており TCL 言語で記載されたスクリプトを解析するプログラム とお考えください 以降の解説でも TCL パーサーという言葉を使います 10

11 3.5. ブレス記号 :{ ( 無効化 ) アーギュメントをブレス { で囲むことで 囲まれた部分に含まれるあらゆる特殊文字の機能を無効化します なので ブレス { 内はバックスラッシュ (\)= エスケープなしで改行できますし ブランクやタブを要素の中に含めることもできます 以下の文字列は 3 つの要素からなるリストです "a f5 fan" はブランクを含んでいますが { によって無効化され ひとつの要素として扱われます You are {a f5 fan コマンドも一つの要素です したがって 以下の文字列は 3 つの要素からなる一つのリストです if {$a > 0 {set a 0 ブレス { 内は改行文字も無効化されるので 以下の形が成り立ちます if {$a > 0 { set a 0 しかし 以下の形は成り立ちません if {$a > 0 { set a 0 これが成り立たないのは ブレス { の制限ではなく if コマンドの制限によるものです if コマンドに続く第 1 アーギュメントの直後で改行されているので そこでコマンド行の終了を意味します よって if コマンドが求める第 2 アーギュメントがコマンド行に存在しない という理由で このコマンドが成り立たなくなります 以下 3 つを tclsh で実行してみてください (1) サンプル 1 % set a 100 % if {$a > 0 {set a 0 (2) サンプル 2 % set a 100 % if {$a > 0 { set a 0 (3) サンプル 3 % set a 100 % if {$a > 0 ここでエラーになります { set a 0 11

12 3.6. ドル記号 $ ( 変数置換 ) [ その 2] 変数について もう少し踏み込んで解説します (1) 変数置換とブレス { 前項でブレス { について触れましたので 変数置換とブレス { の関係についても触れておきます 以下のような文字列もブレス { に囲まれると一つの要素となるので これも変数に取込むことができます % set a {You are a f5 fan. % puts $a You are a f5 fan. が返されます これは TCL パーサーが $a (= 変数 ) を You are a f5 fan. (= 実体 ) に変数置換した結果です 尚 TCL パーサーによる変数置換は 1 回しか実行されない という点に注意してください よって 変数置換結果に $ が含まれていても 再置換が行われることはありません % set a {You are a $a fan. % puts $a You are a $a fan. が返されます また 変数置換後の結果にブランクが含まれていても 複数のアーギュメントとしてみなされることはなく ブランクが含まれた 1 つのアーギュメントと判断されます ( 上記例のとおりです ) これは 変数置換を行った後では ブランク区切りによるリスト構造の認識は行われない ということを意味します その他 少し変則的な変数の使い方を以下 2 つ紹介しておきます (2) $ をつけない変数 変数の値を直接処理するコマンドの場合 変数の先頭に "$" を付けずに利用する場合が多いです 以下は 変数 int に "1" を加える例です ("1" は省略されています ) % set int 1 % incr int 2 が返されます (3) 変数と文字を繋げたい ( ブランクで区切りたくない ) 場合 変数の文字部分 ($ を含まない ) をブレス { で囲むことで 変数と連続したキャラクタ ( ブランクで区切らないキャラクタ ) を繋げることができます 以下は int の実体が数字であり その数字の後ろに "th" をつけることで 日付を表現する例です % set int 5 % puts "Today's date is the ${intth" Today's date is the 5th が返されます 12

13 3.7. ブラケット記号 [ ] ( コマンド置換 ) TCL は リストの先頭要素を常にコマンド名として認識します それ以外の要素はコマンドに渡すべきアーギュメントとして認識します しかし そのアーギュメント要素がブラケット [ ] で挟まれていると TCL パーサーはその中身をコマンド行と認識し それを実行して 本来のアーギュメント値に置き換えてくれます コマンドを実体値に置き換える これが コマンド置換 です % set a [expr 1000 * 5] % puts $a 5000 が返されます 上記の 行は TCL パーサーが [ ] の中を計算して 5000 に置き換えているので set a 5000 という指定をしているのと同じ結果になります また コマンド置換は以下のようにネストすることも可能です % set b 3 % set a [expr 5 + [expr $b * 70]] % puts $a 215 が返されます 13

14 3.8. ダブルクォーテーション記号 " " 既述のように ブレス { は 改行コードなどの特殊文字の機能を無効化します この法則はコマンド置換子であるブラケット [ ] や 変数置換子である $ 記号に対しても同様です そのため 下記のコードではコマンド置換も変数置換も行われません % set num 5 % puts {[expr 100 * $num] Yen よって この実行結果として出力される文字列は以下です [expr 100 * $num] Yen コマンド置換も変数置換も機能させ かつブランクを含む文字列をひとつのアーギュメントとして puts コマンドに渡したい場合には ブレスの代わりにダブルクォーテーション (") で挟みます % set num 5 % puts "[expr 100 * $num] Yen" このコマンドの実行結果として 500 Yen が出力されます このように ダブルクォーテーションの機能は コマンド置換と変数置換を許すところが ブレス { と異なる点です 14

15 3.9. ブレス { の中身をコマンド内部で評価するもの ブレス { で囲むと特殊文字の機能が無効化されてしまうのであれば { で囲むと何も実行されなくなるのではないか? と思われたかもしれません ある意味では正しいです 事実として 例えば既述の set や puts コマンドでは { 内のコマンド置換や変数置換は実施されず { はただ単に文字列として返されました % set a {You are a $a fan. % puts $a You are a $a fan. が返されます 変数置換が行われません %puts {[expr 100 * $num] Yen [expr 100 * $num] Yen が返されます 変数置換もコマンド置換も行われません しかし コマンドによっては TCL パーサーがそのブレス { で囲まれたアーギュメントをコマンドに引渡し そのコマンドが内部で評価を行う (= コマンド置換や変数置換する ) ものがあります その代表が expr や if や while や for コマンドなどです expr 算術演算を行う expr コマンドは アーギュメントをコマンド内部で評価します よって 以下の 2 つのコマンド (1 と 2) は 同じ結果を返します % set a 11 % set b 22 % expr $a * $b 1 % expr { $a * $b 2 1 も 2 も 242 が返されます 上記 2 に関しては ブレス { で囲まれている部分は無効化されているので TCL パーサーは変数置換を行いません しかし TCL パーサーが変数置換を行ってくれなくても expr がコマンドの内部でブレス { 内の変数置換を実行するので 同じ結果が得られる ということです 上記 1 の場合 TCL パーサーによる変数置換の後に expr 内で計算を行う という 2 回の処理に対し 2 は expr 内で一度に処理するので 2 の方が効率は良い といえます 15

16 if if は その第 1 アーギュメントが 真 なら 第 2 アーギュメントをコマンド内部で評価する というコマンドです また if コマンドは 第 1 アーギュメントをコマンド内部で expr によって評価し その結果を使います % set val 1 % if $val { set a 111 TCL パーサーは if コマンド行の第 1 アーギュメントの $val を評価して 1 に書き換えます ( 変数置換 ) 同様に TCL パーサーは 第 2 アーギュメントの { set a 111 を評価し ブレス { で囲まれているので文字列として処理し 以下のようにします % if 1 { set a 111 TCL バーサーはこの後 1 と set a 111 を if コマンドに渡します if コマンド側は 受け取った第 1 アーギュメントの文字列を expr コマンドに [expr 1] として渡し その結果が真なので 第 2 アーギュメントの set a 111 を処理します 第 1 アーギュメントをブレス { で囲んでも 同じ結果が得られます % set val 1 % if {$val { set a 111 この場合 TCL パーサーは if コマンド行の第 1 アーギュメントを $val という 4 文字の文字列として処理し 第 2 アーギュメントも set a 111 を文字列として処理し if コマンドに渡します if コマンド側は 受け取った文字列を expr コマンドに [expr {$val] として渡し その結果が真なので set a 111 を処理します if のように コマンドがアーギュメントを内部で評価してくれるならば そのアーギュメントはブレス { で挟んで渡した方が 効率がよくなります このことで TCL パーサーと if コマンドによる計 2 回の評価処理を 1 回に減らすことができるからです 16

17 while while コマンドも if コマンドと同様に 第 1 アーギュメントとして与えられた文字列を while コマンド内部で expr によって評価し その結果を使います while は 第 1 アーギュメントが真の場合に 第 2 アーギュメントを処理する というところまでは if と同じです if と異なるのは 第 2 アーギュメントを処理し終えると再び第 1 アーギュメントを評価し それが真なら 再び第 2 アーギュメントの処理を行う という繰り返し実行がなされる点です したがって 以下の形では問題が発生します % set val 1 % while $val { set a 111 TCL パーサーが変数置換を行うので $val は 1 です よって while 行は実質 以下の形になっています % while 1 { set a 111 この状態だと常に真であるため 永遠に set a 111 が繰り返される 無限ループに陥ります 例えば 以下のような形は 無限ループに陥ります % set a 100 % set val 1 % while $val { if {$a > 0 { set val 0 puts $val 5 行目で set val 0 を実行しても while のあとの $val は 1 のままなので 0 の出力が延々と続きます この無限ループを回避するためには while の後ろの $val をブレス { で囲みます % set a 100 % set val 1 % while {$val { if {$a > 0 { set val 0 puts $val このことによって ブレス { 内は TCL パーサーによる変数置換が無効化され while コマンドに $val という文字列として渡されます while が 1 回目の処理を終え 2 回目の処理に入る際に $val が while コマンド内で再評価 ( 変数置換 ) されるので $val は 0 = 偽となり while 処理が終了します よって このような無限ループを回避するためには 第 1 アーギュメントをブレス { で囲む必要があります 17

18 for for ループは while ループと似ていますが ループに入る前の初期化 ( カウンタ用の変数の初期化を行なう ) を含む点が while ループとは異なります for {init {test {next {body (1) {init ループに入る前に一度だけ実行される 初期化 と呼ばれる処理です 例 : set i 1 最初だけ 変数 i に 1 をセットする (2) {test 終了条件を判断するものです もし test が真ならば {body の中が実行されます test が偽ならループから抜け出します 例 : $i<=3 $i が 3 以下ならば {body を実行する (3) {next {body の中が実行された後で実行されるもので 一般的には増分を指定します 例 : incr i {body の処理が終わったら $i の値を 1 ずつ増やす % for {set i 1 {$i<=3 {incr i { puts $i 出力結果は 1, 2, 3 です "for" の場合 {test を for コマンドの内部で評価するように作られており {init および {next はそれぞれ構文で指定することから 全てをブレス { で囲む必要があります これらの理由から if, while, for コマンドのアーギュメントは 常にブレス { で挟んでおくことで 不要なエラーを避けることができます 18

19 3.10. if, else, elseif if, else, elseif を使って 複雑な条件分岐を行うことができます (1) サンプル 1 $var の値が 1 なら 変数 a に値 123 をセットします % set var に 1 または 1 以外を入力 % if {$var == 1 { set a 123 (2) サンプル 2 $var の値が 1 なら 変数 a に値 123 をセット それ以外であれば変数 a に値 456 をセットします % set var に 1 または 1 以外を入力 % if {$var == 1 { set a 123 else { set a 456 (3) サンプル 3 $var の値が 1 なら 変数 a に値 123 をセット $var の値が 2 なら 変数 a に値 456 をセット それ以外であれば変数 a に値 777 をセットします % set var に 1 または 1 以外を入力 % if {$var == 1 { set a 123 elseif {$var == 2 { set a 456 else { set a

20 3.11. switch switch コマンドは 複数の分岐条件の中から一致する条件を見つけ出し そこに指定された処理を実行します switch コマンドは 以下のような構文になっています switch string { pattern1 {body-1 pattern2 {body-2 default {body-default switch コマンドは 最初のアーギュメント (String) を 後続のアーギュメント (pattern1, pattern2) と比較します string にマッチする pattern を見つけると その pattern に続く body を TCL パーサーに渡し その実行結果を返します 最後の pattern を "default" で指定すると 前行のどの pattern にもマッチしなかった場合に default の body を実行します もし どの pattern もマッチせず "default" も設定していない場合 switch コマンドは 空の string を返します switch の基本サンプル % set fruit "Lemon" % switch $fruit { "Apple" {puts "RED" "Grape" {puts "PURPLE" "Lemon" {puts "YELLOW" default {puts "What color is that fruit?" YELLOW が返されます switch のオプション Switch コマンドに続くアーギュメントが - ( ハイフン ) で始まっている場合は オプションとして扱われます switch コマンドには 以下のようなオプションが用意されています ; (1) -exact string と pattern の文字が一字一句完全に一致しなければなりません これがデフォルトの動作です (2) -glob String と pattern を比較するときに 正規表現の glob スタイルを使います (3) -regexp String と pattern を比較するときに 正規表現が使われます 20

21 [ 参考 ] glob と regexp の違い 正規表現には glob スタイルと regexp スタイルがあり 両者の違いは以下の通りです glob のほうが比較的シンプルに作られています glob スタイル regexp スタイル * 0 文字以上の文字にマッチ * 0 文字以上の文字にマッチ? 1 文字にマッチ. 1 文字にマッチ 文字以上にマッチ? 0 または 1 文字にマッチ ^ 行の先頭にマッチ $ 行の最後にマッチ [chars] chars の 1 文字にマッチ [a-z] などが使える [chars] chars の 1 文字にマッチ [a-z] などが使える x 文字 x にマッチ x 文字 x にマッチ {a,b,... a,b 等文字列にマッチ {a,b,... a,b 等文字列にマッチ exp1 exp2 選択 ( exp ) 部分パターン ( その他 省略 ) switch の glob オプションの例 (1) "?" を使ってみる % set fruit "Lemon" % switch -glob $fruit { "Ap*" {puts "RED" "Gr???" {puts "PURPLE" "Le???" {puts "YELLOW" Le に 3 文字続く必要があるが どのような文字でもよい default {puts "What color is that fruit?" YELLOW が返されます (2) [a-za-z] を使ってみる % set fruit "Lemon" % switch -glob $fruit { "Ap*" {puts "RED" "Gr???" {puts "PURPLE" "Lem[a-zA-Z][a-zA-Z]" {puts "YELLOW" default {puts "What color is that fruit?" Lem に続く 2 文字が a~z か A~Z のいずれか YELLOW が返されます 21

22 3.12. 配列変数 TCL でも配列を扱うことができます TCL での配列変数は 変数名 ( 添え字 ) で表されます 配列変数としての宣言や要素数の指定は必要なく () が付いた変数に値がセットされるときに配列変数として認識 登録されます % set i 0 % while {$i < 3 { set abc($i) $i puts "abc($i) = $abc($i)" incr i 出力結果は以下です abc(0) = 0 abc(1) = 1 abc(2) = 2 要素を, や. で区切って複数記述することによって 多次元配列を使用できます % set i 0 % set k 0 % while {$i < 3 { while {$k < 3 { set abc($i.$k) [expr $i+$k] puts "abc($i.$k) = $abc($i.$k)" incr k incr i set k 0 出力結果は以下です abc(0.0) = 0 abc(0.1) = 1 abc(0.2) = 2 abc(1.0) = 1 abc(1.1) = 2 abc(1.2) = 3 abc(2.0) = 2 abc(2.1) = 3 abc(2.2) = 4 22

23 以下のように 同名の通常変数と配列変数を同一のスクリプト内で使用することはできません 使うとエラーになります % set a 300 % set a(1) 400 can't set "a(1)": variable isn't array また 要素数は数字である必要は無く 文字列も使用できます % unset -nocomplain a 一旦 変数 "a" を削除 % set a(jkl) 200 ただし 利用の利便性を考えると数字を使用するのが一般的です 23

24 3.13. 文字列操作 以下のコマンドで 文字列操作が行えます string (1) string compare string1 string2 文字列の比較を行います 文字列 string1 と string2 を文字毎に比較して のいずれかを返します string1 と string2 等しければ 0 を返します 辞書順で比較するので string1 の方が string2 よりも辞書順で前に出現する文字列なら -1 を 後で出現する文字列なら 1 を返し 返します % string compare abc abc 0 が返されます % string compare abc def -1 が返されます % string compare abc ABC 1 が返されます (2) string toupper 小文字を大文字に変換します % string toupper AbCdEfgHiJkLmN ABCDEFGHIJKLMN が返されます (3) string tolower 大文字を小文字に変換します % string tolower AbCdEfgHiJkLmN abcdefghijklmn が返されます (4) string length 文字列の長さを返します % string length AbCdEfgHiJkLmN 14 が返されます 24

25 split 文字列を 決められたデリミタで区切ったリストを返します % split "abcxdefxghixjkl" X abc def ghi jkl が返されます join リストを 決められたデリミタで文字列として結合して返します % join "abc def ghi jkl" # abc#def#ghi#jkl が返されます append 既に存在する変数にデータを付け足す時に使います (Note: もし変数が存在していなければ このコマンドが変数を作ります ) % set var 0 % for {set i 1 {$i<=10 {incr i { append var "," $i % puts $var 0,1,2,3,4,5,6,7,8,9,10 が返されます ( 変数の値を直接処理するコマンドなので 変数 var の前に $ をつけません ) concat 各アーギュメントの先頭と末尾のスペースをカットし 全てのアーギュメントをスペースで連結します アーギュメントの個数はいくつでもかまいません 以下は 3 つのアーギュメントです % concat " a b {c " d " e f " a b {c d e f が返されます 25

26 3.14. リスト操作 以下のコマンドで リスト ( 要素を並べたもの ) の操作が行えます list 変数群 $val1, $val2 を要素としたリストを返します list $val1 $val2 % list AAAA BBBB "CCCC DDDD" EEE AAAA BBBB {CCCC DDDD EEE が返されます lindex リストから $index 番目の要素を取り出します lindex $list $index % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % lindex $LIST 1 BBBB が返されます llength リストの要素の数を返します llength $list % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % llength $LIST 4 が返されます lappend 変数に対してリスト要素の追加し その結果のリストを返します lappend variable $var1 $var2 % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % lappend LIST AAAA BBBB {CCCC DDDD EEE が返されます ( 変数の値を直接処理するコマンドなので 変数 LIST の前に $ をつけません ) 26

27 linsert リストの $index 番目の要素の前に 要素 $val1, $val2, を挿入したリストを返します linsert $list $index $val1 $val2 % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % linsert $LIST AAAA BBBB {CCCC DDDD EEE が返されます lrange リスト $list の $index_s 番目から $index_e 番目までの要素をリストとして返します 最後までの場合は $last の中身を文字列 end にします lrange $list $index_s $index_e % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % lrange $LIST 1 3 BBBB {CCCC DDDD EEE が返されます lreplace リスト $list の $s 番目から $e 番目までの連続した要素をすべての要素 $val1, $val2, で置き換え 新しいリストを返します lreplace $list $s $e $val1 $val2 % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % lreplace $LIST 1 3 QQQ PP AAAA QQQ PPP が返されます lsearch リスト $list から $sw で任意で与えられたパターンマッチング方式で $pattern に合致する最初の要素のインデックスを返します $sw は -glob( 方式 ) exact( 完全一致 ) regexp( 正表現 ) などが用意されます lsearch $sw $list $pattern % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % lsearch -glob $LIST E?? 3 が返されます 27

28 lsort リスト $list の要素をソートしたリストを返します $switch には -ascii(ascii コード順 ) -integer( 数字順 ) などが用意されています lsort $switch $list % set LIST [list CCCC QQQQ 108Z AAAA LLLL ] % lsort -ascii $LIST AAAA CCCC LLLL QQQQ 108Z が返されます 28

29 3.15. foreach foreach コマンドは リストを使ったループです リストの要素を左から一つずつ変数に代入して ループの処理を実行します 書式は次のようになります foreach valname $list {body $list から要素を一つずつ取り出し 変数 valname に順番に代入し body を実行します この処理を要素数の分だけ繰り返し行います % set LIST [list AAAA BBBB "CCCC DDDD" EEE] % foreach item $LIST { puts "item is $item" 出力結果は以下です item is AAAA item is BBBB item is CCCC DDDD item is EEE TCL のマニュアル TCL はこの他にも多数のコマンドを持っています また コマンドによっては ここに紹介したもの以外にも多数のオプションを持っているものがあります 実際の TCL コマンド利用に際しては 以下リンクを参照して より要件にあうコマンドやオプション指定がないかを確認してください 英語 : 日本語 : 29

30 4. irules の概要 ここからは irules の特徴について解説します 尚 irules のより詳細な情報や多数のサンプルは F5 の DevCentral サイトに掲載していますので 必要に応じてこちらもご参照ください [DevCentral] イベント EVENT は F5 が追加した TCL 拡張です あるコネクションが TMOS に入力されてから出力されるまでの間に BIG-IP 内部で ある一連の複数の内部状態の変化が発生します これらそれぞれの状態と irule の EVENT とが一致するように作られており この EVENT が irule を発動するトリガーになります 例えば CLIENT_ACCEPTED は どのような Profile が Virtual Servers に割当てられているかに関わらず 全ての TCP コネクションに対して利用することができます その他の状態 ( 例 :HTTP_REQUEST, CLIENTSSL_CLIENTCERT, RTSP_RESPONSE,...) に達することができるのは 必要な profile が Virtual Server に割当てられる場合に限られる場合もあります 例えば HTTP_REQUEST イベントが利用できるのは Virtual Server に HTTP Profile が割り当てられている場合に限られます Event は f5 が独自に追加した when ステートメントを使って 以下のような形で宣言されます when EVENT 名 { TCL コード EVENT 名で指定されたイベントが発動すると そこに指定された TCL コードだけが実行されるので このイベントを内部ステートの一連の流れ通りに記載する必要はなく 順番が異なってもかまいません よく使うイベント : イベント CLIENT_ACCEPTED CLIENT_DATA HTTP_REQUEST HTTP_RESPONSE RULE_INIT LB_FAILED 概要 クライアントがコネクションを確立したときにトリガーされる コネクションが TCP::collecct(TCP データを取得する ) 状態にあるとき クライアントから新しいデータを受け取るたびにトリガーされる クライアントからの HTTP リクエストヘッダを解析できる状態 (HTTP Profile が有効になっている状態 ) にあって HTTP リクエストを受信したときにトリガーされる サーバからの HTTP レスポンスのステータス及びヘッダを解析できる状態 (HTTP Profile が有効になっている状態 ) にあって サーバからの HTTP レスポンスを受信したときにトリガーされる irule が追加されたとき または変更されたときにトリガーされる pool または pool member の選択に失敗したときにトリガーされる または選択した node,pool member に到達できないときにもトリガーされる これらの EVENT については irule の具体例のセクションにて サンプルを使って説明します 30

31 4.2. 変数 (variables) について 変数には大きく 以下の 3 つのタイプがあります 1 ローカル変数 2 グローバル変数 3 コネクション間で読み書き可能な変数 ローカル変数 (Local variables) ローカル変数は irule 内だけで有効な変数です すべての irules はセッション毎に動作するので ローカル変数もまた同じくセッション毎に有効です よって あるセッションに与えられた irules のローカル変数やデータに対してのメモリ領域は そのセッションによって決定されることを意味しています 例えば コネクション 1 が BIG-IP に到達し ある irule が実行され 5 つのローカル変数が生成されたとします これらの変数は そのコネクションが閉じられるまでの間だけしか存続しません コネクションが閉じられた後 そのコネクションに割当てられたメモリは解放され irule がそのコネクションのために生成した 5 つのローカル変数は使えなくなります このように ローカル変数は コネクション ( またはセッション ) が終了すればメモリは自動的に解放されるので メモリ管理を気にする必要はありません ローカル変数の使い方は TCL の基礎 の説明に何度も出現した方法と同じです 例 :HTTP リクエストの Host ヘッダ値を取り出してログに出力 when HTTP_REQUEST { set host [ log "HOST header of HTTP Request is $host" 逆に 複数の irules で同じ変数を共用したい場合 ローカル変数は使えません その場合は 以降で紹介するグローバル変数または table コマンドによる変数を使います 31

32 グローバル変数 (Global variables) グローバル変数は 各 irules が共通で利用できる変数です 例えば 複数の irules を設定する予定があり それら全ての irules のログは共通のロギングサーバへ出力したい という要件があるとします 一つ一つの irule にそのロギングサーバの IP アドレスを設定していくのは非効率なので 全 irules で共有できる変数にその IP アドレスを持たせて その変数を利用したい というような要望はあると思います このような要件を解決するのがグローバル変数です TCL 自身にもグローバル変数は用意されていますが TCL のグローバル変数を使うためには 各 CPU コアが利用できる共有メモリに保存する必要があります しかし BIG-IP は CMP(Clusterd Multi Processing) テクノロジーを使っています sol14358: Overview of Clustered Multiprocessing ( and later) CMP は 複数の CPU コアにタスクを分配してスケールすることを可能にするテクノロジーであり それぞれの CPU コアが独立したメモリを持っています CMP では各 CPU コア同士が使える共有メモリを持たないので TCL のグローバル変数を使うとなると CMP を無効化し シングルコアで処理する必要があります これはパフォーマンスの妨げとなります そこで F5 は static:: ネームスペースと呼ばれる新しいネームスペースを用意しています このことによって CMP を無効化しない = パフォーマンスを犠牲にしないで グローバル変数を利用することが可能になります RULE_INIT イベントの中で static:: 変数名 として設定することで ロードの際に各 CPU 用のメモリ領域に読み込まれ 変数として利用することができます この変数は コンフィグが再読み込みされるまで消えません 例 : RULE_INIT で コンフィグをリロードまで存続する Static 変数に Syslog サーバの IP アドレスを設定 その Static 変数を irule 内で利用して その Syslog サーバへログを出力する when RULE_INIT { set static::logserver " " when HTTP_REQUEST { log $static::logserver "Got HTTP Request now." [Tips] 実は Static:: 変数で指定された Global 変数の値は RULE_INIT の外であっても set コマンドを使うことで書き換えることができてしまいます しかし この書き換えられた値は その書換えが実行された TMM 内だけで有効であり 他 TMM へ伝播されないので TMM 間で不整合が起きた状態になってしまい 期待する動作が得られない場合が考えられます よって F5 では RULE_INIT の外での Static:: 変数の書換えは行わないことを強く推奨しています sol13033: Constructing CMP-compatible irules TMM 間で共有する必要のある変数で書換えを行いたい場合には 以下の table コマンドの利用を推奨します 32

33 irules 間で読み書き可能な変数 :Table コマンド Table は 読み書き可能なメモリ構造であり コネクション間で共有できる というのが特徴的です irules のローカル変数のような コネクション毎にしか利用できないものとは違い Table には持続する必要があるデータを格納できる という特徴があります Table には key:value ( 変数 : 値 ) という複数のレコードを リストとして保存することができます また sub tables という機能を使うことで 1 つのフラットなリストを作るだけでなく 名前つきのリストを個別に作ることができるので その名前ごとにデータを分離することができます さらに コンフィグ可能な timeout と lifetime オプションがあり これらによって メモリ管理または Table をプログラム的にクリーンアップする心配は必要なくなります timeout: レコードの最終更新からの秒数 アイドルタイムアウト的 lifetime: レコードが作成されてからの秒数 更新されたかどうかは関係ない <Session コマンドについて > Table コマンドがリリースされる以前 (v10.1 より前 ) から 同様の動作を行う Session コマンドが存在しています Table コマンドは この Session コマンドの使い難さを改善することを目的としてリリースされました Session コマンドは 以下のようなシンタックスになっています session add <mode> <key> <data> [<timeout>] session lookup <mode> <key> session delete <mode> <key> <mode> については v10 以降は実質的な意味を持っておらず "uie" という値だけが使われます また <key> については 以下のようなやや奇妙なシンタックスになっていますが v10 からは key がこのような形になっている意味はありません session add uie "$key any pool any virtual" $data 180 session lookup uie "$key any pool" session delete uie "$key" 古くから irules に親しみのあるユーザでなければ uie って何? なぜ key に Pool を指定するの? となってしまうと思います そもそも session というコマンド名が session とどのように関係しているの? と思ってしまうので 混乱を招きやすいネーミングであることも否めません このような使い難さを改善するために v10.1 で Table コマンドがリリースされました Table は 以下のようなシンタックスになっています table set $key $data 180 table lookup $key table delete $key Table については irule の具体例のセクションにて サンプルを使って説明します 33

34 irules の変数一覧 irules で利用可能な変数の一覧です これらのうち 本ガイドの具体例では 推奨フィールドに がついた変数のみ利用します 推奨 変数 CMP 対応 Global TCL 形式 設定 ( 生成 読出し 削除 ) set ::<key> <value> $::<key> unset ::<key> Global static:: set static::<key> <value> $static::<key> Local set <key> <value> $key unset <key> session :v 9.0 session add uie <key> <value> :v10.0 session lookup uie <key> session delete uid <key> Table table set <key> <value> table lookup <key> table delete <key> 変数の解除 Standby 最小 への Mirror Version Unset コマンド v9.0 できない v9.7 1)Unset コマンド 2) コネクションの終了 1)Timeout 2)session delete コマンド 1)Timeout 2)table delete コマンド v9.0 v9.0 v

35 4.3. 演算子 ( Operators ) irules では 演算子 (Operators) は 2 つの値を比較したい場合によく利用されます TCL が標準で持つ演算子 (==, <=, >=,...) に加えて F5 は starts_with, contains, ends_with のような比較補助のための演算子を追加しています 演算子 "A" contains "B" "A" ends_with "B" "A" equals "B" "A" matches_glob "B" "A" matches_regex "B" "A" starts_with "B" "A" and "B" "A" not "B" "A" or "B" 解説 "A" 文字列が "B" 文字列を含むかどうか "A" 文字列が "B" 文字列で終わるかどうか "A" 文字列と "B" 文字列が一致するかどうか "A" 文字列と "B" 文字列が glob 形式での比較で一致するかどうか "A" 文字列と "B" 文字列が regex 形式での比較で一致するかどうか "A" 文字列が "B" 文字列で始まるかどうか "A" と "B" の値を AND 条件で評価する ( 例 : "A" と "B" の両方が真ならば 次のアクション ) "A" と "B" の値を NOT 条件で評価する ( 例 : "A" と "B" の値が異なるのならば 次のアクション ) "A" と "B" の値を OR 条件で評価する ( 例 : "A" または "B" の値が真ならば 次のアクション ) 35

36 4.4. ファンクションファンクション (Functions) は 検索した結果の値を返すのに役立つコマンドです 大きく 以下 2 つに分類されます (1) Class ファンクション事前に作成した key:value タイプのデータベースから情報を検索して値を戻します Class については 後述します (2) 文字列ファンクション ある文字列から値を返す操作を行います F5 では 以下のような独自の文字列ファンクションを用意しています ファンクション findstr substr getfield domain 解説 findstr <string> <search_string> [<skip_count> [<terminator count or string>]] <string> の文字列から <search_string> の文字を見つけ出し 見つけ出した文字の先頭から <skip_count> 分オフセットしたところを始点とした文字を返す また <terminator count or string> を指定すると その手前までの文字を返す 例 : findstr sub 7.com 結果 : domain substr <string> <skip_count> [<terminator>] <string> の文字列の先頭から <skip_count> で指定した文字数分をスキップし <terminator> で指定した文字で終わるまでの文字を返す 例 : substr 11.com 結果 : domain getfield <string> <split> <field_number> <string> の文字列を <split> で指定した文字で分割し <field_number> で指定したフィールドの文字を返す 例 : getfield 4 結果 : domain domain <string> <count> "." で区切られたドメイン名 :<string> を "." 単位で区切って <count> 指定した数の後ろからの区切り数分の文字を返す 例 : domain 2 結果 : domain.com 36

37 4.5. ステートメント ステートメント (Statements) は一般的には 何かを実行する ものであり 値を戻さないコマンドです 例えば TCL では 条件分岐を行う if switch while for などがステートメントに該当します f5 では独自に 以下のようなステートメントを用意しています ステートメント解説 when irule のイベントを指定する場合に使う log syslog-ng ユーティリティへ ログを出力する pool モニターステータスに関わらず 指定した Pool へロードバランスまたは Pool Member へ トラフィックを送る node 指定されたサーバノードへ直接トラフィックを送る persist 指定したパーシステンスを使う snat 指定した変換アドレスを コネクションの送信元 IP アドレスに割当てる snatpool 指定した SNAT Pool 内の IP アドレスのいずれかを コネクションの送信元 IP アドレス に割当てる また SNAT Pool 内の member を指定することもできる discard コネクションやパケットを Drop/Disacard する drop コマンドと同じ drop コネクションやパケットを Drop/Disacard する discard コマンドと同じ reject コネクションをリジェクトする (TCP RST を返す ) forward LTM のルーティングテーブルにしたがって パケットを転送する nexthop BIG-IP からサーバ側への Nexthop を指定する lasthop クライアントへパケットを戻す際の lasthop(mac または IP アドレス ) を指定する rateclass パケット転送時に 指定した Rate Class を使う clone モニターステータスに関係なく 指定した Pool または Pool Member にトラフィックをク ローン ( コピー ) する event このコネクションで ある irule イベント ( または全ての irule イベント ) の評価を有効 化 / 無効化する clientside 指定した irule コマンドを BIG-IP から見てクライアント側の情報 (IP アドレス / ポート 番号等 ) に基づいて実行する serverside 指定した irule コマンドを BIG-IP から見てクライアント側の情報 (IP アドレス / ポート 番号等 ) に基づいて実行する peer コンテキストの反対側 ( サーバ側ならクライアント側 またはその逆 ) で指定された irule コマンドを実行する ( 例外的に値を返すもの ) TCL_platform プラットフォームの情報 (OS Version など ) を返す cpu あるインターバルにおける TMM CPU の平均負荷値を返す 37

38 4.6. コマンド Commands は TCL 内で利用できる制御構造です 例えば を使うことで HTTP リクエストの URI を取得できますし AES::encrypt によって AES 鍵を使って暗号化を実行する というようなことが可能です 標準 TCL のコマンドセットに加えて F5 はグローバルな範囲で使えるコマンド (TCP::client_port, IP::addr など ) や 特定の Profile で使えるコマンド ( 等 ) を追加しています 出現頻度の高いコマンド かなり多くのコマンドが存在しますので ここでは 以降のサンプルで現れるコマンド及び比較的出現頻度の高いコマンドについて紹介します (1) IP IP IP::client_addr IP::server_addr IP::remote_addr IP::local_addr IP::addr (2) TCP TCP TCP::client_port TCP::server_port TCP::local_port TCP::remote_port TCP::collect TCP::payload TCP::release TCP::bandwidth TCP::respond TCP::close (3) HTTP HTTP 概要クライアント IP アドレスを返す サーバの IP アドレスを返す BIG-IP から見てリモートの IP アドレスを返す ( クライアント IP の場合もあれば サーバ IP の場合もある ) クライアントまたはサーバから接続される BIG-IP が持つ IP アドレス (Virtual Server の IP または Self-IP) を返す または サーバ側では クライアント IP を SNAT 変換しないで出力する場合はそのアドレスを SNAT する場合には SNAT アドレスが該当する IP アドレス / サブネットと IP アドレス / サブネットの比較を行い 真偽を返す 例 :[IP::addr [IP::client_addr]/8 equals ] 概要 クライアント側の TCP コネクションの クライアント PC のポート番号を返す サーバ側の TCP コネクションの サーバの TCP ポート番号を返す TCP コネクションの BIG-IP 側の TCP ポート番号を返す クライアント / サーバ側両方の BIG-IP から見てリモートの TCP ポート番号を返す 指定したバイト数のコンテンツデータを収集する TCP::collect 取得した TCP データコンテンツを変更 or 返す TCP::collect で収集したデータを消去 & リリースし 処理を再開する 対向端との帯域幅を返す 対向端へ 特定データを直接送る TCP コネクションを閉じる 概要 HTTP リクエストのヘッダを全て返す HTTP ヘッダのいずれかを指定し その値を取得または変更する HTTP リクエストの URI 部分を返す or セットする 例 : URI は /main/index.jsp?user=test&login=check HTTP ホストヘッダの値を返す HTTP リクエスト及びレスポンスに対して Cookie の挿入 削除 値の取得といった操作を行う Usage 例 : namestlc の List 形式で HTTP ヘッダ内にある全 Cookie 名を返す insert name <name> value <value> <name> と <vaule> の組合せの Cookie を挿入する 38

39 (4) AES AES AES::key AES::decrypt AES::encrypt (5) LB LB LB::detach LB::down LB::mode LB::persist LB::reselect LB::select LB::server LB::snat LB::status LB::up HTTP リクエストの Path 部分を返す or セットする ("?" 以降のクエリ文字列は含まない ) 例 : Path は /main/index.jsp HTTP リクエストのクエリ文字列部分を返す 例 : Query は user=test&login=check HTTP ボディデータの 指定したバイト数分を収集する で集めたデータをリリースする Queries for or manipulates HTTP payload information. HTTP ペイロード情報の要求 or ペイロード情報を操作する Usage 例 : <length> コマンドが収集したコンテンツを 指定した byte 数分返す length コマンドが収集したコンテンツの長さを返す HTTP リクエストを受けたとき またはレスポンスを返すときに 指定した URL へリダイレクトさせる まるでサーバからレスポンスが来たかのように HTTP レスポンスを生成してクライアントに返す HTTP レスポンスのステータスコードを返す 概要データを暗号化 / 複合化するための AES Key を生成する 事前に生成された AES Key を使ってデータを複合化する 事前に生成された AES Key を使ってデータを暗号化する 概要サーバ側コネクションを切断する node または pool member のステータスを Down 状態にセットする ロードバランシングモードをセットする パーシステンスレコードの検索を強制し 結果を返す ロードバランシング先を再選択する ロードバランシングセレクションを強制し 結果を返す 今選ばれたサーバについての情報を返す Virtual Server の SNAT コンフィグレーションについての情報を返す node アドレスまたは pool member のステータスを返す node または pool member のステータスを Up 状態にする 39

40 コマンドの注意点 コマンドについての注意点について触れておきます (1) コマンド毎に利用できる Event と利用できない Event が存在 コマンドによって どの Event 内なら利用できるかが決まっています 例 ) 以下は DevCentral 上の のマニュアル画面です uri.ashx ~ 略 ~ 利用できる Event この コマンドは 上記の Valid Events: に記載された Event 内だけで有効であり これら以外の Event では利用できません 利用したいコマンドが 利用したい Event との組合せで利用できるかどうかが明確ではない場合には DevCentral のマニュアルを参照して確認してください (2) 無効化された TCL コマンド TCL 言語が標準で持っているいくつかの Commands は irules 実装の中では無効にされています 一般的に トラフィックフローの中で予期しない停止を引き起こす可能性のあるコマンド ( 例 :file IO socket call 等 ) が取り除かれています 利用できない TCL コマンドについては 以下を参照ください 40

41 5. irules 動作確認用のネットワーク構成サンプル 以下のネットワーク構成を使って 以降のセクションで紹介する irules の動作を確認します web-vs/secure-vs ともに デフォルトの Pool は http-pool( ) として設定します A-pool B-pool も設定しておきます VS との紐付けは行いません Node( , ) は LTM 上での設定は不要ですが サンプル irule で利用します 41

42 6. LTM の設定 LTM 設定のより詳細は LTM かんたんセットアップガイド を参照ください ここでは 以降の irule サンプルを動作させるために必要な LTM の設定箇所を示します 6.1. Platform 設定 以下は 初期ウィザードの流れの中で設定します 設定した内容は System Platform で確認できます ホスト名 FQDN 形式で指定 Asia/Tokyo を選択 CLI アクセス用 root アカウントのパスワード WebUI アクセス用 admin アカウントのパスワード 6.2. VLAN 設定 Network VLANs で 以下の状態になるように設定します 42

43 6.3. Self IP 設定 Network Self IPs で 以下の状態になるように設定します 6.4. Routing 設定 Network Routes で 以下の状態になるように設定します 43

44 6.5. Pool の設定 Local Traffic Pools で設定します http-pool 任意の名前を入力 ヘルスモニター (http) を設定 Pool Member のアドレスと Port 番号を入力して Add ボタンを押す 44

45 A-pool 任意の名前を入力 ヘルスモニター (http) を設定 Pool Member のアドレスと Port 番号を入力して Add ボタンを押す B-pool 任意の名前を入力 ヘルスモニター (http) を設定 Pool Member のアドレスと Port 番号を入力して Add ボタンを押す 45

46 6.6. Virtual Server の設定 Web-vs (Port:80) 任意の名前を入力 IP アドレスとポート番号を入力 HTTP Profile を選択 環境に応じて設定 ~ 略 ~ 設定済みの http-pool を選択 46

47 Secure-vs (Port:443) 任意の名前を入力 IP アドレスとポート番号を入力 HTTP Profile を選択 本ガイドでは簡易的に デフォルトで用意されている clientssl を選択 環境に応じて設定 ~ 略 ~ 設定済みの http-pool を選択 47

48 7. irules の使い方 irules の設定方法に慣れるために 簡易的に以下のような irule を設定してみます HTTP リクエストに含まれる User-Agent ヘッダ情報をログへ出力する 具体的には 2 つのブラウザ : Internet Explorer と Firefox を使って Virtual Server にアクセスし それらのブラウザの User-Agent ヘッダの情報が BIG-IP 内部へログが出力されることを確認します irules の作成方法には 大きく以下の 2 パターンがあります 7.1. [ パターン 1] irule Editor を使う irule Editor は DevCentral から無償でダウンロードできるエディタです irule Editor のダウンロード用リンク : このエディタは irule の構文チェック コマンドの補完 コマンドをクリックすることで DevCentral のオンラインマニュアルページへアクセスしてくれるなど irules 作成のための支援機能を備えたエディタです BIG-IP の Web-GUI からも irule 作成は可能ですが このエディタを使うほうが irule は作りやすいと思います 本エディタは 不定期に Version Up がなされるので できるだけ最新版をご利用ください (1) PC で irule Editor を起動し 以下の赤点線部分をクリックします (2) 以下のように値を入力し OK を押します 1 BIG-IP のマネージメント IP を入力 2 Admin のパスワードを入力 3 OK をクリック 48

49 (3) 以下の赤点線部分をクリックします (4) irule の名前を入力します irule の名称 ( 任意 ) を入力 (5) User-Agent を ログファイルへ出力する irule を入力します 設定後 save ボタンを押します Save ボタン 上記の irule: when HTTP_REQUEST { log local0. "USER-AGENT is [string tolower [ "User-Agent"]]" 49

50 7.2. [ パターン 2] BIG-IP の Web GUI を使う BIG-IP の Web GUI インタフェースから直接 irule を作成 編集することも可能です Local Traffic irules で表示された画面右上の Create ボタンを押して表示された画面で 以下のように設定します irule の名称 ( 任意 ) を入力 irule を入力 50

51 irule の適用 作成した irule を Virtual Server へ適用します (1) Local Traffic Virtual Server で表示された設定済みの Virtual Server:Web-vs を選択し 画面の上に表示された Resources タブをクリックします irules の部分の Manage ボタンを押します (2) 作成した irule を選択し << ボタンを押します (3) 以下の状態になります 51

52 出力されるログの確認 irule で出力されるログは 以下の手順で BIG-IP に SSH でアクセスし コマンドラインで確認します (1) 以下のコマンドを実行します Sync] config #tail f /var/log/ltm (2) irule を設定した Virutal Server へ クライアント PC から 以下の 2 つのブラウザを使ってアクセスしてみます 1 FireFox 2 Internet Explorer (3) /var/log/ltm に 以下のようなログが出力されます 1 Firefox Aug 26 03:04:05 big208 info tmm1[11991]: Rule /Common/User-Agent_check <HTTP_REQUEST>: USER-AGENT is mozilla/5.0 (windows nt 6.1; rv:30.0) gecko/ firefox/ Internet Explorer Aug 26 03:04:21 big208 info tmm3[11991]: Rule /Common/User-Agent_check <HTTP_REQUEST>: USER-AGENT is mozilla/5.0 (windows nt 6.1; trident/7.0; rv:11.0) like gecko 以上が irule の基本的な使い方です 52

53 8. irules の具体例 具体的な irule のサンプルを紹介します 8.1. よく使う EVENT の例 irule には多くのイベントが存在しますが このセクションでは よく利用するイベントを使ったサンプルを紹介します 尚 EVENT 発動のタイミングの詳細は Appendix に記載しましたので 必要に応じて参照ください CLIENT_ACCEPTED あるエントリが BIG-IP のコネクションテーブルに挿入されたときに このイベントが発動します TCP の場合は 3WAY ハンドシェーク完了時に発動します (1) サンプル irule の動作概要 以下のサンプルは クライアントと BIG-IP の間で TCP コネクションが確立された時刻をログ出力する というものです No サンプル irule when CLIENT_ACCEPTED { set curtime [clock seconds] set formattedtime [clock format $curtime -format {%H:%M:%S ] log "the time is: $formattedtime" 1 TCP 3WAY ハンドシェークが完了したとき 2 その時刻を変数にセットし 3 時刻のフォーマットを人が読み取りやすい形に整形し 4 それをログとして出力する (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) クライアントから web-vs( へブラウザでアクセスしてください (5) ブラウザと BIG-IP の間で確立される TCP コネクション数分のログが出力されます 例 : May 18 18:42:44 big208 info tmm[13467]: :6: Rule /Common/current_time <CLIENT_ACCEPTED>: the time is: 18:42:44 May 18 18:42:44 big208 info tmm1[13467]: :6: Rule /Common/current_time <CLIENT_ACCEPTED>: the time is: 18:42:44 [ 参考 ] UDP の場合は TCP のようなハンドシェークは存在しないので コネクションテーブルにエントリされたタイミングで発動され その UDP のエントリは アイドルタイムアウトになる ( デフォルト 60 秒 ) まで存続し続けます よって タイムアウトまでの間にそのエントリと同じ情報を持つ UDP パケットが到達しても このイベントは新規と見なされないため 発動しません 53

54 CLIENT_DATA ある TCP コネクションが TCP::collect の状態にあるとき クライアントから新しいデータを受け取るたびにこの CLIENT_DATA イベントが発動します (1) サンプル irule の動作概要 以下のサンプルは Web ブラウザの種類に応じて 振り分ける Pool を変える というものです 具体的には Firefox なら A-Pool それ以外なら B-Pool という振り分けにしています No サンプル irule when CLIENT_ACCEPTED { TCP::collect when CLIENT_DATA { if { [TCP::payload] contains " Firefox" { log local0. "PAYLOAD is [TCP::payload]" pool A-pool else { pool B-pool TCP::release 1 3WAY ハンドシェークが完了したとき 2 その TCP データを収集する 3 2 で TCP データを受け取ったので このイベントが発動 4 そのデータ (Payload) が Firefox を含んでいたら 5 その Payload 部分をログ出力し 6 A-Pool に送る 7 それ以外は 8 B-Pool に送る 9 そして 取得した TCP データを開放する (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) クライアントから web-vs( へ Firefox ブラウザでアクセスしてください "A-pool" からのレスポンスを受け取ります (5) クライアントから web-vs( へ Internet Explorer ブラウザでアクセスしてください "B-pool" からのレスポンスを受け取ります [ 参考 ] UDP の場合は UDP セグメントを受け取るたびに発動します また UDP の場合は TCP のような collect コマンドによるデータ取得は必要ありません 54

55 HTTP_REQUEST HTTP リクエストを受け取ったときに発動します (1) サンプル irule の動作概要 以下のサンプルは URI に応じて SSL の Virtual Server へリダイレクトする というものです 具体的には "secure" という URI の場合に HTTPS の VS にリダイレクトさせます No サンプル irule when HTTP_REQUEST { if { [ contains "secure" { log local0. "URI is [ HTTP リクエストを受け取ったとき 2 URI が "secure" の文字を含んでいたら 3 URI をログ出力し 4 SSL の Virtual Server(HTTPS) へリダイレクトさせる (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) クライアントのブラウザから web-vs へ でアクセスしてください (5) へリダイレクトされます 55

56 HTTP_RESPONSE HTTP レスポンスを受け取ったときに発動します (1) サンプル irule の動作概要 以下のサンプルは レスポンスのステータスコードが 404 なら クライアントとの TCP コネクションを切断する というものです No サンプル irule when HTTP_RESPONSE { if { [ == 404 { log local0. "HTTP Status is [ reject 1 HTTP レスポンスを受け取ったとき 2 HTTP のステータスコードが 404(Not Found) だったら 3 そのステータスコードをログ出力し 4 HTTP データを収集 して 5 TCP を切断する [ Tips] このイベントの中で を使わないで reject コマンドを使った場合には BIG-IP はサーバが生成した HTTP ヘッダをクライアントに送ってから TCP リセットを送ります HTTP ヘッダを送らずに TCP リセットを送りたい場合には reject コマンドの前に が必要です がなくても 結果は同じように見えます しかし 例えば 404 で返される HTTP リクエストヘッダの中に 攻撃者が攻撃を成立させるための手がかりになる情報が入っているかもしれません そのような場合に備え 404 レスポンスの場合にはクライアントに何も返さない ということを想定した irule になっています (2) まず この irule を適用する前に クライアントのブラウザから web-vs へ ( 存在しない URI) でアクセスして ブラウザ上に 404 の表示があることを確認してください 例 :IE の場合 (3) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (4) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (5) クライアントのブラウザを再起動してから 再度 web-vs へ ( 存在しない URI) でアクセスしてください (6) 今度はブラウザの画面上に 404 の表示が無い状態で切断されます 56

57 RULE_INIT このイベントは irules の中で使われる static 変数を初期化するために使います この RULE_INIT で指定した変数は 全ての Virtual Server で共通で利用できます このイベントは 以下の状態の時に発動します このイベントを使った irule が save されたとき デバイスが起動したとき ソフトウェアが再起動されたとき (1) サンプル irule の動作概要 以下のサンプルは サーバから発行された Cookie( 平文 ) を クライアントと BIG-IP の間は暗号化する というものです 本ガイドで使っている Web サーバの Cookie 変数名は "SESSION" です 環境に応じて変更してください No サンプル irule when RULE_INIT { set static::key [AES::key 256] when HTTP_RESPONSE { if {[ exists "SESSION"] { set decrypted [ "SESSION"] remove "SESSION" set encrypted [b64encode [AES::encrypt $static::key $decrypted]] insert name "SESSION" value $encrypted log local0. "DEC=$decrypted, ENC=$encrypted" when HTTP_REQUEST { if {[ exists "SESSION"] { set encrypted [ "SESSION"] remove "SESSION" set decrypted [AES::decrypt $static::key [b64decode $encrypted]] insert name "SESSION" value $decrypted log local0. "DEC=$decrypted, ENC=$encrypted" 57

58 1 この irule が save されたとき 2 256bit の AES 鍵を変数 (static::key) に入れる 3 HTTP レスポンスを受信したとき 4 もし SESSION という名前の Cookie が存在していたら 5 変数 :decrypted にその Cookie の値を入れ 6 一旦 その Cookie(SESSION) を削除する 7 $decrypted に入った Cookie 値を $static::key の AES 鍵で暗号化 &base64 に変換し 変数 :encrypted に入れる 8 暗号化したその Cookie 値 ($encrypted) を SESSION という名の Cookie として HTTP レスポンスに付け加える 9 暗号前の値および暗号後の値をログ出力する 10 HTTP リクエストを受信したとき 11 もし SESSION という名前の Cookie が存在していたら 12 変数 :encrypted にその Cookie の値を入れ 13 一旦 その Cookie(SESSION) を削除する 14 $encrypted に入った Cookie 値を base64 でデコード $static::key の AES 鍵で複合化し 変数 :decrypted に入れる 15 複合化したその Cookie 値 ($decrypted) を SESSION という名の Cookie として HTTP レスポンスに付け加える 16 複合後の値および複合前の値をログ出力する (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) Web ブラウザから web-vs( に初めてアクセスします もし 以下の Error に遭遇したら 一旦 Web ブラウザを再起動して アクセスし直して下さい この Error は Web ブラウザが始めてこの Web ページにアクセスするのではなく 以前に既にアクセスしたことがあって そのときの 暗号化されてない Cookie が Web ブラウザに残っていることが原因です May 22 10:00:50 big208 err tmm[10621]: :3: TCL error: /Common/RULE_INIT <HTTP_REQUEST> - conversion error (line 1) invoked from within "b64decode $encrypted" (5) HTTP レスポンスで Web サーバから SESSION Cooike が発行されます これが DEC= に入った値です これを この irule を使って AES 鍵で暗号化したものが ENC= に入った値で これが Web ブラウザに渡されます May 22 10:00:55 big208 info tmm[13467]: Rule /Common/RULE_INIT <HTTP_RESPONSE>: DEC=fhfuk4jn79kql0e0lhtjdleu55, ENC=TbiL4Kh2c7EMfOggwnOd4kx+rkRc+EDp2X28PPvD5EC8YvORYoTaDR57dncmUVmf1+ixuEpLl11YTHzluytOxgAAAAE= (6) この web アプリケーションのフォームに username と password を入れてログインすると HTTP リクエストに SESSION Cookie として ENC= の値でログインします これを この irule を使って AES 鍵で複合化したのが DEC= に入った値です DEC= ENC= のどちらの値も (4) 同じになっています May 22 10:01:07 big208 info tmm[13467]: Rule /Common/RULE_INIT <HTTP_REQUEST>: DEC=fhfuk4jn79kql0e0lhtjdleu55, ENC=TbiL4Kh2c7EMfOggwnOd4kx+rkRc+EDp2X28PPvD5EC8YvORYoTaDR57dncmUVmf1+ixuEpLl11YTHzluytOxgAAAAE= 58

59 LB_FAILED このイベントは LTM が Pool Member にリクエストを送る準備ができたときに その Pool Member へ以下のような理由でそのリクエストを送れないときに発動します Pool Member に到達できなかった場合 ( 例 : 経路ダウン / ルーティング設定ミス ) Pool Member から TCP SYN への反応が無かった場合 ( 例 :Pool Member が停止している ) BIG-IP が Pool または Pool Member を選択できなかった場合 ( 例 :pool コマンドの設定ミス ) もし ヘルスモニターが設定されていない状態で irule が pool または member を選んだ場合や node コマンドを使って モニターしてない宛先へトラフィックを送った場合には 選択された宛先は そのリクエストに対して返答できる状態ではないかもしれません そのケースでは "LB_FAILED" イベントがトリガーされ その状況を処理するようにロジックを組むことができます (1) サンプル irule の動作概要 以下のサンプルは URI が "/admin" で始まるリクエストは のアドレスを持つサーバに送るが そのサーバが返答しなかった場合に 次の候補のノードに送る というものです No (a) (b) (c) (d) (e) (f) 13 サンプル irule when HTTP_REQUEST { if { [ starts_with "/admin" { set admin 1 node else { set admin 0 pool http-pool when LB_FAILED { switch $admin { 1 { log local0. "Server :80 not responding" LB::reselect node { log local0. "Server :80 not responding" LB::reselect node { log local0. "Server :80 not responding" reject incr admin 1 HTTP リクエストを受け取ったとき 2 URI が "/admin" の文字で始まっていたら 3 変数 :admin に "1" をセットし :80 に この HTTP リクエストを送る 5 URI が "/admin" 以外なら 59

60 6 変数 :admin に "0" をセットし 7 http-pool に送る 8 サーバが応答しなかった場合 この LB_FAILED イベントが発動 9 $admin に "1" がセットされていたら 10 この "1 { 処理 " が実行される 11 "1 { 処理 " の 1 行目 : サーバが応答しなかったことをログ出力する 12 "1 { 処理 " の 2 行目 : :80 へ送る 13 $admin に 1 を加算する (=$admin は "2") もし 12 の :80 も応答しなかったら 再び 8 の LB_FAILED が発動 上記 13 で $admin には "2" がセットされているので (a) この "2 { 処理 " が実行される (b) "2 { 処理 " の 1 行目 : サーバが応答しなかったことをログ出力する (c) "2 { 処理 " の 2 行目 : :80 へ送る 再び 13 で $admin に 1 を加算する (=$admin は "3") もし (c) の :80 も応答しなかったら 再び 8 の LB_FAILED が発動 上記 13 で $admin には "3" がセットされているので (d) この "3 { 処理 " が実行される (e) "3 { 処理 " の 1 行目 : サーバが応答しなかったことをログ出力する (f) "3 { 処理 " の 2 行目 : コネクションを RST で切断する (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください (5) が停止した という形を模擬します irule の 4 の行を 存在しないアドレス ( 例 : ) に変更して save してください ( 存在しないアドレスに変更することで 停止したことと同じ結果になります ) (6) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください (7) も停止した という形を模擬します irule の 12 の行を 存在しないアドレス ( 例 : ) に変更して save してください ( 存在しないアドレスに変更することで 停止したことと同じ結果になります ) (8) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください 60

61 9. Class / Data-Group の使い方 irules を使うときに 検索可能なリストがほしい場合があります 例えば HTTP リクエストの URI を見て あるリストの中からヒットする URI の文字列を見つけ そこに指定されたプールに振り分ける というような場合です このような場合に Class/Data-Group が役に立ちます F5 が言う "class" と "Data-Group" には 明確な違いはありません GUI では Data-Group(s) と呼ばれ irules コマンドでは Class(es) と呼ばれています 本ガイドでは便宜上 リストを Data-Group そのデータを呼び出す irule コマンドを Class と呼ぶことにします Data-Group の種類には 2 つあります Internal Data-Group:BIG-IP のコンフィグファイル (bigip.conf) 内に設定する場合 External Data-Group: 外部ファイルとして保存する場合 (=Host 側 (Linux 側 ) のファイルとして保存する場合 ) External Data-Group は V11.4 から実装された機能です Internal Data-Group は多くても 100,000 エントリ程度が限界でしたが External Data-Group を使うことで 2,000,000~3,000,000 のエントリまで扱うことができるように拡張されています 以降 Data-Group の Type 及びこれら 2 つの方式それぞれの利用方法を解説します 61

62 Data-Group のデータの Type Data-Group のデータ ( エントリ ) には 以下のような Type が存在します (1) String ( 文字列 ) 最も一般的なタイプです string( 文字列 ) フォーマットのあらゆるタイプのデータをストアすることができるので URL スイッチングのようなことを実行する場合に 高い頻度で使われます 例 : /admin := , /user := , (2) IP IP アドレスやアドレスレンジをストアできるタイプです 例えば 送信元 IP アドレス毎に振分け先の Pool を変更したいような場合に便利なタイプです 例 : host := "1", host := "2", network /24 := "0", (3) Integer ( 数値 ) 整数値をストアすることを可能にするタイプです 何らかのコマンド実行結果が数値となる場合 ( 例えば演算や 何かをカウントする場合 ) に便利です 例 : 1 := "test 1", 2 := "test 2", 62

63 Internal Data-Group BIG-IP のコンフィグレーションファイル (bigip.conf) 内に Data-Group を作り それを参照する方法です このサンプルでは まず以下の Data-Group を作ります Type は String です /admin := , /user := , そして 以下のような irule を作ります HTTP リクエストを受信したら その URI と上記の Data-Group を比較 URI と Data-Group 内の文字列が一致したら そこに指定された IP アドレスへその HTTP リクエストを送る 具体的には URI が /admin なら へその HTTP リクエストを送る URI が /user なら へその HTTP リクエストを送る となる irule を作ります 63

64 Internal Data-Group の作成 BIG-IP のコンフィグファイル (bigip.conf) 内に Data-Group を作ります (1) tmsh の場合は 以下のコマンドで Data-Group を生成できます (tmos)# create ltm data-group internal TEST_Class { records add { /admin { data /user { data type string (2) 以下のコマンドで Data-Group の設定内容を確認できます (tmos)# list ltm data-group ltm Data-Group internal TEST_Class { records { /admin { data /user { data type string (3) GUI からも作成 / 編集できます 以下は Local Traffic irules Data Group List で 上記 tmsh で作った Data-Group を選択した画面です ここで編集が可能です 64

65 Internal Data-Group を使った irules 作成した Data-Group を irule で参照するには "class" コマンドを使います (1) サンプル irule の動作概要 本サンプルは HTTP リクエスト内の URL と Data-Group を比較し ヒットしたら そこに記載された IP アドレスへそのリクエストを送る というものです No サンプル irule when HTTP_REQUEST { if {[class match [ contains TEST_Class] { set NODE [class match -value [ contains TEST_Class] log local0. "$NODE" node $NODE 80 1 HTTP リクエストを受け取ったとき 2 URI が Data-Group の TEST_Class 内の文字にヒットしたら 3 NODE 変数に ヒットした URI に記載された値 (IP アドレス ) を格納し 4 その IP アドレスをログ出力し 5 NODE の 80 番ポートに送る (2) コマンドの解説 class match このコマンドは 特定の検索パラメータが正確にマッチする Member を Data-Group list から検索し マッチが成功したかどうかを示す True/False 値 (0/1) を返します class match -value このコマンドは Class 内の Key/value の vaule を返答することができます 例えば class に URI と Pool が key と value として記載されたものがあるとします Class の行が /admin := であった場合 検索値 (key) が /admin であれば その 2 番目の値 (value): を戻り値とします (3) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (4) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (5) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください (6) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください 65

66 External Data-Group ( その 1:String 形式 ) 今度は BIG-IP のコンフィグ内ではなく BIG-IP の Host 側 (Linux 側 ) に保存されたファイルを Data-Group として利用する方法を示します まずは Internal Data-Group と同様に String 形式で作成してみます External Data-Group 用ファイルの作成 BIG-IP の Host 側 (Linux 側 ) に Data-Group 用の外部ファイルを作成します ファイルを保存するディレクトリはどこでもかまいません よって 本ガイドでは /var/tmp ディレクトリに保存することにします [root@big208:active:in Sync] config # cd /var/tmp vi エディタなどを利用して 以下の 2 行を追加してください [root@big208:active:in Sync] tmp # vi ext_test_class.file /admin := , /user := , 注意点 : 改行コードは LF のみ に対応しています Windows の CRLF などは読み込みエラーとなります よって Windows のテキストエディタで作成した Data-Group をそのまま貼り付けても エラーとなる場合がありますのでご注意ください External Data-Group ファイルの読み込み 以下の TMSH コマンドで 外部ファイルをオブジェクトとして読み込みます (tmos)# create sys file data-group ext_test_class_object type string source-path file:/var/tmp/ext_test_class.file Copying file "file:/var/tmp/ext_test_class.file"... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed :--:-- --:--:-- --:--: External Data-Group の作成 以下のコマンドで 上記で生成したオブジェクトを irule が参照できる Data-Group に変換します (tmos)# create ltm data-group external ext_test_class external-file-name ext_test_class_object 以下のコマンドで 参照先を確認できます (tmos)# list ltm data-group external ltm data-group external ext_test_class { external-file-name ext_test_class_object type string 66

67 External Data-Group を使った irule (1) サンプル irule の概要以下の irule は internal Data-Group の場合と同じ動作を行うルールです 参照する先が bigip.conf 内ではなく 外部ファイルから生成した Data-Group になる と点だけが異なります No サンプル irule when HTTP_REQUEST { if {[class match [ contains ext_test_class] { set NODE [class match -value [ contains ext_test_class] log local0. "$NODE" node $NODE 80 (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください (5) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください (6) 外部ファイルの内容を変更して Data-Group に反映させてみます vi エディタなどを使って 外部ファイルを変更してください [root@big208:active:in Sync] tmp # vi ext_test_class.file /admin := , /user := , 変更後 tmsh で以下のコマンドを実行することで Data-Group に反映できます (tmos)# modify sys file data-group ext_test_class_object source-path file:/var/tmp/ext_test_class.file (7) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください (8) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください 67

68 External Data-Group ( その 2:Address 形式 ) 今度は データ Type を Address 形式で作成したものを使って 動作を確認します External Data-Group ファイルの作成 BIG-IP の Host 側 (Linux 側 ) に Data-Group 用の外部ファイルを作成します vi エディタなどを利用して 以下の 3 行を追加してください [root@big208:active:in Sync] tmp # vi ext_test_ip_class.file host := "1", host := "2", network /24 := "0", External Data-Group ファイルの読み込み 以下の TMSH コマンドで 外部ファイルをオブジェクトとして読み込みます (tmos)# create sys file data-group ext_test_ip_class_object type ip source-path file:/var/tmp/ext_test_ip_class.file Copying file "file:/var/tmp/ext_test_ip_class.file"... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed k 0 --:--:-- --:--:-- --:--: External Data-Group の作成 以下のコマンドで 上記で生成したオブジェクトを irule が参照できる Data-Group に変換します (tmos)# create ltm Data-Group external ext_test_ip_class external-file-name ext_test_ip_class_object 以下のコマンドで 参照先を確認できます (tmos)# list ltm data-group external ext_test_ip_class ltm Data-Group external ext_test_ip_class { external-file-name ext_test_ip_class_object type ip 68

69 External Data-Group を使った irule (1) サンプル irule の概要 クライアントの IP アドレスに応じて 利用する Pool Member を変える というルールです No サンプル irule when CLIENT_ACCEPTED { switch [class match -value [IP::client_addr] equals ext_test_ip_class] { "0" { reject "1" { node "2" { node default { log local0. "Address not found or invalid value." 1 クライアント側の TCP コネクションが確立されたとき 2 クライアントの IP アドレスで ext_test_ip_class 内を検索し 3 戻り値が "0" なら TCP RST を送る 4 戻り値が "1" なら :80 へ 5 戻り値が "2" なら :80 へ 6 何もヒットしなければ ログを出力 (2) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (3) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (4) Web ブラウザで にアクセスし からのレスポンスのみが得られることを確認してください (5) Web ブラウザを Forward Proxy(Squid) 経由 (= から BIG-IP へアクセス ) に変更します 例 )Internet Explorer の場合 : ツール インターネットオプション 接続 タブ LAN の設定 ボタンを押す 69

70 サンプルネットワーク構成図中の Proxy(Squid) サーバのアドレス / ポート = / 3128 を入力 (6) Web ブラウザで にアクセスし からのレスポンスのみが得られることを確認してください (7) Web ブラウザの Forward Proxy(Squid) 経由を解除します (8) 外部ファイルの内容を変更して Data-Group に反映させてみます vi エディタなどを使って 例えば外部ファイルを以下のように変更してください [root@big208:active:in Sync] tmp # vi ext_test_ip_class.file host := "2", host := "1", network /24 := "0", 変更後 tmsh で以下のコマンドを実行することで Data-Group に反映できます (tmos)# modify sys file data-group ext_test_ip_class_object source-path file:/var/tmp/ext_test_ip_class.file (9) Web ブラウザで にアクセスし からのレスポンスのみが得られることを確認してください (10) Web ブラウザを Proxy(Squid) 経由に変更します にアクセスし からのレスポンスのみが得られることを確認してください 70

71 9.2. table の使い方 table コマンドは メモリ内に 小さなデータベースに相当するもの を作成してくれます table を使うことで 例えば送信元 IP アドレス単位にアクセス数をカウントし ある IP アドレスからのコネクションが一定数を超えたら その IP アドレスからのアクセスはドロップする というような よりきめ細かい単位での制御が可能になります (1) サンプル irule の動作概要 本サンプルは 1 秒間に 100 以上のアクセス (TCP コネクション ) が発生する IP アドレスは一定時間ブロックするという irule です 上図を簡単に解説します と のクライアントからのアクセスがあり それぞれの IP アドレス単位に 1 秒間に発生するコネクション数を table を使ってカウントします からのアクセスは 100/ 秒を超えたので Subtable:blacklist にレコードを追加します そのレコードの Lifetime( 生存時間 ) は 20 秒にセットされます この後 からの後続のアクセスは 20 秒の間ブロックされ続けます このような動作イメージのルールを作成します No サンプル irule when RULE_INIT { set static::maxquery 100 set static::holdtime 20 when CLIENT_ACCEPTED { set srcip [IP::remote_addr] if { [table lookup -subtable "blacklist" $srcip]!= "" { log local0. "BList $srcip is: [table lookup -subtable "blacklist" $srcip]" drop return else { set curtime [clock second] set key "count:$srcip:$curtime" 71

72 set count [table incr $key] table lifetime $key 1 log local0. "COUNT/sec of $key is: $count" if { $count >= $static::maxquery { table add -subtable "blacklist" $srcip "blocked" indef $static::holdtime table delete $key drop return 1 この irule が save されたとき 2 Static 変数 (static::maxquery) に 100 を入れる ( 最大コネクション数 ) 3 Static 変数 (static::holdtime) に 20 を入れる ( ブラックリストとなったレコードの生存時間 ) 4 クライアントとの TCP コネクションが確立されたとき 5 変数 (srcip) に クライアントの IP アドレスを入れる 6 もし "blacklist" という名の subtable に $srcip の IP アドレスが存在していたら 7 その IP アドレスのログを出力し 8 その IP アドレスからのパケットをドロップし 9 この処理から抜ける 10 もし 6 ではなかったら (= ブラックリストに IP アドレスが存在しなかったら ) 11 変数 (curtime) に現在時刻を入れ 12 変数 (key) に "count:ip アドレス : 現在時刻 " の形で値を入れ 13 テーブルに $key のレコードを追加 & $key の値を 1 つ増加 & その値を変数 (count) に入れ 14 テーブルの $key レコードのライフタイムを 1 秒にセット 15 $key の 1 秒あたりのコネクション数をログ出力 秒間のコネクション数が 100 に達するまでは 10~15 が繰り返される ( 厳密には 10~16 が繰り返されるが 16 の if 条件には合致しないので それ以降の処理は行われない ) 16 $count が 100(static::maxquery の値 ) に達したら 17 "blacklist" という名のサブテーブルに 以下を追加 ( ア ) $srcip( クライアントの IP アドレス ) を Key に ( イ ) "blocked" を Value に ( ウ ) timeout( アイドルタイムアウト ) は無限に ( エ ) lifetime( このレコードが作られてからの生存時間 ) は 20 秒 (static::holdtime) に の $key レコードは削除 ( コネクションが 100 になるまでカウントするための一時的なレコードであるため ) 19 クライアントからのパケットはドロップ 20 この処理から抜ける 72

73 (2) コマンド解説 table incr <key> - table 上にある 指定された Key の Value に 1 を加えます もし table 上に Key が存在していなかったら デフォルト value には "0" が使われ そのエントリが追加されます - incr 処理が完了すると そのエントリ (key) の値を返します table add -subtable <name> <key> <value> <timeout> <lifetime> - <name> に指定された " 名前つきテーブル "=subtable を生成します - そのサブテーブルのレコードとして <key> <value> の形でエントリされます - <timeout> に indef が指定されると アイドルタイムアウトは発生しなくなります - <lifetime> には このレコードが生成された時刻から何秒後に消去するかを指定します table lookup -subtable <name> <key> - <name> に指定された " 名前つきテーブル "=subtable 内を <key> で検索し それに紐付く value を返します table lifetime <key> <value> - table 内の <key> の lifetime( レコードが作成されてから消去するまでの時間 ) を <value> に指定された秒数にセットします table delete <key> - table 内の <key> のレコードを削除します (3) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (4) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (5) (Linux) で 以下のコマンド (Apache Bench) を実行してください # ab n c [ 参考 :Apache Bench] (6) /var/log/ltm を見ていると 100 コネクションに達したとき 以下のログが出力されます Jun 11 19:27:20 big208 info tmm1[11003]: Rule /Common/TABLE <CLIENT_ACCEPTED>: COUNT/sec of count: : is: 99 Jun 11 19:27:20 big208 info tmm[11003]: Rule /Common/TABLE <CLIENT_ACCEPTED>: COUNT/sec of count: : is: 100 Jun 11 19:27:20 big208 info tmm1[11003]: Rule /Common/TABLE <CLIENT_ACCEPTED>: BList is: blocked (7) blacklist テーブル上のレコードは通信の有無に関係なく 20 秒で消えますので もう一度実行する場合には 20 秒待ってから実施してください 73

74 10. irule 作成のテクニック デバッグのやり方 irule は多様な機能を持つので 要件によってはコードが複雑になる場合があります 複雑なコードはエラーを誘発しやすくなるので デバッグが必要になることがあると思います デバッグ手段として有効なのは とにもかくにもログ出力することです 以下の要領で各所にロギングの行を挿入し 変数の値が想定どおりにセットされているか またはコマンドの実行結果や戻り値が想定通りか 等をチェックします when HTTP_REQUEST { log local0. "section1, a is $a" もちろん変数に限らず コマンドを記述することもできます when CLIENT_ACCEPTED { log local0. "section1, Bandwidth is [TCP::bandwidth]" 本番環境でのロギング有効化 / 無効化 デバッグロギングは アプリケーションのテストを行うときや 本番サーバの問題を修正するような場合に有効なツールです しかし ロギングによる CPU 負荷は比較的高く またロギングし続けると かなり大きな Syslog サーバのディスクが必要となる場合があります よって 多くのケースでは 不具合修正ができた後では デバッグログは無効化しておくことが推奨されます 無効化の方法には 以下のようにいくつかの方法が存在します irule 内からログコマンドを削除する これは最も簡単な方法です log の行を削除して保存するだけです irule 内の log 行をコメントアウトする log コマンド行の先頭に # をつけてコメントアウトする方法です この方法であれば log 設定を簡単に復活できるので アプリケーションの新しい問題が発生した場合にも直ぐにロギングできます 変数を使った 条件つきロギングを行う "if" コマンドを使って 変数の値をチェックすることで ログ行を有効化 / 無効化する方法です 変数値を変えるだけで シンプルにロギングの ON/OFF ができます 例えば LB_FAILED イベントのサンプルで使った irule に この方法を適用してみます 74

75 No サンプル irule when HTTP_REQUEST { set DEBUG 1 if { $DEBUG { log local0. "Request: [ if { [ starts_with "/admin" { set admin 1 node else { set admin 0 pool http-pool when LB_FAILED { switch $admin { 1 { if { $DEBUG {log local0. "Server :80 not responding" LB::reselect node { if { $DEBUG {log local0. "Server :80 not responding" LB::reselect node { if { $DEBUG {log local0. "Server :80 not responding" reject incr admin (1) この irule を web-vs に適用してください ( irule の使い方 のセクションを参照 ) (2) /var/log/ltm へ出力されるログが確認できる状態にしてください ( irule の使い方 のセクションを参照 ) (3) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください 期待するログが出力されていることを確認してください (4) 以下 2 つの方法のどちらかを実施してください を停止 停止できない場合 irule の 3 の行を 存在しないアドレス ( 例 : ) に変更 ( 存在しないアドレスに変更することで 停止したことと同じ結果になります ) 期待するログが出力されていることを確認してください (5) Web ブラウザで にアクセスし からのレスポンスが得られることを確認してください 期待するログが出力されていることを確認してください (6) 1 の set DEBUG 1 を set DEBUG 0 に変更し 同様の動作確認を行ってください ログが出力されなくなることを確認してください 75

76 10.2. irule による CPU 使用率の測定 irule を設定した際には どの程度のパフォーマンス劣化が発生するのかが気になる場合があります そのような場合には "timing" コマンドを使うことによって irule がどの程度 CPU サイクルを使っているのかを確認することができます 2 つの irule で CPU 使用率を比較 TCL の基礎 の章で 計算式をブレス { で囲むか囲まないかで計算効率が変わる という点に少し触れました どれぐらい違うのか 2 つを比べてみます (1) expr {$a*$b 以下は HTTP リクエストを受信したときに 2 つ数を計算する という irule です 変数を使った計算式を { で囲むことで 効率的に計算を行うパターンです No サンプル irule 名 :TMINIG_TEST when HTTP_REQUEST timing on { set a set b set c [expr {$a*$b] 以下のコマンドで この irule が使用した CPU サイクルを確認できます root@(big208)(cfg-sync In Sync)(Active)(/Common)(tmos)# show ltm rule TIMING_TEST raw (raw) Ltm::Rule Event: TIMING_TEST:HTTP_REQUEST Priority 500 Executions Total Failures 0 Aborts 0 CPU Cycles on Executing Average Maximum Minimum 0 以下のコマンドで 上記の Statistics を消去できます (tmos)# reset-stats ltm rule TIMING_TEST 76

77 (2) expr $a*$b 変数を使った計算式をブレス { で囲まないパターンです { で囲まないので TCL パーサーによる変数置換が実施された後に計算する という 2 つの処理が入るため 効率が悪くなります No サンプル irule when HTTP_REQUEST timing on { set a set b set c [expr $a*$b] 以下のコマンドで この irule が使用した CPU サイクルを確認できます root@(big208)(cfg-sync In Sync)(Active)(/Common)(tmos)# show ltm rule TIMING_TEST raw (raw) Ltm::Rule Event: TIMING_TEST:HTTP_REQUEST Priority 500 Executions Total Failures 0 Aborts 0 CPU Cycles on Executing Average Maximum Minimum { で囲んだ場合と比べると 平均値で約 1.7 倍の CPU サイクルを使用していることがわかります 77

78 irule の CPU 使用率の計算 利用する予定の irule がどの程度 CPU へインパクトを与えるのかを知りたい場合があります その場合の計算方法を示します 厳密な計算は難しいですが 目安にはなりえます プラットフォームの CPU クロック数を求める まず プラットフォームの CPU を調べます 本ガイドで利用している BIG-IP は Virtual Edition であり CPU を 2 個使っています root@(big208)(cfg-sync In Sync)(Active)(/Common)(tmos)# show sys hardware Chassis Information Maximum MAC Count 1 Registration Key - Hardware Version Information Name cpus Type base-board Model Intel(R) Xeon(R) CPU 2.53GHz Parameters cache size 8192 KB cores 2 cpu MHz Platform Name BIOS Revision Base MAC ~ 省略 ~ BIG-IP Virtual Edition 00:50:56:bd:a4:0b 計算 Timing コマンドで出力された CPU サイクルを CPU クロックの合計値で割る という単純計算です 1 つの HTTP リクエストが発生した際の CPU 使用率 という値となります CPU クロックの合計 : 2,527,000,000 Hz * 2 Core = 5,054,000,000Hz (1) expr {$a*$b の場合 / 5,054,000,000Hz % (2) expr $a*$b の場合 / 5,054,000,000Hz % 例えば (2) の場合は 10,000 リクエスト / 秒のアクセスがあれば CPU は 6% 上昇する と見込まれます 78

79 10.3. irule を最適化する irule を最適に利用するために考慮すべきポイントについてまとめました (1) irule を使う前にまず Profile でできないかを確認する irule は様々なことが行える強力なスクリプトですが BIG-IP に標準で実装されている機能に比べると オーバーヘッドが大きくなりがちです よって 何でも irule で実装してしまう前に BIG-IP に標準実装されている Profile の設定で実施できないかを調査し Profile でできるのならば それを利用するほうがパフォーマンスへのインパクトは少なくすみます 例 : HTTP header insert and erase HTTP fallback HTTP compress uri <exclude include> HTTP redirect rewrite HTTP insert X-Forwarded-For HTTP ramcache uri <exclude include pinned> Stream profile for content replacement Class profile for URI matching. (2) 最適な制御ステートメントを利用する (if/elseif/else,switch,class/data-group) 条件分岐を行う制御ステートメントは if,switch など 複数存在します それぞれの制御ステートメントには得手 / 不得手な部分があるので それぞれを見極めて利用することによって 不要な CPU リソースを消費しないようすることが望ましいです if/elseif を使うよりもまず switch または Class/Data-Group を使うことを考える エントリ以下の条件分岐なら Switch を使う エントリ以上の条件分岐なら Class/Data-Group を使う しかし if/elseif のほうが switch や Class よりも柔軟性が高いので 適材適所で利用する 79

80 if の連続使用よりも if/elseif を使う 例えば以下 2 つの irule は同じ結果を導き出します if/if/if if/elseif/elseif when HTTP_REQUEST { set uri [ if { $uri equals "/" { pool http-pool if { $uri contains "admin" { pool A-pool if { $uri contains "user" { pool B-pool when HTTP_REQUEST { set uri [ if { $uri equals "/" { pool http-pool elseif { $uri contains "admin" { pool A-pool elseif { $uri contains "user" { pool B-pool しかし if/if/if の場合は 例えば 1 つ目の if で条件がヒットして Pool 選択ができた (http-pool の選択ができた ) 場合でも 後続の 2 つの if が同様の処理を実施する というムダが生じます 一方 if/elseif/elseif の方は 最初の if の条件がヒットしなかった場合にのみ 以降の elseif を実行するので if/if/if のルールよりも効率が良くなります このことは どの条件にヒットする割合が大きいかによっても影響があると考えられます もし B-Pool が選ばれる条件が 9 割以上 という場合には 両者の効率は大差ないかもしれません (3) for よりも foreach の利用を考える 以下の for と foreach は それぞれ同じ結果を導き出します for when HTTP_REQUEST { set domains [bob.com ted.com domain.com] set countdomains [llength $domains] for {set i 0 { $i < $countdomains {incr i { set domain [lindex $domains $i] foreach when HTTP_REQUEST { set domains [bob.com ted.com domain.com] foreach domain $domains { # This is faster, and more elegant # This is slower しかし 条件を多数指定する for に対し foreach は 1 つの行で同じ形を実現できます よって foreach で要件を見たせるならばその方が効率はよく また 見た目も美しくなります 80

81 (4) 最適なオペレータの利用 (contains, equals) "contains" よりも "equals" を使う contains ではなく equals で要件を満たせるなら 検索ロジックが少ない equals を使ったほうが CPU リソースの消費は少ないです (5) 正規表現の利用は極力避ける 正規表現 (Regular Expressions) は非常に便利な機能である反面 メモリや CPU リソースを多く消費しがちです 多くのケースで 正規表現を使わずとも要件を満たせるコマンドがあるはずなので 極力そちらを利用することを検討すべきです "string match" や "switch -glob" を使う "string match" や "switch -glob" のほうが正規表現よりも CPU 負荷が軽いので これらで要件が満たせるならば 正規表現は極力使うことを避けるべきです "regex" よりも "start_with" 悪い例 : when HTTP_REQUEST { if { [regexp {^/admin [ { regsub {/admin [ "/UserPortal" newuri log local0. "$newuri" $newuri よい例 : when HTTP_REQUEST { if { [ starts_with "/adimin" { set newuri [string map {admin UserPortal [ $newuri 81

82 (6) 変数を使わないほうがいい場合 変数は比較的オーバーヘッドの大きい機能です よって 変数を使わずに実装できるならば 使わないほうがよい場合があります 例えば以下のように ただ単にコマンド出力結果を変数に入れるだけならば 変数を使わないほうが効率がよいです 変数を使う 効率がよくない例 : when HTTP_REQUEST { set host [ set uri [ if { $host equals "bob.com" { log "Host = $host; URI = $uri" pool http_pool1 上記と同じことは 変数を使わない以下の irule でも実施できます when HTTP_REQUEST { if { [ equals "bob.com" { log "Host = [ URI = [ pool http_pool1 (7) 変数を使ったほうがいい場合 一方 何度も同じコマンドを実行するのならば 変数を使ったほうが 効率がよくなります 悪い例 : 繰り返し同じ処理をすると メモリ消費が多くなる when HTTP_REQUEST { if { [string tolower [ starts_with "/img" { pool imagepool elseif { ([string tolower [ ends_with ".gif") ([string tolower [ ends_with ".jpg") { pool imagepool 良い例 : 変数を使って 同じ処理を繰り返し実施しないようにする when HTTP_REQUEST { set uri [string tolower [ if { $uri starts_with "/img" { pool imagepool elseif { ($uri ends_with ".gif") ($uri ends_with ".jpg") { pool imagepool 82

83 (8) 変数名は短めに 以下は上記と同じ事を行う irule ですが 変数名が長い 悪い例です TCL は Lookup 用テーブルに変数を格納するので 長い名前はオーバーヘッドが多くなります できるだけ短い変数名にすることをお勧めします 悪い例 : when HTTP_REQUEST { set theurithatiammatchinginthisirule [string tolower [ if { $theurithatiammatchinginthisirule starts_with "/img" { pool imagepool elseif { ($theurithatiammatchinginthisirule ends_with ".gif") ($theurithatiammatchinginthisirule ends_with ".jpg") { pool imagepool (9) オペレータの注意点 これは最適化というよりも注意点です 比較演算子 ( オペレータ ) には 文字列に適したものと数字に適したものが存在します これらを適切に利用しないと 誤った判断になる場合が発生します 文字列の比較には eq や ne を使う 数字の比較には == や!= を使う 例えば "5" と "05" の比較の結果を同じとしたい (= 数字として比較したい ) のか 違うものとして扱いたい ( 文字列として扱いたい ) のかによって 利用すべきオペレータは異なります set x 5 if { $x == 5 { if { $x eq 5 { if { $x == 05 { if { $x eq 05 { # evaluates to true # evaluates to true # evaluates to true # evaluates to false よって 要件に応じて 適切なオペレータを使い分けるようにしてください 83

84 11. おわりに 基本的な irules セットアップに関しては以上で終了となります BIG-IP シリーズ製品ラインナップにおいては ソフトウェアモジュールライセンスを追加することで サーバ負荷分散はもちろんのこと 広域負荷分散やリモートアクセス機能 ネットワークファイアウォール機能など アプリケーションアクセスを最適化する為の多彩な機能が使用できるようになります 詳細は各種 WEB サイトにてご確認いただくか 購入元にお問い合わせください <F5 ネットワークス WEB サイトの紹介 > F5 ネットワークスジャパン総合サイト F5 Tech Depot: エンジニア向け製品関連情報サイト AskF5: ナレッジベース総合サイト ( 英語 ) DevCentral:F5 ユーザコミュニティサイト ( 英語 : アカウント登録が必要です ) 以上 引用文献 : ウィキペディア :Tcl/Tk F5 ネットワークスジャパン合同会社 東京都港区赤坂 赤坂ガーデンシティ 19 階 本資料は F5 ネットワークスジャパンのエンジニアが特定のソフトウェアバージョンの動作仕様に基づいて作成した構築 設計を補助するための資料であり メーカー公式資料とは異なります 資料の記載内容に誤りがあった際には指摘に基づいて修正を行いますが 内容についての責任は一切負いません また 修正 変更 改訂は予告無く行われます 84

85 12. Appendix EVENT 発動のタイミング EVENT のフロー 85

1

1 irules 設 定 ガイド(V11.5.1 対 応 ) 初 級 & 中 級 編 F5 Networks Japan V1.0 目 次 1. irules とは... 4 1.1. irules の 構 成... 4 2. TCL 動 作 確 認 の 準 備 (tclsh の 利 用 )... 5 2.1. BIG-IP への SSH アクセス... 5 2.2. tclsh を 使 う... 6

More information

目次 1. はじめに Office365 向け Outbound 通信対策 動作概要 Office365 宛通信 ( 上図左 ) 通常 Web サイト宛通信 ( 上図右 ) 構成例

目次 1. はじめに Office365 向け Outbound 通信対策 動作概要 Office365 宛通信 ( 上図左 ) 通常 Web サイト宛通信 ( 上図右 ) 構成例 BIG-IP LTM かんたんセットアップガイド (v12.1) Office365 向け Outbound 通信対策編 Office365 F5 Networks Japan V1.0 目次 1. はじめに... 3 2. Office365 向け Outbound 通信対策... 4 2.1. 動作概要... 4 2.1.1. Office365 宛通信 ( 上図左 )... 4 2.1.2.

More information

目次 1. はじめに Office365 向け Outbound 通信対策 動作概要 Office365 宛通信 ( 上図左 ) 通常 Web サイト宛通信 ( 上図右 ) 構成例

目次 1. はじめに Office365 向け Outbound 通信対策 動作概要 Office365 宛通信 ( 上図左 ) 通常 Web サイト宛通信 ( 上図右 ) 構成例 BIG-IP LTM かんたんセットアップガイド (v12.1) Office365 向け Outbound 通信対策編 Office365 F5 Networks Japan V1.3 目次 1. はじめに... 3 2. Office365 向け Outbound 通信対策... 4 2.1. 動作概要... 4 2.1.1. Office365 宛通信 ( 上図左 )... 4 2.1.2.

More information

9 WEB監視

9  WEB監視 2018/10/31 02:15 1/8 9 WEB 監視 9 WEB 監視 9.1 目標 Zabbix ウェブ監視は以下を目標に開発されています : ウェブアプリケーションのパフォーマンスの監視 ウェブアプリケーションの可用性の監視 HTTPとHTTPSのサポート 複数ステップで構成される複雑なシナリオ (HTTP 要求 ) のサポート 2010/08/08 08:16 Kumi 9.2 概要 Zabbix

More information

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページにアクセスする 1.Web ブラウザを起動します FW v6.50 以下の場合は Internet Explorer を FW v7.10 以降の場合は

More information

目次 1. はじめに x-servlet の SNMP エージェント設定... 3 ACL ファイルの作成... 3 start.bat の編集 サーバ ID によるサーバ再接続設定... 5 irule の作成... 5 Persistence Profile の作

目次 1. はじめに x-servlet の SNMP エージェント設定... 3 ACL ファイルの作成... 3 start.bat の編集 サーバ ID によるサーバ再接続設定... 5 irule の作成... 5 Persistence Profile の作 x-servlet のヒープメモリモニタによるロードバランシング設定 更新履歴 2010/09/01 本手順書の用途を記述した はじめに 項を追加 start.bat の記述に 2.8.3 での変更点を反映 irule 設定に関する注釈を追記 2011/03/31 2.9 よりサーバ ID 接頭辞 接尾辞のデフォルト文字列が変更になったため それに伴い修正 (_ _- _) -_ pg. 1 目次

More information

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダのファームウエアバージョン 5.5x 以降で 任意の間隔で画像を FTP サーバへ送信するための設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページにアクセスする 1. Internet Explorer などの Web ブラウザを起動します 2. Web ブラウザの URL

More information

ログインおよび設定

ログインおよび設定 この章は 次の項で構成されています の概要, 1 ページ admin パスワードのリセット, 3 ページ パスワードと共有秘密のガイドライン, 3 ページ 共有秘密のリセット, 4 ページ の概要 Cisco UCS Central GUI および Cisco UCS Central CLI の両方を使用して Cisco UCS Central にログ インできます 両方のインターフェイスを使用すると

More information

R80.10_FireWall_Config_Guide_Rev1

R80.10_FireWall_Config_Guide_Rev1 R80.10 ファイアウォール設定ガイド 1 はじめに 本ガイドでは基本的な FireWall ポリシーを作成することを目的とします 基本的な Security Management Security Gateway はすでにセットアップ済みであることを想定しています 分散構成セットアップ ガイド スタンドアロン構成セットアップ ガイド等を参照してください [Protected] Distribution

More information

TECHNICAL BRIEF RealServer ロードバランス時の BIG-IP 設定方法 本ドキュメントは複数の RealServer をロードバランスする際の BIG-IP コントローラの設定方法を紹介するもので F5 Networks Japan K.K. と RealNetworks

TECHNICAL BRIEF RealServer ロードバランス時の BIG-IP 設定方法 本ドキュメントは複数の RealServer をロードバランスする際の BIG-IP コントローラの設定方法を紹介するもので F5 Networks Japan K.K. と RealNetworks RealServer ロードバランス時の BIG-IP 設定方法 本ドキュメントは複数の RealServer をロードバランスする際の BIG-IP コントローラの設定方法を紹介するもので F5 Networks Japan K.K. と RealNetworks K.K. によって作成されました FTBU による BIG-IP の初期設定ご購入された BIG-IP の電源を入れ FTBU (First

More information

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ)

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ) CHAPTER 2 アプリケーションインスペクションの特別なアクション ( インスペクションポリシーマップ ) モジュラポリシーフレームワークでは 多くのアプリケーションインスペクションで実行される特別なアクションを設定できます サービスポリシーでインスペクションエンジンをイネーブルにする場合は インスペクションポリシーマップで定義されるアクションを必要に応じてイネーブルにすることもできます インスペクションポリシーマップが

More information

vmware-vdi-dg.FM

vmware-vdi-dg.FM VMware Virtual Desktop Infrastructure F5 VMware Virtual Desktop Infrastructure における F5 製品の導入 本書は VMware Virtual Desktop Infrastructure ( 以下 VDI) における F5 ネットワークス ( 以下 F5) 製品の導入ガイドです VMware VDI を用いたシステムに

More information

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携 Cisco CSS 11000 HTTP キープアライブと ColdFusion サーバの連携 目次 概要 HTTP ヘッダーについて HTTP HEAD メソッドと HTTP GET メソッドの違いについて ColdFusion サーバの HTTP キープアライブへの応答方法 CSS 11000 で認識される HTTP キープアライブ応答もう 1 つのキープアライブ URI と ColdFusion

More information

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera

Upload path ファイル送信先ディレクトリのパスを指定します ホームディレクトリに画像を送信する場合は空白のまま サブディレクトリに画像を送信する場合はディレクトリ名を指定します さらに下位のディレクトリを指定する場合は \ マークを利用します 例 ) ホームディレクトリ以下の camera はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダのファームウエアバージョン 5.4x 以降で 定期的に画像を FTP サーバへ送信するための設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページにアクセスする 1. Internet Explorer などの Web ブラウザを起動します 2. Web ブラウザの URL

More information

2

2 クラウドサービス設定マニュアル (CentOS6 版 ) 第 1.1 版 2017 年 3 月 13 日 作成日 最終更新日 2016 年 7 月 29 日 2017 年 3 月 13 日 青い森クラウドベース株式会社 1 2 目次 1. はじめに... 5 2. 組織 VDC ネットワークの新規作成... 6 2-1. ネットワークタイプの選択... 7 2-2. ネットワークの構成... 8 2-3.

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション PUBLIS Free 利用するまでに [ 前提 ] この作業フローを実施するには 下記の条件がクリアされている必要があります Microsoft Azure/BizSpark どちらかの環境があること Microsoft アカウントが取得済みであること 1 サブスクリプションファイルを作成する 2 PUBLIS Free を Microsoft Azure/BizSpark に展開する 3 PUBLIS

More information

Si 知識情報処理

Si 知識情報処理 242311 Si, 285301 MS 第 12 回 竹平真則 takemasa@auecc.aichi-edu.ac.jp 2015/12/21 1 本日の内容 1. 先週のおさらい 2. PHP のスクリプトを実際に動かしてみる 3. RDB についての説明 2015/12/21 2 資料の URL http://peacenet.info/m2is 2015/12/21 3 注意事項 ( その

More information

PowerPoint Presentation

PowerPoint Presentation IDENTITY AWARENESS 設定ガイド (AD クエリ編 ) 1 はじめに 本ガイドは AD サーバと連携してユーザ ( グループ ) ベースでアクセス制御を実現する手順を解説します (AD クエリ ) 本ガイドでは基本的な設定 ポリシーはすでにセットアップ済みであることを想定しています 構成については 分散構成セットアップ ガイド スタンドアロン構成セットアップ ガイド等を参照してください

More information

2. Save をクリックします 3. System Options - Network - TCP/IP - Advanced を開き Primary DNS server と Secondary DNS Server に AXIS ネットワークカメラ / ビデオエンコーダが参照できる DNS サ

2. Save をクリックします 3. System Options - Network - TCP/IP - Advanced を開き Primary DNS server と Secondary DNS Server に AXIS ネットワークカメラ / ビデオエンコーダが参照できる DNS サ はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダのファームウエアバージョン 5.4x 以降で 指定された曜日と時間帯に 画像を添付したメールを送信するための設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページにアクセスする 1. Internet Explorer などの Web ブラウザを起動します 2. Web ブラウザの

More information

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド ServerView RAID Manager VMware vsphere ESXi 6 インストールガイド 2018 年 11 月 27 日富士通株式会社 アレイを構築して使用する場合 RAID 管理ツールの ServerView RAID Manager を使用します VMware vsphere ESXi 6.x ( 以後 ESXi 6 または ESXi と略します ) サーバで ServerView

More information

Microsoft Word - irule_a_to_z-f.doc

Microsoft Word - irule_a_to_z-f.doc BIG-IP IP v9 irule A to Z I. はじめに このドキュメントでは BIG-IP v9 の irule について 機 能 を 紹 介 するとともに 実 際 のサンプルを 用 いながら 解 説 します 尚 特 に 断 りが 無 い 限 り irule の 記 述 方 法 や 使 用 されているコマンドは 9.1 の 仕 様 に 基 づいています このため 文 中 にある v9 という

More information

MIRACLE LoadBalancerを使用したネットワーク構成と注意点

MIRACLE LoadBalancerを使用したネットワーク構成と注意点 MIRACLE LoadBalancer を使用したネットワーク構成と注意点 ミラクル リナックス 2015/02/13 Agenda ネットワーク接続パターン パケット転送方式 NATオプション注意点 負荷分散方式 固定化方式 Cookieオプション注意点 2 ネットワーク構成パターン パフォーマンス ダイレクトサーバーリターン (DSR) 対障害性 対応レイヤ 備考 接続パターン 1 冗長無し

More information

◎phpapi.indd

◎phpapi.indd PHP や HTML の知識がなくても大丈夫 PHP や HTML の基本も学べる FileMaker データベースを Web に公開したい FileMaker を使って動的な Web サイトを作りたい FileMaker しか知らない人が Web アプリケーションを作れるようになる! はじめに まず 本書を手に取ってくださりありがとうございます 本書はある程度 FileMaker Pro の扱いに慣れ

More information

2 BIG-IP 800 LTM v HF2 V LTM L L L IP GUI VLAN.

2 BIG-IP 800 LTM v HF2 V LTM L L L IP GUI VLAN. BIG-IP800 LTM v11.4.0 HF2 V1.0 F5 Networks Japan 2 BIG-IP 800 LTM v11.4.0 HF2 V1.0...1 1....3 1.1. LTM...3 2. L3...4 2.1. L3...4 2.2. L3...5 3....6 3.1....6 3.1.1. IP...6 3.1.2. GUI...10 3.1.3. VLAN...19

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 2N 社 IP インターホン 2N Helios IP Vario 設定マニュアル 基本設定マニュアル Revision 6 目次 1. 概要 ------------------------------------------------------------------------- P1 2. 設定の準備 ------------------------------------------------------------------

More information

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな 操作ガイド Ver.2.3 目次 1. インストール... - 2-2. SAMBA Remote 利用... - 9-2.1. 接続確認... - 9-2.2. 自動接続... - 11-2.3. 編集... - 13-2.4. インポート... - 16-2.5. 削除... - 18-2.6. 参考資料 ( 接続状況が不安定な場合の対処方法について )... - 19-2.6.1. サービスの再起動...

More information

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド ServerView RAID Manager VMware vsphere ESXi 5 2017 年 9 月 5 日富士通株式会社 インストールガイド アレイを構築して使用する場合 RAID 管理ツールの ServerView RAID Manager を使用します VMware vsphere ESXi 5.x( 以後 ESXi 5 または ESXi と略します ) サーバで ServerView

More information

WebOTX SIP Application Server BIG-IP Local Traffic Manager 連携システム構築ガイド

WebOTX SIP Application Server BIG-IP Local Traffic Manager 連携システム構築ガイド WebOTX SIP Application Server BIG-IP Local Traffic Manager 連携システム構築ガイド 2007.12.20 1 版 NEC 第二システムソフトウェア事業部 改版履歴 版数 年月日 改訂内容 備考 ドラフト 1.0 2007/10/2 ドラフト 1 版として発行全体文章の記述ミスを修正 2. 連携方式冒頭文章を修正 3.1.IP アドレスの設定

More information

Microsoft PowerPoint - SSO.pptx[読み取り専用]

Microsoft PowerPoint - SSO.pptx[読み取り専用] BIG-IP APM Edge Gatteway BIG IP IP APM SSO 機能概要 BIG IP IP APM10.2, Edge Gateway 10.2, F5 ネットワークスジャパン株式会社 SSO の概要 INDEX APM の 3 つの主な機能 APM の 3 つの機能 Network Access 機能 FirePass のネットワークアクセス機能をより強化した Nt Network

More information

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spark API との通信 このラーニングモジュールでは Python を使用した Spark API とのインターフェイスを扱います

More information

VPN 接続の設定

VPN 接続の設定 VPN 接続の設定 AnyConnect 設定の概要, 1 ページ AnyConnect 接続エントリについて, 2 ページ ハイパーリンクによる接続エントリの追加, 2 ページ 手動での接続エントリの追加, 3 ページ ユーザ証明書について, 4 ページ ハイパーリンクによる証明書のインポート, 5 ページ 手動での証明書のインポート, 5 ページ セキュアゲートウェイから提供される証明書のインポート,

More information

Microsoft PowerPoint - set_up_bigip_ve_trial_mod.pptx[読み取り専用]

Microsoft PowerPoint - set_up_bigip_ve_trial_mod.pptx[読み取り専用] BIG-IP IP LTM Trial セットアップガイド F5 ネットワークスジャパン株式会社 INDEX BIG-IP VE Trial セットアップガイド 1. 準備 2. BIG-IP IP VE Trial インストール 3. BIG-IP VE Trial Setup 4. Information 5. 参考 : 構成例 Copyright 2009 All rights reserved

More information

Microsoft Word - SSL-VPN接続サービスの使い方

Microsoft Word - SSL-VPN接続サービスの使い方 作成 : 平成 29 年 06 月 29 日 更新 : 平成 30 年 07 月 28 日 SSL-VPN 接続サービスの使い方 内容 SSL-VPN 接続サービスの使い方... 1 1. SSL-VPN 接続サービスについて... 1 2. SSL-VPN 接続サービスの留意点... 1 3. SSL-VPN 接続サービスの利用に必要となるもの... 2 4. SSL-VPN 接続サービスを利用する手順...

More information

URoad-TEC101 Syslog Guide

URoad-TEC101 Syslog Guide syslog ガイド (URoad-TEC101) Rev.1.0 2015.6.18 株式会社シンセイコーポレーション 1 / 9 目次 1. 文書概要... 3 1.1 事前準備... 3 1.2 関連文書及び技術資料... 3 2. System Log 有効化... 4 2.1 Web Server 接続... 4 2.2. Web CU での System Log 機能有効化... 5 3.

More information

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太 ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : 095739 K 氏名 : 當銘孔太 1. UNIX における正規表現とは何か, 使い方の例を挙げて説明しなさい. 1.1 正規表現とは? 正規表現 ( 正則表現ともいう ) とは ある規則に基づいて文字列 ( 記号列 ) の集合を表す方法の 1 つです ファイル名表示で使うワイルドカードも正規表現の兄弟みたいなもの

More information

データコピーとは データコピーは 古い NAS のデータを新しい HDL-Z シリーズに簡単にコピーできます 環境例本製品は以下の用途の際に最適です 古い HDL-Z シリーズから新しい HDL-Z シリーズへのコピー古い HDL-Z シリーズから 新しい HDL-Z シリーズへのスムーズなコピーが

データコピーとは データコピーは 古い NAS のデータを新しい HDL-Z シリーズに簡単にコピーできます 環境例本製品は以下の用途の際に最適です 古い HDL-Z シリーズから新しい HDL-Z シリーズへのコピー古い HDL-Z シリーズから 新しい HDL-Z シリーズへのスムーズなコピーが HDL-Z シリーズへデータコピーする データコピー for Windows 画面で見るマニュアル データコピー for Windows( 以下 データコピー ) は 古い NAS のデータを新しい弊 社製 HDL-Z シリーズにコピーするためのアプリです データコピーは インストール不要です そのまま実行できます 対応 OS Windows Storage Server 2016 Windows

More information

SMTP ルーティングの設定

SMTP ルーティングの設定 この章は 次の項で構成されています SMTP ルートの概要, 1 ページ ローカル ドメインの電子メールのルーティング, 2 ページ SMTP ルートの管理, 3 ページ SMTP ルートの概要 この章では Cisco コンテンツ セキュリティ管理アプライアンスを通過する電子メールのルーティ ングおよび配信に影響を与える機能 および [SMTP ルート SMTP Routes ] ページと smtproutes

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

More information

受付代行 設定マニュアル このマニュアルでは 恵比寿ボイスプロダクションが Google アシスタントアプリで公開している 受付代行 ( ) を使って Google

受付代行 設定マニュアル このマニュアルでは 恵比寿ボイスプロダクションが Google アシスタントアプリで公開している 受付代行 (   ) を使って Google 受付代行 設定マニュアル このマニュアルでは 恵比寿ボイスプロダクションが Google アシスタントアプリで公開している 受付代行 ( https://assistant.google.com/services/a/uid/0000004e7c1cab8e?hl=ja ) を使って Google Home を用いた無人受付システムの構築方法を説明します はじめに Google Home や Google

More information

1. はじめに 1. はじめに 1-1. KaPPA-Average とは KaPPA-Average は KaPPA-View( でマイクロアレイデータを解析する際に便利なデータ変換ソフトウェアです 一般のマイクロアレイでは 一つのプロー

1. はじめに 1. はじめに 1-1. KaPPA-Average とは KaPPA-Average は KaPPA-View(  でマイクロアレイデータを解析する際に便利なデータ変換ソフトウェアです 一般のマイクロアレイでは 一つのプロー KaPPA-Average 1.0 マニュアル 第 1.0 版 制作者 : かずさ DNA 研究所櫻井望 制作日 : 2010 年 1 月 12 日 目次 1. はじめに 2 1-1. KaPPA-Average とは 2 1-2. 動作環境 3 1-3. インストールと起動 3 2. 操作説明 4 2-1. メイン機能 - Calc. Average 4 2-1-1. データの準備 4 2-1-2.

More information

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います   xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ 操作ガイド Ver.2.3 目次 1. インストール... - 2-2. SAMBA Stunnel 利用... - 8-2.1. 接続確認... - 8-2.2. 編集... - 11-2.3. インポート... - 14-2.4. 削除... - 15-2.5 フォルダショートカットの作成... - 16-3. 動作環境... - 18-4. 参考資料 ( 接続状況が不安定な場合の対処方法について

More information

プレポスト【解説】

プレポスト【解説】 コース名 : シェルの機能とプログラミング ~UNIX/Linux の効率的使用を目指して ~ 1 UNIX および Linux の主な構成要素は シェル コマンド カーネルです プロセスとは コマンドやプログラムを実行する単位のことなので プロセスに関する記述は誤りです UNIX および Linux のユーザーインターフェースは シェル です コマンドを解釈するという機能から コマンドインタープリタであるともいえます

More information

How to Install and Configure Panorama Panorama のインストールと設定 Panorama は Palo Alto Networks のサポートサイトからダウンロード可能な VMware イメージです 本書は Panorama のインストールと Panora

How to Install and Configure Panorama Panorama のインストールと設定 Panorama は Palo Alto Networks のサポートサイトからダウンロード可能な VMware イメージです 本書は Panorama のインストールと Panora How to Install and Configure Panorama Panorama のインストールと設定 Panorama は Palo Alto Networks のサポートサイトからダウンロード可能な VMware イメージです 本書は Panorama のインストールと Panorama でのデバイス管理に関する手順を示します 確認事項 VMware/panorama をインストールするサーバがありますか?

More information

Mobile Access簡易設定ガイド

Mobile Access簡易設定ガイド Mobile Access Software Blade 設定ガイド チェック ポイント ソフトウェア テクノロジーズ ( 株 ) アジェンダ 1 SSL VPN ポータルの設定 2 3 4 Web アプリケーションの追加 Check Point Mobile for iphone/android の設定 Check Point Mobile for iphone/android の利用 2 変更履歴

More information

シナリオ:サイトツーサイト VPN の設定

シナリオ:サイトツーサイト  VPN の設定 CHAPTER 4 シナリオ : サイトツーサイト VPN の設定 この章では セキュリティアプライアンスを使用してサイトツーサイト VPN を作成する方法について説明します セキュリティアプライアンスが提供するサイトツーサイト VPN 機能を使用すると ネットワークセキュリティを維持しながら 低コストな公衆インターネット接続で ビジネスネットワークを世界中のビジネスパートナー およびリモートオフィスに拡張できます

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 2N 社 IP インターホン 2N Helios IP Verso 設定マニュアル 基本設定マニュアル Revision 1 目次 1. 概要 ------------------------------------------------------------------------- P1 2. 設定の準備 ------------------------------------------------------------------

More information

RADIUS サーバを使用して NT のパスワード期限切れ機能をサポートするための Cisco VPN 3000 シリーズ コンセントレータの設定

RADIUS サーバを使用して NT のパスワード期限切れ機能をサポートするための Cisco VPN 3000 シリーズ コンセントレータの設定 RADIUS サーバを使用して NT のパスワード期限切れ機能をサポートするための Cisco VPN 3000 シリーズコンセントレータの設定 目次 概要前提条件要件使用するコンポーネントネットワーク図 VPN 3000 コンセントレータの設定グループの設定 RADIUS の設定 Cisco Secure NT RADIUS サーバの設定 VPN 3000 コンセントレータ用のエントリの設定 NT

More information

Microsoft PowerPoint - TD_CGN.pptx

Microsoft PowerPoint - TD_CGN.pptx F5 BIG-IP による CGN(CAREER GRADE NAT) 紹介 Version 11.3 CGN リリース 11.2 以前の IPv4 アドレス枯渇及び IPv6 ソリューション Translation NAT44, with simple irule NAT64 and DNS64 HSL engineによる高性能なログ出力 Tunneling IP in IP Dual Stack

More information

R76/Gaia ブリッジ構成設定ガイド

R76/Gaia ブリッジ構成設定ガイド R76/GAiA ブリッジ構成設定ガイド ( スタンドアロン構成 ) Last updated Aug 16, 2013 Ver 1.0 はじめに 本章の手順は 以下の項目が満たされている事を前提条件としています 事前に GAiA R76 のインストールが完了していること 管理コンソールに SmartConsole がインストールされていること 対象となるアプライアンス機器は Model 2200

More information

eYACHO 管理者ガイド

eYACHO 管理者ガイド eyacho 管理者ガイド 第 1 版 - ios は Cisco の米国およびその他の国における商標または登録商標であり ライセンスに基づき使用されています - Apple ipad は Apple Inc. の商標です - Microsoft, Excel および Internet Explorer は 米国 Microsoft Corporation の 米国およびその他の国における登録商標または商標です

More information

(2018/07/24) FOCUS スパコン SSL-VPN 利用の手引き 計算科学振興財団 SSL-VPN を利用する際の動作環境 - 3 - FOCUS スパコンへの SSL-VPN 接続では Cisco AnyConnect Secure Mobility Client を用いて VPN 接続し FOCUS 内のサーバと接続します その際に使用する利用者側 PC の動作環境や前提条件を以下に示します

More information

Microsoft Word - Gmail-mailsoft設定2016_ docx

Microsoft Word - Gmail-mailsoft設定2016_ docx 全学 Gmail メールソフト設定方法 総合情報メディアセンター情報基盤部門 2016 年 6 月 1 日 はじめに 1 1 Gmail との連携を有効にする 2 2 Gmail にて POP または IMAP を有効にする 3 3 アカウントでの設定 5 4 メールソフトへの設定 7 5 設定例 :Windows メールのアカウント追加手順 9 6 設定例 :Windows メールのアカウント追加手順

More information

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する 教育ネットひむか ファイル転送サービス ユーザーマニュアル 目次 1. 教育ネットひむかファイル転送サービスについて... 2 1.1 ファイル転送サービスの利用方法... 2 2. ファイル転送サービスを利用する ( ひむか内 )... 3 2.1 ファイル転送サービスへのログイン... 3 2.2 ひむか内 PCでファイルを送受信する... 4 2.3 ひむか内 PCで外部 PCから送信されたファイルを受信する...

More information

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

書式に示すように表示したい文字列をダブルクォーテーション () の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf( 情報処理基礎 ); printf(c 言語の練習 ); printf 情報処理基礎 C 言語についてプログラミング言語は 1950 年以前の機械語 アセンブリ言語 ( アセンブラ ) の開発を始めとして 現在までに非常に多くの言語が開発 発表された 情報処理基礎で習う C 言語は 1972 年にアメリカの AT&T ベル研究所でオペレーションシステムである UNIX を作成するために開発された C 言語は現在使われている多数のプログラミング言語に大きな影響を与えている

More information

在学生向けメールサービス

在学生向けメールサービス メールシステム ( 新潟大学 Gmail) 基本操作マニュアル - 1 - 目次 1. ログイン...- 3-2. 画面の説明...- 4-3. メールの作成...- 7-4. ファイルの添付方法...- 9-5. メールの削除...- 10-6. メールの返信...- 10-7. メールの転送...- 11-8. メールの下書き保存...- 12-9. ラベルについて...- 13-9.1. ラベルの作成...-

More information

SAMBA Remote(Mac) 編 PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP

SAMBA Remote(Mac) 編 PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP 操作ガイド Ver.2.3 目次 1. インストール... - 2-2. SAMBA Remote 利用... - 5-2.1. 接続確認... - 5-2.2. 自動接続... - 10-2.3. 編集... - 12-2.4. インポート... - 15-2.5. 削除... - 17-2.6. 参考資料 ( 接続状況が不安定な場合の対処方法について )... - 18-2.6.1. サービスの再起動...

More information

VPNマニュアル

VPNマニュアル VPN 接続サービス 利用マニュアル (SSL-VPN Windows 版 ) 第 2 版 2018 年 03 月 26 日 作成日 2017 年 4 月 7 日 最終更新日 2018 年 3 月 23 日 版数日付更新内容 1 2017/04/07 新規作成 2 2018/03/26 フォーム改定 1 / 16 VPN 接続サービス利用マニュアル (SSL-VPN Windows 版 ) 目次 1.VPN

More information

Microsoft Word - Setup_Guide

Microsoft Word - Setup_Guide JTOS Version 3.4 セットアップガイド 2017 年 2 月 17 日公益社団法人日本コントラクトブリッジ連盟 1 ご注意...2 2 システム要件...3 3 インストール手順...4 3.1 Microsoft.NET Framework 4.6 について...4 3.2 JTOS 一式のインストール...4 3.3 Excel マスターシートのコピー...5 3.4 ローカルメンバーを扱う場合...5

More information

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開 フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに...2 2 本ツールの機能...2 3 yflowgen.exe の使い方...3 3.1 yflowgen.exe の実行方法...3 3.2 制限事項...3 3.3 生成したファイル (gml ファイル形式 ) の開き方...4 3.3.1 yed Graph Editor を使って開く...4 3.3.2 yed

More information

パケットモニター (Wireshark) の使い方 第 1 版 1.Wireshark とは ネットワーク上 (LAN ケーブルに流れている ) のパケットを取得して その中の情報を画面に表示するソフトウェア (LAN アナライザーまたはパケットモニター ) の 1 つに Wiresh

パケットモニター (Wireshark) の使い方 第 1 版 1.Wireshark とは ネットワーク上 (LAN ケーブルに流れている ) のパケットを取得して その中の情報を画面に表示するソフトウェア (LAN アナライザーまたはパケットモニター ) の 1 つに Wiresh パケットモニター (Wireshark) の使い方 1.Wireshark とは ネットワーク上 (LAN ケーブルに流れている ) のパケットを取得して その中の情報を画面に表示するソフトウェア (LAN アナライザーまたはパケットモニター ) の 1 つに Wireshark がある Wireshark は 非常に高機能なオープンソース ( ソース コードが公開されている ) の LAN アナライザで

More information

Microsoft PowerPoint - ruby_instruction.ppt

Microsoft PowerPoint - ruby_instruction.ppt Ruby 入門 流れ Ruby の文法 画面に出力 キーボードから入力 数値 文字列 変数 配列 ハッシュ 制御構造 ( 分岐 繰り返しなど ) if while case for each 関数 クラス Ruby とは プログラミング言語 インタプリタ言語 オブジェクト指向 国産 ウェブアプリケーションフレームワーク RubyOnRails で注目 弊社での Web アプリケーション開発に利用 画面に出力

More information

Microsoft PowerPoint - GTM_TB_Load_Balance.pptx

Microsoft PowerPoint - GTM_TB_Load_Balance.pptx BIG-IP GTM GTM ロードバランス方式 F5 ネットワークスジャパン株式会社 GTM ロードバランス概要 GTM が DNSリクエストを受け取ると ベストなストな Virtual Server を決定するために ロードバランシングモードを使用する Virtual Server を決定したら DNS 応答を生成して リクエストしてきたクライアント Local DNS に返答する ロードバランシングモードは

More information

版数 更新日 更新理由 /12/21 初版制定 /7/25 平成 28 年度初版制定 /8/7 平成 29 年度初版制定 /11/13 機能追加に伴い以下の箇所を更新 4 ログイン を更新 6 コメント対象情報参照 を更新 7 新規コメ

版数 更新日 更新理由 /12/21 初版制定 /7/25 平成 28 年度初版制定 /8/7 平成 29 年度初版制定 /11/13 機能追加に伴い以下の箇所を更新 4 ログイン を更新 6 コメント対象情報参照 を更新 7 新規コメ 環境情報開示基盤整備事業コミュニケーションツール操作マニュアル ( 企業向け ) 4.0 版 版数 更新日 更新理由 1.0 2015/12/21 初版制定 2.0 2016/7/25 平成 28 年度初版制定 3.0 2017/8/7 平成 29 年度初版制定 3.1 2017/11/13 機能追加に伴い以下の箇所を更新 4 ログイン を更新 6 コメント対象情報参照 を更新 7 新規コメント送信

More information

Cisco Unified Communications Manager サーバ アドレスとユーザ名の自動的な入力

Cisco Unified Communications Manager   サーバ アドレスとユーザ名の自動的な入力 CHAPTER 3 Cisco Unified Communications Manager サーバアドレスとユーザ名の自動的な入力 配布オプション (P.3-1) レジストリの値の名前の場所 (P.3-2) Click to Call のレジストリの値の名前 (P.3-2) レジストリキープッシュを使用したサーバアドレスの配布 (P.3-5) Microsoft Active Directory

More information

Maser - User Operation Manual

Maser - User Operation Manual Maser 3 Cell Innovation User Operation Manual 2013.4.1 1 目次 1. はじめに... 3 1.1. 推奨動作環境... 3 2. データの登録... 4 2.1. プロジェクトの作成... 4 2.2. Projectへのデータのアップロード... 8 2.2.1. HTTPSでのアップロード... 8 2.2.2. SFTPでのアップロード...

More information

電話機のファイル形式

電話機のファイル形式 この章では テキスト エディタを使用して作成する CSV データ ファイルのファイル形式を設定 する方法について説明します 電話機 CSV データ ファイルを作成するためのテキスト エディタ, 1 ページ の検索, 2 ページ CSV データ ファイルの電話機ファイル形式の設定, 3 ページ テキストベースのファイル形式と CSV データ ファイルの関連付け, 7 ページ 電話機 CSV データ ファイルを作成するためのテキスト

More information

ファイル宅配便サービス 利用マニュアル

ファイル宅配便サービス 利用マニュアル 総合情報センター ファイル宅配サービス利用マニュアル 目次 1. はじめに... 2 2. セキュアファイル便を起動する... 3 3. セキュアファイル便の初期設定... 4 4. ファイルのアップロード... 5 5. ファイルのダウンロード... 9 資料 1. 処理をキャンセルするには... 11 p. 1 1. はじめに 本資料はメールの添付ファイルでは送信ができない大容量のファイルを指定されたメールアド

More information

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」 RsMulti の取扱説明 RS232C で直接接続する (LAN を使用しない場合 ) 1. 概要 2.RsMulti の特徴 3. 測定の準備 3-1.RS232C 接続の場合 (1) 必要なもの (2)RS232C 接続の設定 (3)RsMulti の設定 4.RsMulti でのデータ収集 5.RsMulti 各部の説明 (1)RsMulti 画面 (2)Config 画面 (3)Property

More information

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452 HDE Controller X 1-36. LGWAN の設定 1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452 HDE Controller X ユーザーマニュアル

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

GenieATM 6300-T / 6200-T シリーズ 1. 基本的な機器オペレーションのために 1-1. 機器への接続 機器への接続方法は 以下の 2 通りがあります シリアルポートを使用してログインする LAN 経由で Telnet または SSH を使用して仮想 Interface からロ

GenieATM 6300-T / 6200-T シリーズ 1. 基本的な機器オペレーションのために 1-1. 機器への接続 機器への接続方法は 以下の 2 通りがあります シリアルポートを使用してログインする LAN 経由で Telnet または SSH を使用して仮想 Interface からロ 1. 基本的な機器オペレーションのために 1-1. 機器への接続 機器への接続方法は 以下の 2 通りがあります シリアルポートを使用してログインする LAN 経由で Telnet または SSH を使用して仮想 Interface からログインする 工場出荷時は装置の IP アドレスが設定されていないので Telnet, SSH ではログインできません この資料では シリアルポートを使用する場合の方法を説明します

More information

クライアント証明書インストールマニュアル

クライアント証明書インストールマニュアル 事前設定付クライアント証明書インストールマニュアル このマニュアルは クライアント証明書インストールマニュアル の手順で証明書がインストールできなかった方のための インストールマニュアルです エクストラネットは Internet Explorer をご利用ください Microsoft Edge 他 Internet Explorer 以外のブラウザではご利用になれません 当マニュアル利用にあたっては

More information

アライドテレシス ディストリビューション・スイッチ AT-x600シリーズで実現するMicrosoft® NAP

アライドテレシス ディストリビューション・スイッチ AT-x600シリーズで実現するMicrosoft® NAP Microsoft NAP 主な目的 検疫ネットワークを構築したい 802.1X ユーザー認証をシングルサインオンで行ないたい 概要 Microsoft NAP はActive Directory 環境下での利用を前提としています しかし Active Directory のドメイン認証と IEEE 802.1X 認証 ( および NAP の検疫 ) は同期していません したがって 802.1X 認証の前にドメイン認証が行なわれた場合

More information

Oracle SALTを使用してTuxedoサービスをSOAP Webサービスとして公開する方法

Oracle SALTを使用してTuxedoサービスをSOAP Webサービスとして公開する方法 Oracle SALT を使用して Tuxedo サービスを SOAP Web サービスとして公開する方法 概要 このドキュメントは Oracle Service Architecture Leveraging Tuxedo(Oracle SALT) のユースケースをほんの数分で実装できるように作成されています Oracle SALT を使用すると プロジェクトをゼロからブートストラップし 既存のプロジェクトに

More information

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利 PDF 変換サービス セキュリティ設定マニュアル 第 21 版 2018 年 2 月 目次 1. PDF 変換サービスの設定について...2 1-1)Internet Explorer をご利用の場合...2 1-2)Microsoft Edge をご利用の場合... 14 1-3)Google Chrome をご利用の場合... 18 1-4)Mozilla Firefox をご利用の場合...

More information

スクールCOBOL2002

スクールCOBOL2002 3. 関連資料 - よく使われる機能の操作方法 - (a) ファイルの入出力処理 - 順ファイル等を使ったプログラムの実行 - - 目次 -. はじめに 2. コーディング上の指定 3. 順ファイルの使用方法 4. プリンタへの出力方法 5. 索引ファイルの使用方法 6. 終わりに 2 . はじめに 本説明書では 簡単なプログラム ( ファイル等を使わないプログラム ) の作成からコンパイル 実行までの使用方法は既に理解しているものとして

More information

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の 4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の組み合わせで作れる. ここでは (2) と (3) について扱う. 4.1 分岐処理 4.1.1 if

More information

音声認識サーバのインストールと設定

音声認識サーバのインストールと設定 APPENDIX C 次のタスクリストを使用して 音声認識ソフトウェアを別の音声認識サーバにインストールし 設定します このタスクは Cisco Unity インストレーションガイド に記載されている詳細な手順を参照します ドキュメントに従って 正しくインストールを完了してください この付録の内容は Cisco Unity ライセンスに音声認識が含まれていること および新しい Cisco Unity

More information

Microsoft Word - VBA基礎(3).docx

Microsoft Word - VBA基礎(3).docx 上に中和滴定のフローチャートを示しました この中で溶液の色を判断する部分があります このような判断はプログラムではどのように行うのでしょうか 判断に使う命令は IF 文を使います IF は英語で もし何々なら という意味になります 条件判断条件判断には次の命令を使います If 条件式 1 Then ElseIf 条件式 2 Then ElseIf 条件式 3 Then 実行文群 1 実行文群 2 実行文群

More information

Packet Tracer: 拡張 ACL の設定 : シナリオ 1 トポロジ アドレステーブル R1 デバイスインターフェイス IP アドレスサブネットマスクデフォルトゲートウェイ G0/ N/A G0/

Packet Tracer: 拡張 ACL の設定 : シナリオ 1 トポロジ アドレステーブル R1 デバイスインターフェイス IP アドレスサブネットマスクデフォルトゲートウェイ G0/ N/A G0/ トポロジ アドレステーブル R1 デバイスインターフェイス IP アドレスサブネットマスクデフォルトゲートウェイ G0/0 172.22.34.65 255.255.255.224 N/A G0/1 172.22.34.97 255.255.255.240 N/A G0/2 172.22.34.1 255.255.255.192 N/A Server NIC 172.22.34.62 255.255.255.192

More information

目 次 1. はじめに ソフトの起動と終了 環境設定 発助 SMS ファイルの操作 電話番号設定 運用条件 回線情報 SMS 送信の開始と停止 ファイル出力... 16

目 次 1. はじめに ソフトの起動と終了 環境設定 発助 SMS ファイルの操作 電話番号設定 運用条件 回線情報 SMS 送信の開始と停止 ファイル出力... 16 発助 SMS 操作マニュアル Ver1.2 2018.7.21 ソフトプラン合同会社 1/18 目 次 1. はじめに... 3 2. ソフトの起動と終了... 3 3. 環境設定... 5 4. 発助 SMS ファイルの操作... 7 5. 電話番号設定... 9 6. 運用条件... 11 7. 回線情報... 12 8.SMS 送信の開始と停止... 13 9. ファイル出力... 16 10.

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 環境設定 (IE11 Edge)(Edge は 国内 + 国外版 国内外 + 翻訳版 のみ ) SRPARTNER では印刷 ダウンロードなどに ActiveX アドオンを使用しており ログイン時にインストールメッセージが表示されます ご使用端末に初期設定いただく必要がございます 以下記載の設定を実施し 設定変更を行ってください 1. 保護モードの解除 1[ コントロールパネル ]-[ インタ -

More information

SiTCP ユーティリティユーザガイド 2014 年 6 月 18 日 0.73 版 Bee Beans Technologies 1

SiTCP ユーティリティユーザガイド 2014 年 6 月 18 日 0.73 版 Bee Beans Technologies 1 SiTCP ユーティリティユーザガイド 2014 年 6 月 18 日 0.73 版 Bee Beans Technologies 1 改版履歴 版数 日付 内容 備考 0.1 2013 年 04 月 04 日 ドラフト作成 0.11 2013 年 04 月 10 日 UI 等の微調整に対応 0.2 2013 年 04 月 24 日 サーバー機能追加 0.3 2013 年 06 月 18 日 各 OS

More information

目次 1. ログイン 報告 ユーザ 病院 使用場所 通知先 材料データベース... 7 ご注意ください...12 JAN コードから材料データを返します マネージャーの情報変更 報告 CS

目次 1. ログイン 報告 ユーザ 病院 使用場所 通知先 材料データベース... 7 ご注意ください...12 JAN コードから材料データを返します マネージャーの情報変更 報告 CS 1.1 目次 1. ログイン... 3 2. 報告... 3 3. ユーザ... 4 4. 病院 使用場所... 5 5. 通知先... 6 6. 材料データベース... 7 ご注意ください...12 JAN コードから材料データを返します...12 7. マネージャーの情報変更...13 8. 報告 CSV の項目 報告添付ファイル名 の変更...13 2 1. ログイン マネージャアカウントの

More information

SAC (Jap).indd

SAC (Jap).indd 取扱説明書 機器を使用する前に本マニュアルを十分にお読みください また 以後も参照できるよう保管してください バージョン 1.7 目次 目次 について...3 ご使用になる前に...3 インストール手順...4 ログイン...6 マネージメントソフトウェアプログラムの初期画面... 7 プロジェクタの検索...9 グループの設定... 11 グループ情報画面... 12 グループの削除... 13

More information

プレゼンタイトルを入力してください

プレゼンタイトルを入力してください VoIP ゲートウェイと TELstaff の設定方法 株式会社日立ソリューションズ TELstaff サポートグループ 目次 1.VoIP ゲートウェイの設定 2.TELstaff の設定 VoIP ゲートウェイ側の詳細な設定は 機器付属のマニュアルをご参照ください 1 1.VoIP ゲートウェイの設定 1-1. メイン画面表示 1-1. メイン画面表示 メイン画面表示方法メイン画面の表示には 2

More information

スケジュールによるメール送信イベントの設定方法 ( ファームウエア v6.5x 以降 ) はじめに 本ドキュメントでは Axis ネットワークカメラのファームウエア v6.5x 以降で 指定された曜日と時間帯に 画像を添付したメールを送信するための設定方法を説明します 設定手順 手順 1:Axis

スケジュールによるメール送信イベントの設定方法 ( ファームウエア v6.5x 以降 ) はじめに 本ドキュメントでは Axis ネットワークカメラのファームウエア v6.5x 以降で 指定された曜日と時間帯に 画像を添付したメールを送信するための設定方法を説明します 設定手順 手順 1:Axis はじめに 本ドキュメントでは Axis ネットワークカメラのファームウエア v6.5x 以降で 指定された曜日と時間帯に 画像を添付したメールを送信するための設定方法を説明します 設定手順 手順 1:Axis ネットワークカメラの設定ページにアクセスする 1. Chrome や Firefox などの Web ブラウザから お使いの Axis ネットワークカメラ ( 以下 カメラ と呼ぶ ) へアクセスします

More information

VPN ユーザを管理し、RV016、RV042、RV042G および RV082 VPN ルータの速い VPN を設定して下さい

VPN ユーザを管理し、RV016、RV042、RV042G および RV082 VPN ルータの速い VPN を設定して下さい VPN ユーザを管理し RV016 RV042 RV042G および RV082 VPN ルータの速い VPN を設定して下さい 目標 バーチャルプライベートネットワーク (VPN) はインターネットのようなパブリックネットワークに異なるネットワークのエンドポイントを 接続する方法です VPN の有用なアプリケーションはそれらにインターネットにアクセスできる限り VPN クライアントソフトウェアのリモートユーザがプライベートネットワークのアクセス情報安全にできることことです

More information

コンテンツ作成基本編

コンテンツ作成基本編 コンテンツ作成マニュアル基本編 もくじ コンテンツとは 公開する求人検索サイト内の情報の一つ一つを指します 3~7 サイト作成の流れ 求人検索一覧ページ 求人検索を行うためのページを作成するための一覧の流れです 8~8 その他コンテンツについて 各々のページを作成するための コンテンツ管理画面の項目です 9~0 コンテンツとは 3 コンテンツとは コンテンツとは 公開するWebサイトのページつつを指します

More information

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド Brekeke PBX Version 2.1 ARS プラグイン開発ガイド Brekeke Software, Inc. バージョン Brekeke PBX v2.1 ARS プラグイン開発ガイド, 2008 年 2 月 著作権本書の著作権は Brekeke Software, Inc. にあります Copyright 2003-2008 Brekeke Software, Inc. 本書の一部または全部を

More information

Oracle トレーニング オンデマンド Oracle ラーニング サブスクリプション演習環境接続ガイド (OUVPN と NoMachine / NX Client 3.5) 2017 年 9 月版 日本オラクル株式会社オラクルユニバーシティ 目次 1. 演習環境の予約 2.NoMachine の

Oracle トレーニング オンデマンド Oracle ラーニング サブスクリプション演習環境接続ガイド (OUVPN と NoMachine / NX Client 3.5) 2017 年 9 月版 日本オラクル株式会社オラクルユニバーシティ 目次 1. 演習環境の予約 2.NoMachine の Oracle トレーニング オンデマンド Oracle ラーニング サブスクリプション演習環境接続ガイド (OUVPN と NoMachine / NX Client 3.5) 2017 年 9 月版 日本オラクル株式会社オラクルユニバーシティ 目次 1. 演習環境の予約 2.NoMachine のインストール 3.Oracle University の研修環境へのネットワーク接続 (OUVPN による接続

More information

Microsoft Word Proself-guide4STD+Prof.docx

Microsoft Word Proself-guide4STD+Prof.docx ファイル共有システム利用の手引き 全学基本メール事業室 1. はじめにメールでファイルを送りたい時に ファイルが大きすぎて送れなかったことはないでしょうか あるいはファイルはそれほど大きくないけれどもファイル数が多くて添付するのに手間がかかったり 届いたメールにたくさんのファイルが添付されていて 一つずつ保存するのが面倒だったことはないでしょうか ここで紹介するファイル共有システムを使うと そうした悩みを一気に解決できます

More information

FQDN を使用した ACL の設定

FQDN を使用した ACL の設定 機能情報の確認, 1 ページ FQDN ACL の設定に関する制約事項, 1 ページ FQDN ACL の設定に関する情報, 2 ページ FQDN ACL の設定方法, 2 ページ FQDN ACL のモニタリング, 6 ページ 例 FQDN ACL の設定, 6 ページ FQDN ACL の設定に関する追加情報, 7 ページ FQDN ACL の設定に関する機能履歴と情報, 8 ページ 機能情報の確認

More information

目次 第 1 章概要....1 第 2 章インストールの前に... 2 第 3 章 Windows OS でのインストール...2 第 4 章 Windows OS でのアプリケーション設定 TP-LINK USB プリンターコントローラーを起動 / 終了するには

目次 第 1 章概要....1 第 2 章インストールの前に... 2 第 3 章 Windows OS でのインストール...2 第 4 章 Windows OS でのアプリケーション設定 TP-LINK USB プリンターコントローラーを起動 / 終了するには プリントサーバー 設定 ガイド このガイドは以下のモデルに該当します TL-WR842ND TL-WR1042ND TL-WR1043ND TL-WR2543ND TL-WDR4300 目次 第 1 章概要....1 第 2 章インストールの前に... 2 第 3 章 Windows OS でのインストール...2 第 4 章 Windows OS でのアプリケーション設定...7 4.1 TP-LINK

More information

Web 認証拡張機能簡易ドキュメント

Web 認証拡張機能簡易ドキュメント Web 認証拡張機能簡易ドキュメント センチュリー システムズ ( 株 ) 1. Web 認証機能 ( キャプティブポータル機能 ) について Web 認証はパケットフィルタの一種で 認証を通ったユーザの IPv4 アドレスを送信元 / 宛先に持つ転送のみを通過させる機能です Web 認証機能によるパケットの判定は ユーザが設定した forward(in/out) フィルタ通過後に評価されます 2.

More information

Simple Violet

Simple Violet セキュリティパック管理画面の操作方法 更新 :2018 年 6 月 19 日 内容 セキュリティパックサービスでは お客様専用のサイトが用意されております 専用サイトでは 以下の機能が利用できます アカウントを登録する アカウントの登録 を参照してください 4 ページ 隔離メッセージを管理する 隔離メッセージの管理 を参照してください 6 ページ 承認済み送信者とブロック済み送信者を管理する 承認済み送信者とブロック済み送信者について

More information

Net'Attest EPS設定例

Net'Attest EPS設定例 Net Attest EPS 設定例 連携機器 : Cisco Aironet1140 Case:TLS 方式での認証 Version 1.1 株式会社ソリトンシステムズ Net'Attest は 株式会社ソリトンシステムズの登録商標です その他 本書に掲載されている会社名 製品名は それぞれ各社の商標または登録商標です 本文中に は明記していません Copyright 2010, Soliton

More information

ポインタ変数

ポインタ変数 プログラミング及び実習 5 馬青 1 文字処理 数値処理 : 整数 浮動小数点数 単一の文字は と ( シングルクォーテーション ) で囲んで表現される 文字のデータ型は char または int である int を用いたほうが ライブラリの関数の引数の型と一致する 以下は全部 int の使用に統一する 従って int ch; で文字変数を宣言しておくと ch= A ; のように ch に文字 A

More information

3 アドレスバーに URL を入力し ( 移動ボタン ) をタップします 入力した URL のホームページに移動します ネットワークへのログオン 画面が表示された場合は ユーザー名 を確 認し パスワード を入力して OK をタップしてください ホームページがうまく表示されないときは Opera B

3 アドレスバーに URL を入力し ( 移動ボタン ) をタップします 入力した URL のホームページに移動します ネットワークへのログオン 画面が表示された場合は ユーザー名 を確 認し パスワード を入力して OK をタップしてください ホームページがうまく表示されないときは Opera B ホームページを見る (Opera Browser) Opera Browser を使って ホームページの閲覧ができます アクセスリストに登録したホームページ (+3-3 ページ ) を順番に閲覧することができます くわしくは ネットウォーカー ( お気に入りめぐりをする ) (+3-7 ページ ) をご覧ください Opera Browser は パソコンなどで広く使われている Web ブラウザによる

More information