Extra Packages を追加した MikroTik CHR を Cisco VIRL に登録する
RouterOS 6.31 current の公開に伴って CHR(Cloud Hosted Router)6.31 のバイナリも公開されています。ただし、公式ダウンロードページ では無く、フォーラム にダウンロードリンクがあります。
- http://www.mikrotik.com/download/share/chr_6_31.img
- http://www.mikrotik.com/download/share/chr_6_31.vmdk
今回は CHR 6.31 に Extra Package を追加し、更にそれを Cisco VIRL に登録します。大部分は過去記事「VIRL に RouterOS を登録してシミュレーション環境を作るには」と同じです。
作業環境¶
以下の環境で作業します。VIRL と Ubuntu のいずれも ESXi 上で動作しています。
- vSphere 6 ESXi
- Cisco VIRL 0.9.242
- Ubuntu 14.04.3 LTS(x86_64)
Ubuntu はイメージの作成等の作業に利用します。前回同様、X はインストールしておらず、CLI のみ利用しています。
QEMU のインストール¶
作業用の Ubuntu が停止した状態で .vmx ファイル中に以下を追記し、仮想マシンを起動します。
1 |
|
QEMU をインストールします。
1 |
|
kvm-ok を実行し、以下の表示になれば仮想化支援機能が有効になっており、QEMU が利用可能なはずです。
1 2 3 |
|
CHR への Extra Package 追加¶
作業用 Ubuntu に CHR 6.31 をダウンロードします。
1 |
|
MD5 や SHA1 値は以下でした。
1 2 3 4 5 |
|
QEMU が外部と通信するには以下の方法があります。
- tap を使う方法
- 「外部 → 仮想マシン」も「仮想マシン → 外部」も、両方向で通信が可能
- 準備がやや面倒
- -user-net を使う方法
- 基本的には「仮想マシン → 外部」通信しか出来ない
- 「外部 → 仮想マシン」向きに通信したい場合は -redir オプションを指定してポートフォワードを行うことで可能
- 準備が簡単
今回は後者の「-user-net」を使いました。CHR 6.31 のイメージを QEMU で起動します。CHR 6.31 のイメージは x86_64 ベースで動作します。
1 |
|
上記の場合、-vnc :1 を指定しているので、起動した CHR のコンソールは「5,900 + 1 = 5901/TCP」で Listen しています。TigerVNC Viewer 等の VNC クライアントを使ってコンソール画面にアクセス出来ます。/ip dhcp-client print で DHCP で割り当てられたアドレスを確認したところ、以下のように表示されました。
1 2 3 4 |
|
QEMU の起動オプションで -redir tcp:8080::80 を指定している為、ブラウザでホストマシンの 8080/TCP にアクセスすると CHR の Web 画面にアクセス出来ます。
今回は以下のパッケージを追加しました。
- kvm-6.31.npk
- multicast-6.31.npk
- ntp-6.31.npk
- openflow-6.31.npk
- user-manager-6.31.npk
更に以下の変更を加えました。
- ipv6 パッケージを有効化
- ups パッケージを無効化
- wireless-fp パッケージを無効化
再起動してパッケージの追加・有効化・無効化を反映します。「System → Reset Configuration」を実行します。
ここまでの作業が完了したら Ubuntu のコンソール上で実行している QEMU を(乱暴ですが…)Ctrl + c で停止します。
イメージ形式の変換(raw → qcow2)¶
CHR のイメージは raw フォーマットになっています。このままでは VIRL 上で実行することが出来無いようです(Images の登録時、エラーになってしまいます)。
1 2 3 4 5 |
|
qemu-img を使ってディスクイメージを raw フォーマットから qcow2 フォーマットへ変換します。変還後のファイル名は「chr_6_31_extra.img」としました。
1 |
|
確認してみると確かにファイルフォーマットが qcow2 になっています。
1 2 3 4 5 6 7 8 9 |
|
VIRL へ登録する¶
server をベースに「CHR」という Subtype を新規作成します。設定は好みもありますが、今回は下記のようにしました。6.31 から virtio のドライバーが入っているので、デバイスには virtio を指定しています。
後は先程作成した chr_6_31_extra.img を VIRL の Images にアップロードすれば完了です。