ネットワークシミュレータ GNS3 はCCNAなどのCisco資格を取る人には必須だ!とよく言われますが、Cisco IOSに限らずいろんなネットワークOSを動作させることができます。例えば
- Cisco IOS-XRv
- Juniper vSRX
- Arista vEOS
- Arista cEOS
- RouterOS
などがあります。また、Linuxベースで動作しているGNS3 VMを使うことで、Dockerイメージを取り込んで使うことができます。今回は、Arista NetworksさんからDockerイメージとして提供されているcEOSをGNS3で動かしてみたいと思います。
(あまりEOSに関する記事って見かけないので、使う人が増えるきっかけになればいいなぁ…って)
cEOSのダウンロード
まずはcEOSのイメージを https://www.arista.com/en/support/software-download からダウンロードしてきます。無償でダウンロードできますがアカウント登録が必要です。
本稿執筆時点ではGNS3で動作確認できているのは4.20.5Fなので、このバージョンの「cEOS-lab.tar.xz」をダウンロードしてきます。
GNS3 VMへの転送
GNS3 VMのコンソールを開きます。私はVMware Fusionを使っていますので、VirtualBoxを使っている方はウィンドウが違うかと思いますが、表示される内容は同じです。ここでは以下の「ssh」と「Password」の行をメモしておきます。
先ほどダウンロードしたcEOS-lab.tar.xzをGNS3 VMにSCPで転送します。このときの接続ユーザ名と接続先アドレスは上記の情報を使用します。私の環境では以下のようなコマンドを使用しました。
$ scp cEOS-lab.tar.xz gns3@192.168.44.128:/tmp
Password:(上図の通り、パスワードにgns3を指定)
cEOS-lab.tar.xz 100% 287MB 27.0MB/s 00:10
GNS3 VMへのcEOS-lab Dockerイメージの組み込み
VMコンソール上でEnterキーを押すか、またはSSHで接続すると以下のようにメニュー画面が表示されます。ここでカーソルキーを使って「Shell」を選択してEnterキーを押下すると以下のようなプロンプトが表示されます。
gns3@gns3vm:~$
先程SCPで転送したcEOS-lab.tar.xz
をdockerイメージとして取り込みます。
gns3@gns3vm:~$ docker import /tmp/cEOS-lab.tar.xz ceosimage:4.20.5F
sha256:abaf4912fa0bd4cd7b2de59993c5b77a3257f39595455ddef1f765770552f05d
dockerイメージを以下のコマンドでrunさせます。
gns3@gns3vm:~$ echo "rm /etc/systemd/system/getty.target.wants/getty@tty1.service" | \
docker run --name=ceos-container -e CEOS=1 -e container=docker -e EOS_PLATFORM=ceossim -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e ETBA=1 -e INTFTYPE=eth -i ceosimage:4.20.5F sh
正常にrunできたコンテナをGNS3から呼び出せるように登録します。
gns3@gns3vm:~$ docker commit --change='CMD ["/sbin/init"]' --change='VOLUME /mnt/flash' ceos-container ceosimage:GNS3
sha256:3713d365745645cf8cbd1cfd5841dc17baf5efd3726d2954f063a7d6aeb0b329
最後に、登録に使ったインスタンスを削除します。
gns3@gns3vm:~$ docker rm ceos-container
ceos-container
GNS3への登録
ではGNS3で動かしてみましょう。まずはノードが使えるように登録します。Switchesのドロップダウンから「Available appliances」をクリックします。
「Add Appliance」画面が表示されます。そのまま「Next」をクリックします。
次も「Next」
次も「Next」
最後に「Finish」をクリックします。
※実は先程までの実行すべきコマンドはすべてここに記載があります
「cEOS installed!」が表示されたらインストール完了です。
動作確認
Switchesのドロップダウンリストを「Available appliances」から「Installed appliances」に変更します。
cEOSがノード一覧に追加されていることを確認します。
あとは他のノードと同じようにトポロジエリアに登録して、Startさせてみてください。問題なければサマリ表示で緑ランプが点灯(動作中)になります。
コンソールを開いて、ユーザ名admin(パスワードなし)でログインすると、cEOS 4.20.5Fが動作していることがわかります。
localhost login: admin
localhost>show version
Arista cEOSSim
Hardware version:
Serial number: N/A
System MAC address: 02f6.21ac.c73b
Software image version: 4.20.5F
Architecture: i386
Internal build version: 4.20.5F-8127914.4205F
Internal build ID: 4d6b4859-39b5-4581-993b-f84ac0736664
cEOS tools version: 1.0
Uptime: 45 minutes
Total memory: 4029500 kB
Free memory: 3115376 kB
あとは自由に 遊んで 試してみましょう!IOSやIOS-XRv、vSRXやvyOSなどマルチベンダ環境での動作確認や、cEOSばかりで大きめのトポロジを作るなど。vEOSのようなVMではなく軽量なdockerコンテナですので、より多くのノードを動かすことができます。
私のMacbookAir(Mid2013 Core-i7 RAM8GB)でGNS3 VMにRAM4GB割り当てた環境でも、vEOSだと2ノード起動(まともに動作は難しい)が限界でしたが、cEOSなら7ノードまで問題なく動作させることができました。
使用上の注意
GNS3で登録したcEOSは、内部ではEthernet1からEthernet7までの7つの物理インターフェースが使用できるようになっています。
localhost>show interface status
Port Name Status Vlan Duplex Speed Type Flags
Et1 connected 1 full unconf EbraTestPhyPort
Et2 connected 1 full unconf EbraTestPhyPort
Et3 connected 1 full unconf EbraTestPhyPort
Et4 connected 1 full unconf EbraTestPhyPort
Et5 connected 1 full unconf EbraTestPhyPort
Et6 connected 1 full unconf EbraTestPhyPort
Et7 connected 1 full unconf EbraTestPhyPort
ですが、GNS3でリンクを接続できるポートには「eth0」が存在します。
これは実機で言うところのマネジメントポートに相当するようです。ですので、他のノードとつないで使う場合はeth0は使わないようにする必要があります。
なお、ManagementインターフェースはcEOSでは使えないらしく、設定すらできないようです。
localhost>en
localhost#conf t
localhost(config)#int management0
% Unavailable command (not supported on this hardware platform)