はじめに
CML2
をネットワーク設計の検証で使っていると、ACLやNATが想定通りに動くかどうかを確認したり、一連の流れのパケットを送信して確認したりしたいことがあるかと思います。
CML2
には疑似トラフィックを生成できるトラフィックジェネレータが導入されているため、今回はトラフィックジェネレータのTRex
を使用するまでの準備を行っていこうと思います。
TRex使用前の準備
TRex
を使うためにはいくつか準備が必要となるため、準備を行っていきます。
TRex Stateless Guiのインストール
TRex
はラボに配置するノードとして実装されており、トラフィックを流したい場所に配置して使うことで任意のパケットをネットワーク上に流せます。
トラフィックの生成にはTRex Stateless Gui
というクライアントソフトを使って生成する必要があるので、以下ページよりダウンロード&インストールします。(インストール手順は割愛)
TRex 2.82の導入
2021年9月現在、ノードイメージが含まれるReference platform
のISOファイルの最新はrefplat_p-20210511-fcs.iso
となり、このISOファイルにはTRex 2.88
が含まれています。
但し、現状最新となるTRex Stateless Gui v4.5.6
ではTRex 2.88
が使用する最新のJavaバージョンに対応しておらず、使えません。
そのため、1つ前のReference platform
のISOファイルとなるrefplat_p-20201110-fcs.iso
に入っているTRex 2.82
を別途導入します。
refplat_p-20201110-fcs.isoのダウンロード
Cisco
のMy Account
のページから「All Release」→「2.1」→「CML-Personal 2.1.1」にある、refplat_p-20201110-fcs.iso
をダウンロードします。
My Account
にたどり着けない場合は過去の以下記事を参照。
TRex 2.82の登録
ダウンロードしたrefplat_p-20201110-fcs.iso
をマウントすると、「/[マウントパス]/virl-base-images/alpine-3-12-trex282」にQCOW2
イメージがあるため、CML2
の「TOOLS」→「Node and Image Definitions」→「IMAGE DEFINITIONS」からImage Definitions
を作成します。
尚、Node Definitions
は既に実装済みのTRex
のNode Definitions
を選択するため、新たに作成は不要です。
Image Definitions
の設定は実装済みのTRex
のImage Definitions
を参考に、以下のようにしました。
General
項目名 | カスタムイメージの設定 |
---|---|
ID | alpine-3-12-trex282 |
Label | TRex 2.82 |
Description | TRex 2.82 (based on Alpine 3.12) |
Disk Image | alpine-3-12-trex282.qcow2 |
Node Definition | TRex |
Linux Native Simulation
項目名 | カスタムイメージの設定 |
---|---|
Memory | - |
CPUs | - |
CPU Limit | - |
Data Disk Size | - |
Boot Disk Size | - |
もしImage Definitions
の作成方法が分からなければ前回の記事を参照してください。
TRex 2.82の指定
TRex
を使うため、適当なラボを作成して、TRex
を配置しておきます。
何もしなければ最新バージョンのTRex
が起動してしまいますが、今回のように1つのNode Definitions
に複数のImage Definitions
が結びついている場合、配置したノードの「SIMULATE」→「Image Definition」の「i」を選択すると、起動する際のバージョンを選択できます。
ひとまず起動はせず、Image Definition
からTRex 2.82
の選択だけ行っておきます。
TRexのネットワーク構成
TRex
ノードのインタフェースは3ポートまで使用できますが、以下表のようにクライアントからTRex Stateless Gui
で接続するインタフェースはeth0
、生成したトラフィックを送信するインタフェースはeth1
、eth2
と決められています。
そのため、ラボに配置する際には接続するインタフェースを間違えないようにしましょう。
インタフェース名 | 用途 |
---|---|
eth0 | TRex Stateless Gui接続用 |
eth1 | 生成トラフィック送信用1 |
eth2 | 生成トラフィック送信用2 |
TRexへの接続
前述の通りトラフィックの生成はクライアントにインストールされているTRex Stateless Gui
を使って生成するため、クライアントからTRex
に接続する必要があることから、クライアントからラボ内部に接続しなければなりません。
そのため、External Connector
をブリッジモードで配置しておきます。
ブリッジモードへの設定は以下参照。
また、TRex
はアドレスをDHCPでもらう必要があるので、ブリッジネットワーク側でDHCPサーバを用意しておきます。
TRex
起動後、コンソール画面を確認すると、以下のようにアドレスが表示されるため、クライアントから表示されているアドレスで接続を行います。
クライアントから先ほどインストールしたTRex Stateless Gui
を起動し、「File」→「Connect」の「Connections」にアドレスを入力して「Connect」を選択することでTRex
に接続できます。
画面下の「Log View」にエラーが表示されず、「Connected」と表示されれば接続完了です。
コンソールからの操作
先ほどアドレス確認するために開いたTRex
のコンソールを見ると、画面下のバーに以下のようなメニューが表示されています。
それぞれ以下のようなメニューとなっており、それぞれ「Ctrl + B」を押した後、「番号」を入力することで画面を切り替えることができます。
番号 | メニュー | 説明 |
---|---|---|
0 | SHELL | アドレス情報の表示 |
1 | SCAPY | TRexのOS操作 |
2 | TREX | 統計情報の表示 |
(おまけ)TRex管理ポートのアドレス固定方法
コンソールからSCAPY
メニュー画面にログインすればOS操作ができるので、OS操作でIPアドレスを固定することでDHCPサーバが存在しなくてもアドレスを割り振ることができます。
ちなみにTRex
はAlpine Linux
で動作しているため、アドレス固定の他にもOS操作を行いたい場合は、Alpine Linux
のコマンド操作である程度のことを行うことが可能です。
/etc/network/interfacesの修正
IPアドレスを固定するには/etc/network/interfaces
の設定を変更する必要があります。
デフォルトだと以下のようにDHCP
の設定となっています。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
hostname localhost
vi
でアドレスなど変更した例。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
hostname localhost
address 172.24.0.100
netmask 255.255.255.0
gateway 172.24.0.1
ネットワークサービス再起動
設定したら以下コマンドでネットワークサービスを再起動させます。
/etc/init.d/networking restart
ip
コマンドやコンソール接続した際の画面上でアドレスが変更されていれば成功です。
おわりに
今回はTRex
を使用するための準備まで行いました。
次回はTRex Stateless Gui
を使用して実際にトラフィックを生成してみようと思います。