目次
概要
ネットワークテストを自動化するNEEDLEWORKは、実機のネットワークだけではなくGNS3の仮想ネットワークでも利用できます。NEEDLEWORKとGNS3の接続について解説します。
NEEDLEWORKとGNS3接続のメリット
NEEDLEWORKは、ネットワークテストを自動化するためのソフトウェアです。そのため、基本的には実ネットワークと接続して利用することでしょう。すると、NEEDLEWORKとGNS3を接続しても意味がないのでは?と思うかもしれません。NEEDLEWORKとGNS3を接続することは、テストを効率化するというよりも、設計時のPoC(Proof of Concept)に役立ちます。
NEEDLEWORKは、「高機能なトラフィックジェネレータ」として利用できます。1台のPC上で、GNS3でいろんなネットワーク構成を作ります。そして、NEEDLEWORKでいろんなトラフィックを生成して、設計時のコンセプトが機能するかを検証できるようになります。
NEEDLEWORKとGNS3の接続の手順
NEEDLEWORKとGNS3の仮想ネットワークを接続するための手順はとてもシンプルです。
- イーサネットインタフェースをとりあえずリンクアップさせる
- GNS3で[Cloud]とイーサネットインタフェースを紐づける
- NEEDLEWORKで[eth0/i (i=1,2,3)]とイーサネットインタフェースを紐づける
GNS3では[Cloud]でホストOSのイーサネットインタフェースを紐づけて、GNS3でエミュレートする機器とリンクできます。そして、NEEDLEWORK上ではイーサネットインタフェースを[eth0/i (i=1,2,3)]で認識して、ホストOSのイーサネットインタフェースと紐づけます。こうして、GNS3側とNEEDLEWORK側の両方からホストOSのイーサネットインタフェースを紐づけることで、GNS3のネットワークとNEEDLEWORKをリンクさせることができます。
GNS3とNEEDLEWORKをリンクしたら、あとは以下の手順です。
- GNS3でIPアドレスやルーティングの設定
- NEEDLEWORKで仮想ルータの設定
- NEEDLEWORKでテストシナリオを作成してテストを実行
GNS3上のルータなどにNEEDLEWORKでエミュレートする仮想ネットワークへ通信できるようにしなければいけません。NEEDLEWORKとのリンクのIPアドレスやルーティングの設定を行います。
また、NEEDLEWORK上では仮想ルータの設定が必要です。GNS3のネットワークへのアップリンクとなるインタフェースと仮想ルータのルーティングテーブルを作ります。
あとは、テストシナリオを作成してテストを実行すれば、テストシナリオに基づいたトラフィックを生成して、GNS3のネットワークへ転送されるようになります。
なお、実際には試していませんが、GNS3以外のEVE-NGでもCMLでもNEEDLEWORKとリンクできると思います。
NEEDLEWORKとGNS3の接続の例
具体的にNEEDLEWORKとGNS3を接続してみましょう。GNS3でCisco IOSルータ1台だけのシンプルなネットワークとNEEDLEWORKを接続します。
NEEDLEWORKでは、仮想ルータVR1とVR2を定義して、それぞれの配下に192.168.100.0/24と192.168.200.0/24のネットワークを作成します。
イーサネットインタフェースをとりあえずリンクアップさせる
ホストOSのイーサネットインタフェースはとりあえずリンクアップしておけばいいです。適当なレイヤ2スイッチに接続しておきましょう。また、わかりやすくするためにインタフェースに名前をつけておいたほうがいいです。
[GNS3] GNS3で[Cloud]とイーサネットインタフェースを紐づける
GNS3で[Cloud]とホストOSのイーサネットインタフェースを紐づけます。[Cloud]をワークスペースに配置して、ルータのインタフェースとのリンクを設定します。このとき[Cloud]のリンク先としてNEEDLEWORKとつなげたいホストOSのイーサネットインタフェースを選べばOKです。
[Cloud]にはわかりやすく名前をつけておいたほうがいいです。R1とホストOSのイーサネットインタフェースを以下のようにリンクさせます。
R1 Fa0/1 - TEST1
R1 Fa0/1 - TEST2
[NEEDLEWORK] NEEDLEWORKで[eth0/i (i=0,1,2)]とイーサネットインタフェースを紐づける
NEEDLEWORKでホストOSのイーサネットインタフェースをNEEDLEWORKで認識するeth0/i(i=1,2,3)に紐づけます。このとき、eth0/iは3種類に設定できますが、ここでは、単なるイーサネットリンクとして設定します。また、IPアドレスの設定が必要です。
NEEDLEWORKインタフェース | ホストOSインタフェース | IPアドレス |
eth0/1 | TEST1 | 192.168.1.2/24 |
eth0/2 | TEST2 | 192.168.2.2/24 |
[GNS3] GNS3でIPアドレスやルーティングの設定
GNS3でCisco IOSルータR1の設定を行います。NEEDLEWORKと接続するインタフェースにIPアドレスの設定を行います。また、NEEDLEWORKの仮想ルータ配下のネットワークへルーティングできるようにスタティックルートを設定します。
R1(Cisco IOSルータ)のIPアドレス、ルーティング設定
interface FastEthernet0/0 ip address 192.168.1.1 255.255.255.0 no shutdown ! interface FastEthernet0/1 ip address 192.168.2.1 255.255.255.0 no shutdown ! ip route 192.168.100.0 255.255.255.0 192.168.1.2 ip route 192.168.200.0 255.255.255.0 192.168.2.2
[NEEDLEWORK] NEEDLEWORKで仮想ルータの設定
NEEDLEWORKで仮想ルータVR1とVR2を設定します。
VR1の設定
仮想ルータ名とGNS3のネットワークへのアップリンクになるインタフェースを決めます。
仮想ルータ名 | インタフェース名 |
VR1 | eth0/1 |
そして、仮想ルータのルーティングの設定を行います。[internal]は、仮想ルータ配下のネットワークアドレスです。[external]は、GNS3のネットワークへのルート情報です。簡単にするために[external]のルートはデフォルトルートとします。
VR1のルーティング設定は以下のようになります。
タイプ | 宛先IPアドレス | ネクストホップ |
internal | 192.168.100.0 | N/A |
external | 0.0.0.0/0 | 192.168.1.1 |
VR2の設定
VR2の仮想ルータ名とアップリンクのインタフェースを決めます。
仮想ルータ名 | インタフェース名 |
VR2 | eth0/2 |
そして、VR2のルーティング設定は以下のようになります。
タイプ | 宛先IPアドレス | ネクストホップ |
internal | 192.168.200.0 | N/A |
external | 0.0.0.0/0 | 192.168.2.1 |
NEEDLEWORKの仮想ルータリストは、次のような状態です。これで、NEEDLEWORKとGNS3を接続するための設定は完了です。
[NEEDLEWORK] NEEDLEWORKでテストシナリオを作成してテストを実行
テストシナリオを作成します。基本的に仮想ルータ配下のネットワークのIPアドレスを宛先や送信元として決めます。以下のテストシナリオを作成します。
上記のテストシナリオでは、以下の試験端末間のPingとTracerouteのトラフィックを生成できます。
送信元IP | 所属VR | 宛先IP | 所属VR |
192.168.100.100 | VR1 | 192.168.200.100 | VR2 |
テストを実行すると、Ping/Tracerouteの応答が正常に返ってきます。
まとめ
NEEDLEWORKは、実機のネットワークだけでなくGNS3上のネットワークとも接続できます。GNS3とNEEDLEWORKのそれぞれから、ホストOSのイーサネットインタフェースに紐づければOKです。1台のPCで、いろんなネットワーク構成を取ることができ、そのうえで、いろんなトラフィックを生成できます。