EVE-NGを使って仮想NW環境を用意する～2. ノード追加編～

# はじめに
EVE-NGのインストールが完了したので
いよいよ本題のノードの追加を行う。

# 実行環境
Windows10 Home
VirtualBox 6.0.10
EVE-NG Community Edition 2.0.3-95

# 参考サイト
◆公式サイト
http://www.eve-ng.net/

◆技術ブログ
いろいろ読み漁った結果、このサイトとそこで紹介されているyoutube動画が最良であることに行き着く
https://bsnetworking.blog/2017/01/22/eve-ng-load-iol-images/

こちらがyoutube動画
https://www.youtube.com/watch?time_continue=1&v=Zg0OA6Q3ubQ

一部pythonコードが登場するのでそのコードはこちらのgithubからいただいた
https://gist.github.com/paalfe/8edd82f780c650ae2b4a

↑の参考サイトでもリンクあるけど、イメージファイルはコチラからいただいた
https://drive.google.com/drive/folders/0B-v2VUXWowDLYWRBcFJEcmtLQkE

# 手順
今回はいろいろと作業場所が変わるのでどこで作業するのかをメモ。

1. WinSCPの入手 by myPC
2. イメージファイルの入手 by myPC
3. イメージファイルの転送 from myPC to EVE-NG(VM)
4. ライセンスの生成 by EVE-NG(VM)
5. ノードの追加 by EVE-NG(Web)

# 1. WinSCPの入手 by myPC
イメージファイルをEVE-NGから直接とってくることも今振り返ると可能だったような気もするけど
SSHが使えることもあり、WinSCPでファイル転送することにした。
そんなわけで窓の杜からもらってきてインストール。
https://forest.watch.impress.co.jp/library/software/winscp/

※インストーラ起動するだけなのでインストール手順は割愛

# 2. イメージファイルの入手 by myPC
googleドライブ上にがっつり保管されていた。
https://drive.google.com/drive/folders/0B-v2VUXWowDLYWRBcFJEcmtLQkE

優先すべきはCiscoのL2,L3SWなので、いろいろと目移りするけど
Cisco-IOU-L2-L3-Collection-v2.7z
を右クリックして[ダウンロード]
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/4ac80558-499a-4549-4549-1912db4427fc.png)

他のやつは必要になってから徐々に入手を検討しようと思う。

ちなみにこのファイル、7z形式で圧縮されているので解凍が必要。
解凍ツールは「7-zip」を使用した。
URL：https://sevenzip.osdn.jp/

解凍したらこんなファイルが出てきた。

```
L2-ADVENTERPRISEK9-M-15.1-20130726.bin
L2-IPBASEK9-M-15.1-20121123.bin
L3-ADVENTERPRISEK9-M-15.4-2T.bin
L3-ADVENTERPRISEK9-M-15.5-2T.bin
```

# 3. イメージファイルの転送 from myPC to EVE-NG(VM)
WinSCP使ってEVE-NG(VM)へ転送（※IPとかは前の記事の設定をそのまま使ってる）

```
IP:10.0.0.10
ID:root
PW:toor

転送ファイル：
 L2-ADVENTERPRISEK9-M-15.1-20130726.bin
 L2-IPBASEK9-M-15.1-20121123.bin
 L3-ADVENTERPRISEK9-M-15.4-2T.bin
 L3-ADVENTERPRISEK9-M-15.5-2T.bin

転送先：/opt/unetlab/addons/iol/bin
```
# 4. ライセンスの生成 by EVE-NG(VM)
ライセンスを生成するためのpythonスクリプトを作成
参考サイトが指定する場所とは違うけど、同じものがgithubにあったのでこちらを参考にした。
URL：https://gist.github.com/paalfe/8edd82f780c650ae2b4a

ガッツリ解析する気もなく、サッと見た感じだと
一定の法則に従ってライセンスキーを生成しているようだった。

で、このpythonスクリプトをコピペしてローカルpcで作成。
script.pyって名前にして、さっきIOLファイルと同じところにSCP転送。
転送先：/opt/unetlab/addons/iol/bin

※ここからは実行環境変わります（ローカルPC⇒EVE-NG(VM)

pythonスクリプトを実行。
python2の環境で動くので実行は少し工夫してる。

```:実行結果
root@eve-ng:/opt/unetlab/addons/iol/bin# python2 script.py

*********************************************************************
Cisco IOU License Generator - Kal 2011, python port of 2006 C version
hostid=007f0101, hostname=eve-ng, ioukey=7f0343

*********************************************************************
Create the license file $HOME/.iourc with this command:
 echo -e '[license]\neve-ng = 972f30267ef51616;' | tee $HOME/.iourc

The command adds the following text to $HOME/.iourc:
[license]
eve-ng = 972f30267ef51616;

*********************************************************************
Disable the phone home feature with this command:
 grep -q -F '127.0.0.1 xml.cisco.com' /etc/hosts || echo '127.0.0.1 xml.cisco.com' | sudo tee -a /etc/hosts

The command adds the following text to /etc/hosts:
127.0.0.1 xml.cisco.com

*********************************************************************
root@eve-ng:/opt/unetlab/addons/iol/bin#
```

で、ここでちょっと問題があり、
実行結果にも書いてある通り、./iourcファイルをHOMEディレクトリに作成する
…とうまくいかなかった。。。

なので、youtube動画に従い、
iourcファイルを、IOLファイルと同じ場所に作ってやったところ、うまくいった。


```:実行結果
root@eve-ng:/opt/unetlab/addons/iol/bin# echo -e '[license]\neve-ng = 972f30267ef51616;' | tee ./iourc
[license]
eve-ng = 972f30267ef51616;
root@eve-ng:/opt/unetlab/addons/iol/bin# cat ./iourc
[license]
eve-ng = 972f30267ef51616;
root@eve-ng:/opt/unetlab/addons/iol/bin#
```

できた！
最後に、権限を確定させるコマンドを実行して完成。
特に出力結果が出るわけでもなく、プロンプトが帰ってきて終了。
サービス再起動や、OS再起動も特に必要ないようだ。

```
root@eve-ng:/opt/unetlab/addons/iol/bin# /opt/unetlab/wrappers/unl_wrapper -a fixpermissions

root@eve-ng:/opt/unetlab/addons/iol/bin#
```

# 5. ノードの追加 by EVE-NG(Web)
※ここからは実行環境変わります（EVE-NG(VM)⇒ローカルPC）
ブラウザ(chrome使った)を立ち上げてログイン

```
http://10.0.0.5/
ID:admin
PW:eve
```
ログイン後のメイン画面。
青丸部をクリックするとlabを新規で作成する。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/96e80757-2f05-9e30-c4cc-06011b1857bf.png)

ラボの作成画面。簡単に名前決めをするくらいでOK。必要事項を書いて[Save]クリック。
![キャプチャ2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/5db4ae39-06f1-72de-3fbe-7e02dc336e9d.png)

ラボの画面は最初真っ白。なので早速L3SWをつくってみる。
ルータを作るには、Nodesを作成する必要がある。
左ペインのプラス文字をクリックすると、作成可能なオブジェクトがリストアップされるので
「Nodes」をクリック。

![キャプチャ4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/47ae4450-0171-ed86-fd71-417f9044222a.png)

どんなNodesを作るのか選択できる。
たくさん選択肢があるけど、青文字のやつだけが選択可能な奴。
さっきダウンロードしてきたIOLが認識されたおかげで選択できるようになったというわけ。
![キャプチャ5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/cc3794a9-7676-f1af-622e-aecc209861b7.png)

青文字の「Cisco IOL」をクリックすると、登録画面に移る。
見切れているけど、機種の選択プルダウンはあるが、ちょうどL3SWがデフォルトで選択されていたこともあり
とりあえず何も考えずに[Save]クリック
![キャプチャ6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/596df659-b41b-4515-1546-cb9e371a3c4c.png)

画面右上に、ルータらしき画像が現れた。灰色なのはまだ電源が入っていない状態だから。
![キャプチャ7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/d931b78e-68a8-0764-bc4f-9f6e37f42c1d.png)

ルータの電源をONにするには、右クリック⇒Start。
このときiourcファイルが有効なライセンス値を持っていない場合、もしくは
iourcファイルが適切に設置されていない場合は、Startを教えても灰色のままなので注意。
![キャプチャ8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/27766e30-95d6-4c80-5154-929f46d57f45.png)

うまく起動したら瞬時に青色になる。
![キャプチャ9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/ec881696-e3c5-bb90-56f1-e16b0f834de1.png)

L3SWにtelnetするにはアイコンをワンクリックすればOK。
telnet画面がポップアップされる。
![キャプチャ11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/a3e407e3-6a47-4068-a696-4fc09a4a17fb.png)

"no"を入力して、ログインした直後がコチラ。
工場出荷状態での起動なのでログイン確認は無しでログインできた。
![キャプチャ12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/32660d70-5056-a7ba-7632-4073e6f54988.png)

後はいつもどおり好きなようにNWの設定をすればOK！

～おしまい～

# おわりに
後は必要に応じてNodeを作成すればいいのかなと思う。
次は…Node同士の接続かなぁと。



# オマケ：用語の確認
あくまでこの記事は自分のための記事なので、よくわかってない用語をここで確認。

## IOL / IOU
参考：http://www.eve-ng.net/index.php/documentation/howto-s/62-howto-add-cisco-iou-iol
IOL、IOUは、Linux or Solaris環境下で実行可能なシミュレータを指すそうだ。
IOLはi386アーキテクチャ用にコンパイルされたLinuxバージョン。
IOUはSparcアーキテクチャ用にコンパイルされたUnix（Solaris）バージョン。
なので、、、IOLがあれば十分っぽい。

## iourcファイル
IOUファイルのためのLicenseファイルってことね。
EVE-NGがIOUファイルを実行するためにはこのファイルがIOUファイルと同じ階層にないとダメらしい。

## EVE-NG上で実行可能な機種
EVE-NG内限定だからということもあるのかもしれないけどたくさんあった。
少なくともうちの会社で使ってるやつのほとんどの機種が利用可能だった。
http://www.eve-ng.net/documentation/supported-images