読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

VIRL に RouterOS を登録してシミュレーション環境を作るには

Cisco MikroTik Network VIRL

VIRLRouterOS を追加するとルーティングの挙動確認等、論理的な検証は非常に楽になります。そこで今回は VIRL 上で動作する RouterOS の動作イメージを作成し、それを VIRL へ登録してみます。VIRL をお持ちで無い方は GNS3 でも近い手順で似たような検証環境を作れると思います(未検証)。

一点だけ、注意点があります。RouterOS の仕様でライセンス未登録状態だと 24 時間しか利用出来ないそうです。ですが、少なくても私は「短時間で作る・壊すを繰り返す」為、ライセンス未登録状態でも全く困っていません。

環境

以下の環境で作業します。VIRL と Ubuntu のいずれも ESXi 上で動作しています。

Ubuntu はイメージの作成に利用します。X はインストールしておらず、CLI のみ利用しています。

ゲスト OS 上で仮想化支援機能を有効化する

今回は「ESXi 上の Ubuntu で更に QEMU を利用するという」ネスト環境になっています。こういった場合は /vmfs/volumes/datastore1/[ゲスト OS 名]/[ゲスト OS 名].vmx ファイルに以下を追記し、ゲスト OS でも仮想化支援機能を利用出来るようにします。ファイルの編集はゲスト OS がシャットダウンされた状態で実施し、修正が完了したらゲスト OS を起動します。

vhv.enable = "TRUE"

起動しなおした Ubuntukvm-ok を実行し、以下の表示になれば仮想化支援機能が有効になっており、QEMU が利用可能なはずです。

# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

QEMU のインストール

ここからは Ubuntu 上で作業します。RouterOS のイメージを作成する為に QEMU をインストールします。

apt-get -y install qemu-system-x86

関連するライブラリが多数、インストールされますが QEMU 関連では以下がインストールされました。

# dpkg -l | grep qemu
ii  ipxe-qemu                           1.0.0+git-20131111.c3d1e78-2ubuntu1.1 all          PXE boot firmware - ROM images for qemu
ii  qemu-keymaps                        2.0.0+dfsg-2ubuntu1.14                all          QEMU keyboard maps
ii  qemu-system-common                  2.0.0+dfsg-2ubuntu1.14                amd64        QEMU full system emulation binaries (common files)
ii  qemu-system-x86                     2.0.0+dfsg-2ubuntu1.14                amd64        QEMU full system emulation binaries (x86)
ii  qemu-utils                          2.0.0+dfsg-2ubuntu1.14                amd64        QEMU utilities

イメージの作成

Mikrotik のダウンロードサイトから RouterOS をダウンロードします。今回は 6.30.1 をダウンロードしました。

curl -O http://download2.mikrotik.com/routeros/6.30.1/mikrotik-6.30.1.iso

チェックサムは以下の通りでした。

# md5sum mikrotik-6.30.1.iso
e7491cc0e8d17ba87cc71d3c96958c2f  mikrotik-6.30.1.iso

# openssl sha1 mikrotik-6.30.1.iso
SHA1(mikrotik-6.30.1.iso)= e74a0ff498d0d8e4109a5a72179cb0772bbfc40a

QEMU で先程ダウンロードした .iso イメージをマウントした仮想マシンを作成します。

qemu-img create -f qcow2 RouterOS-6.30.1.img 200M

仮想マシンを起動します。

qemu-system-i386 -m 512 -enable-kvm -boot d -cdrom mikrotik-6.30.1.iso RouterOS-6.30.1.img -vnc :1

起動した仮想マシンVNC 接続します。VNC クライアントには TigerVNC を利用しました。接続先は「Ubuntu のアドレス」「5901/TCP」を指定します。仮に Ubuntu のアドレスが 192.168.1.1 だとすると「192.168.1.1:5901」を指定し、Connect ボタンを押します。

f:id:sig9:20150720164949p:plain

RouterOS のインストーラが起動しています。矢印キーとスペースキーを使って以下のパッケージを選択(「X」マークが入った状態)にします。パッケージの選択が完了したら「i」キーを押してインストーラを進めます。

  • system
  • ppp
  • dhcp
  • advanced-tools
  • ipv6
  • mpls
  • multicast
  • ntp
  • routing
  • security
  • user-manager

f:id:sig9:20150720165143p:plain

「Do you want to keep old configuration? [y/n]:」と聞かれます。ここは「n」と入力して進めます。

f:id:sig9:20150720165349p:plain

「Warning: all data on the disk will be erased! Continue? [y/n]:」と聞かれます。ここは「y」と入力して進めます。

f:id:sig9:20150720170034p:plain

ディスクのフォーマットに続き、パッケージのインストールが進行しますが、然程時間はかからずに完了するはずです。「Software installed. Press ENTER to reboot」と表示されますが、何も入力せずにおきます。

f:id:sig9:20150720170140p:plain

Ubuntu のシェルに戻ります。乱暴ですが、Ctrl + c を入力して QEMU を停止します。

# qemu-system-i386 -m 512 -enable-kvm -boot d -cdrom mikrotik-6.30.1.iso RouterOS-6.30.1.img -vnc :1
^Cqemu: terminating on signal 2

イメージは約 37MB になっていました。これで RouterOS イメージの作成は完了です。

# ls -hl RouterOS-6.30.1.img
-rw-r--r-- 1 root root 37M Jul 20 16:41 RouterOS-6.30.1.img

完成したイメージは SCP 等でローカルに回収しておくと後々、便利です。

VIRL への登録

ブラウザで VIRL の UWM(User Workspace Management)へログインします。RouterOS 用の Subtype を登録すべく、メニューから「Subtypes」を選択し、「server」の右側にあるボタンから「Specialize」を選択します。

f:id:sig9:20150720215553p:plain

以下のように表示されるはずです。

f:id:sig9:20150720215604p:plain

RouterOS 用に幾つかの項目を以下のようにカスタマイズします。

項目 デフォルト値 変更後の値
Name of new subtype server RouterOS
Name of management interface eth0 eth1
First dat interface number 1 2
Name of icon for GUI app_server iosv
Virtual interface model virtio e1000
Main disk bus model virtio ide
RAM (MB) allocated per node 2048 1024
Name of default image server RouterOS
Name of default flavor server RouterOS

具体的には以下のように変更しました。赤枠はデフォルト値から変更した箇所です。

f:id:sig9:20150720215613p:plain

RouterOS 用の Subtype 作成が正常に完了すると、以下のように表示されるはずです。

f:id:sig9:20150720220842p:plain

次はイメージの登録を行います。UWM の「Images」メニューから「Add」を押します。

f:id:sig9:20150720220850p:plain

以下のように表示されるはずです。

f:id:sig9:20150720221406p:plain

RouterOS 用に幾つかの項目を以下のようにカスタマイズします。

項目 デフォルト値 変更後の値
Subtype ASAv RouterOS
Release (N/A) 6.30.1
Source File on server Local Image file

具体的には以下のように変更しました。赤枠はデフォルト値から変更した箇所です。「Source」から「Local Image file」を選択するとローカル PC からイメージファイルをアップロードする為の「Image File」ボタンが表示されますので、これをクリックして作成済みの RouterOS イメージ(今回は「RouterOS-6.30.1.img」)をアップロードします。

f:id:sig9:20150720221415p:plain

これで UWM 側の設定は完了です。

VMMaestro の設定

ここからは VMMaestro で作業します。設定画面の「Node Subtypes」を選択すると概ね、以下のようになっているはずです。

f:id:sig9:20150720224543p:plain

「Fetch from Server」ボタンをクリックすると「Update the local subtype data based on the currently-configured simulation engine? Your local subtype definitions may be modified, but none will be removed.」と表示されるので「OK」をクリックします。

f:id:sig9:20150720224601p:plain

これで RouterOS 用に作成した Subtype が表示されるはずです。

f:id:sig9:20150720224609p:plain

あとは IOSv 等と同様に、Design ビューから RouterOS を配置して利用すれば OK です。

RouterOS の状態確認

/system routerboard print/system resource print の出力結果は以下の通りです。

[admin@MikroTik] > /system routerboard print
  routerboard: no

[admin@MikroTik] > /system resource print
                   uptime: 35s
                  version: 6.30.1
               build-time: Jul/14/2015 11:22:46
              free-memory: 1876.8MiB
             total-memory: 1894.2MiB
                      cpu: QEMU
                cpu-count: 1
            cpu-frequency: 0MHz
                 cpu-load: 2%
           free-hdd-space: 135.8MiB
          total-hdd-space: 166.7MiB
  write-sect-since-reboot: 8208
         write-sect-total: 8208
        architecture-name: x86
               board-name: x86
                 platform: MikroTik