EVE-NGスタートアップのメモ

以前はGNS3を使っていたけれど社外の方に教えてもらってこっちのほうが使いやすそうだったのでお試ししました。公式ドキュメント(とビデオ)様様ですが、気になったところをメモしておきます。

はじめに

モチベーション

多数のネットワークベンダーに対応し、かつポータブルな仮想ネットワーク環境が欲しい。

環境

  • macOS Mojave ver10.14.2
    • Memory: 16GB
  • VMware Fusion ver11.0.2
  • EVE-NG Community Edition 2.0.3-92

やったこと

EVE-NGのインストール

公式ページから辿れる動画のまま。 動画ではVMware Workstationを使っていますがほぼ同じ流れをVMware Fusionで踏襲しました。

パラメータ等

  • 割当メモリ: 8GB
    • "この仮想マシンでハイパーバイザアプリケーションを有効にする" にチェック
  • プロセッサ: 4個
  • ネットワークアダプタ: NAT
    • Static IPを付与。私の環境では172.16.216.10/24

このあたりも参考にさせていただきました。

各種OSイメージのインストール

今回はインターネットで入手可能なOSイメージを入れてみました。

Cisco CSR1000V

感謝しつつCisco社のダウンロードサイトから入手。私のCiscoアカウントでダウンロードできた最新のバージョンは 3.15.0S でした。 入手したISOイメージをEVE-NGのVMに転送し、公式のインストールガイド に倣ってコマンドを打つだけ。

# Host macOS
$ scp ~/Downloads/csr1000v-universalk9.03.15.00.S.155-2.S-std.iso root@172.16.216.10:/root/csr1000v
$ ssh root@172.16.216.10

# EVE-NG VM
$ cd csr1000v
$ /opt/qemu/bin/qemu-img create -f qcow2  virtioa.qcow2 8G
$ /opt/qemu-2.2.0/bin/qemu-system-x86_64  -nographic -drive file=virtioa.qcow2,if=virtio,bus=0,unit=0,cache=none -machine type=pc-1.0,accel=kvm -serial mon:stdio -nographic -nodefconfig -nodefaults -rtc base=utc -cdrom /tmp/csr1000v-universalk9.03.15.00.S.155-2.S-std.iso -boot order=dc  -m 3072

# Press any key to continue では Ctl+c を押下 (1回目,2回目共に)
# インストールガイドにもあるように、2回目のGNU GRUBでSerial consoleにカーソルをあわせた後、Enterを押さないように注意

$ mkdir /opt/unetlab/addons/qemu/csr1000v-universalk9.03.15.00.S.155-2.S-std/
$ mv virtioa.qcow2 /opt/unetlab/addons/qemu/csr1000v-universalk9.03.15.00.S.155-2.S-std/
$ /opt/unetlab/wrappers/unl_wrapper -a fixpermissions

実は最初に昔ダウンロードしていたバージョン 3.12.0S を使おうと試みたのですが、2回目の Press any key to continue が表示されずにイメージが起動し、インストールできませんでした。その後、バージョン 3.15.0S で試した際に、既に存在するHDD virtioa.qcow2 を削除しなかったためにインストールプロセスで 3.12.0S が起動してしまいました。インストールプロセスを再実行する際には virtioa.qcow2 を作り直すのが無難かも。

Juniper vSRX

vMXを試したかったところですがダウンロードできなかったので、それでも有り難くJuniper社のダウンロードサイトからvSRXの 17.3R2 をいただきました。 公式インストールガイドも有り難い限りです。

# Host macOS
$ scp ~/Downloads/media-vsrx-vmdisk-17.3R2.10.qcow2 root@172.16.216.10:/root/vsrx
$ ssh root@172.16.216.10

# EVE-NG VM
$ cd vsrx
$ mkdir /opt/unetlab/addons/qemu/vsrxng-17.3R2.10/
$ cp media-vsrx-vmdisk-17.3R2.10.qcow2 /opt/unetlab/addons/qemu/vsrxng-17.3R2.10/
$ cd /opt/unetlab/addons/qemu/vsrxng-17.3R2.10/
$ mv media-vsrx-vmdisk-17.3R2.10.qcow2 virtioa.qcow2
$ ls
virtioa.qcow2
$ /opt/unetlab/wrappers/unl_wrapper -a fixpermissions

Arista vEOS

Arista社のダウンロードサイトからバージョン 4.21.1.1F をいただく。感謝とISOも忘れずに。 公式のインストールガイド に従うのみ。

# Host macOS
$ scp ~/Downloads/
$ scp Aboot-veos-serial-8.0.0.iso vEOS-lab-4.21.1.1F.vmdk root@172.16.216.10:/root/veos
$ ssh root@172.16.216.10

# EVE-NG VM
$ cd veos
$ /opt/qemu/bin/qemu-img convert -f vmdk -O qcow2 vEOS-lab-4.21.1.1F.vmdk hda.qcow2
$ mkdir -p /opt/unetlab/addons/qemu/veos-4.21.1.1F
$ mv hda.qcow2 /opt/unetlab/addons/qemu/veos-4.21.1.1F/
$ mv Aboot-veos-serial-8.0.0.iso /opt/unetlab/addons/qemu/veos-4.21.1.1F/cdrom.iso
$ /opt/unetlab/wrappers/unl_wrapper -a fixpermissions

三位一体で起動&疎通確認

EVE-NGのWebコンソール (私の環境では http://172.16.216.10/#/login ) にアクセスしログイン。適当なlabを開始します。

先程インストールした3種のOSを選択しクソみたいな簡単なトポロジで相互接続確認。各ルータを起動するとMACが鬼の形相でファンをぶん回します。

f:id:nstgt7:20190113172555p:plain
相互接続検証トポロジー

適当にconfigしてping通っておしまい。いろいろ遊べそうです。

csr1000v#show ip interface brief
Interface              IP-Address      OK? Method Status                Protocol
GigabitEthernet1       10.0.1.1        YES manual up                    up
GigabitEthernet2       10.0.2.1        YES manual up                    up
GigabitEthernet3       unassigned      YES NVRAM  administratively down down
GigabitEthernet4       unassigned      YES NVRAM  administratively down down
csr1000v#ping 10.0.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.1.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/2/3 ms
csr1000v#ping 10.0.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/13/30 ms

veos#ping 10.0.3.1 repeat 1
PING 10.0.3.1 (10.0.3.1) 72(100) bytes of data.
80 bytes from 10.0.3.1: icmp_seq=1 ttl=64 time=24.0 ms

--- 10.0.3.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 24.002/24.002/24.002/0.000 ms

ちなみに1: ターミナルでtelnetできない問題

labのトポロジ図でルータのアイコンをクリックするとターミナルが起動してtelnet接続できる訳ですが、macOS 10.13 High Sierra移行telnetコマンドは消滅してしまったため、 /usr/bin/telnet が無くそのままでは接続できませんでした。対処法は こちらを参考

要はbrew等でtelnetのバイナリを入手し、リカバリーモードで起動後にSIP (System Integrity Protection) を無効化した状態で /usr/bin 配下にtelnetのバイナリを移せばOK。 SIPの解除はこちらを参考に。自己責任で、戻し忘れの無きように。

# brewでtelnetをインストール
$ brew install telnet
$ which telnet
/usr/local/bin/telnet
$ csrutil status
System Integrity Protection status: enabled.

# MACをリカバリーモードで起動してターミナルを開く
-bash-3.2# csrutil disable

# 再起動で通常起動してターミナルを起動
$ csrutil status
System Integrity Protection status: disabled.
$ sudo cp /usr/local/bin/telnet /usr/bin
$ /usr/bin/telnet
telnet> ^C

# SIPを戻すために再度リカバリーモードで起動
-bash-3.2# csrutil enable

あと通常ではターミナルを起動すると telnet:// が紐付けられたMACのデフォルトのターミナルアプリが開きます。私はiTerm2を使っているので、この記事Change the default ssh:// handler in iTerm2 itself の項を参考に telnet:// の紐付けをiTerm2に変えました。

ちなみに2: 環境のポータビリティ

EVE-NGのlabは簡単にimport/exportすることが可能なようです。自分の手元で作ったlab環境を、同じOSイメージがインストールされた別のEVE-NG環境に持ち込むことが簡単にできるのは助かります。チーム内での検証の同期や研修等でも使えそう。

ちなみに3: パフォーマンスチューニング

はまだやってません。Nodeに対してCPU Limitを設定できるチェックボックスがありますが、有効にしてみてもあんまり変わってないような。

余談ですが各ルータへの割当メモリをケチって削ってみたところちゃんと動きませんでした。そりゃそうだ。

  • Cisco CSR1000V
    • メモリをデフォルトの3072MBから2048MBに変更 → インターフェースが認識されない
  • Juniper vSRX
    • メモリをデフォルトの4096MBから2048MBに変更 → そもそも起動しない

おわりに

OSイメージさえあれば簡単にインストール可能だし、(あまり触れていませんが)Webコンソールも扱いやすく、個人的にはGNS3より使いやすいと思います。スペック盛り盛りのサーバを用意すれば検証が捗りそうです。