Skip to content

TMSH で BIG-IP の基本的な設定を行う

BIG-IP v10.0.0 から新たに "TMSH" という、Cisco ライクなシェルがサポートされました。F5 の資料によると「TMSH には以下のような特徴がある」と、まとめられていました。

  1. ツリー構造
  2. Action / Object モデル
  3. 明示的な create と modify 操作
  4. コンテキスト・センシティブなヘルプ
  5. CLI historical Stats
  6. bigpipe 互換性
  7. 基本的な transaction のサポート

"Cisco ライク" と言う通り、TAB キーや "?" によるコマンド補完が効きます。また、"新規作成時は create"、"変更時は modify"、"削除は delete" と、コマンドが明確に定義されており、後発である分、Cisco など他社の CLI をよく研究してデザインしてあるように思っています(少なくても、私には非常に使い勝手が良いです)。今回は TMSH の概要と、基本的な操作・設定例を記載します。

検証構成

今回は BIG-IP 10.1.0 を使い、構成は以下の通りです。

file

ツリー構造

TMSH は「ツリー構造」をとっており、具体的には下記のツリー構造になっています。

  • Modules(モジュール)
    • Components(コンポーネント)
      • Commands(コマンド)
        • Configuration items(コンフィギュレーション・アイテム)

ツリーは "/"(ルート)から派生し、次は "Modules"(モジュール)、その下は "Components"(コンポーネント)がぶら下がっています。

file

以下の例では「net モジュール」の「vlan コンポーネント」で「show コマンド」を「VLAN_External コンフィギュレーション・アイテム」に対して実行しています。

1
2
(tmos)# / net vlan
(tmos.net.vlan)# show VLAN_External

下記も同じ意味になります。

1
(tmos)# show / net vlan VLAN_External

TMSH を起動する

TMSH を起動するには、二通りの方法があります。

  1. ログイン後、bash から "tmsh" コマンドで起動する
  2. System → Users → User List から、該当ユーザの "Terminal Access" を "tmsh" へ変更する(※ ただし、Ask F5 や「TMOS Management Guide for BIG-IP Systems(Version 10.1)」にも記載を見つけられないのですが、デフォルトの "admin" ユーザは GUI から Terminal Access を TMSH に変更しても、実際にログインすると bash になっていました)

file

以下は bash から "tmsh" コマンドを実行した例です。

1
2
# tmsh
(tmos)#

管理アドレスを割り当てる(Management IP を設定する)

sys モジュールの management-ip コンポーネントが該当します。以下では管理アドレスとして 192.168.99.31 を割り当てている設定例です。

1
(tmos)# create / sys management-ip 192.168.99.31/24

場合によっては管理用のルーティング(sys モジュールの management-route コンポーネント)も設定しておきます。

VLAN インターフェイスを作成する

net モジュールの vlan コンポーネントが該当します。今回は 1.1 側のインターフェイスを「VLAN_External」に、1.2 側のインターフェイスを「VLAN_Inetrnal」に割り当てます。

1
2
(tmos)# create / net vlan VLAN_External interfaces add { 1.1 }
(tmos)# create / net vlan VLAN_Internal interfaces add { 1.2 }

VLAN に IP アドレスを割り当てる(Self IP を設定する)

net モジュールの self コンポーネントが該当します。VLAN の割り当てを行う際、許可するサービス(allow-service)も指定しておきます。今回は "VLAN_External"、"VLAN_Internal" ともに ICMP のみを許可します。

1
2
(tmos)# create / net self 192.168.1.31/24 allow-service add { icmp:any } vlan VLAN_External
(tmos)# create / net self 192.168.2.31/24 allow-service add { icmp:any } vlan VLAN_Internal

ノード(Node)を設定する

ltm モジュールの node コンポーネントが該当します。今回は 192.168.2.101 〜 103 の 3 ノードを登録し、ICMP によるモニター(死活監視)を設定します。

1
2
3
(tmos)# create / ltm node 192.168.2.101 { monitor icmp }
(tmos)# create / ltm node 192.168.2.102 { monitor icmp }
(tmos)# create / ltm node 192.168.2.103 { monitor icmp }

プール(Pool)を新規作成し、メンバー(Member)を設定する

ltm モジュールの pool コンポーネントが該当します。プール自体を作成(create)した後、変更処理(modify)としてメンバー(members)を追加(add)しています。今回は 192.168.2.101 〜 103 の TCP/80(つまり、"http")を設定します。

1
2
3
4
(tmos)# create / ltm pool POOL_192.168.1.77_http
(tmos)# modify / ltm pool POOL_192.168.1.77_http members add { 192.168.2.101:http }
(tmos)# modify / ltm pool POOL_192.168.1.77_http members add { 192.168.2.102:http }
(tmos)# modify / ltm pool POOL_192.168.1.77_http members add { 192.168.2.103:http }

モニター(Monitor)を設定する

プール自体のモニター方法として、今回は http を指定します。

1
(tmos)# modify / ltm pool POOL_192.168.1.77_http monitor http

負荷分散方式(Load-Balancing-Mode)を設定する

デフォルトの負荷分散方式は "Round-Robin" です。これを "Least-Connections (Member)" に変更してみます。

1
(tmos)# modify / ltm pool POOL_192.168.1.77_http load-balancing-mode least-connections-member

プールの作成・負荷分散方式設定・メンバー設定・モニター設定を一度に実施する

プール関連の設定を一度に実施する場合は、以下のようになります。

1
(tmos)# create / ltm pool POOL_192.168.1.77_http load-balancing-mode least-connections-member members add { 192.168.2.101:http 192.168.2.102:http 192.168.2.103:http } monitor http

バーチャルサーバ(Virtual Server)を設定する

ltm モジュールの virtual コンポーネントが該当します。まず、バーチャルサーバそのものを設定します。

1
(tmos)# create / ltm virtual VIRTUAL_192.168.1.77_http

次にアドレスを設定します。今回は "192.168.1.77/32" を設定します。

1
(tmos)# modify / ltm virtual VIRTUAL_192.168.1.77_http destination 192.168.1.77:http mask 255.255.255.255

続いてプロトコル / プロファイル関連を設定します。今回は IP プロトコルとして TCP を指定し、プロファイルは "http" と "tcp" を指定します。

1
2
(tmos)# modify / ltm virtual VIRTUAL_192.168.1.77_http ip-protocol tcp 
(tmos)# modify / ltm virtual VIRTUAL_192.168.1.77_http profiles replace-all-with { http { } tcp { } }

仕上げにデフォルトプールを指定します。今回は先ほど作成した "POOL_192.168.1.77_http" を設定します。

1
(tmos)# modify / ltm virtual VIRTUAL_192.168.1.77_http pool POOL_192.168.1.77_http

バーチャルサーバを一行で設定する

ここまでのバーチャルサーバ設定をワンライナーで書くと、このようになります。

1
(tmos)# create / ltm virtual VIRTUAL_192.168.1.77_http { destination 192.168.1.77:http ip-protocol tcp mask 255.255.255.255 pool POOL_192.168.1.77_http profiles replace-all-with { http { } tcp { } } }