Metarouter 機能で RouterOS 上に OpenWRT な仮想ルータを起動するには
RouterOS の Metarouter 機能を使うとルータ内で仮想ルータを起動することが出来ます。Metarouter として起動する OS は一般的に以下の二通りが存在するようです。
- RouterOS 内で RouterOS を起動する(ROS on ROS)
- RouterOS 内で OpenWRT を起動する(OpenWRT on ROS)
今回は RouterOS の CLI 上から Metarouter 機能を試してみます。以下をゴールとします。
- RouterOS 上の仮想ルータとして OpenWRT をインストールする
- OpenWRT に基本的な初期設定を実施する
- OpenWRT の管理 Web インターフェイスである「LuCI」にアクセス出来る状態にする
今回の試験環境
今回は以下の環境を用いました。
- RouterBoard 750 GL
- RouterOS 6.26
- ether1 〜 3 は RouterOS で利用する
- ether4 〜 5 は仮想ルータ(OpenWRT)で利用する
- ベースになる RouterOS は IP アドレスやゲートウェイ、DNS サーバが適切に設定され、インターネットアクセスが出来るように設定されていること
Metarouter は「ルータ内で仮想ルータを起動する」為、CPU / メモリ / ストレージを多く消費するので要注意です。今回の環境で Metarouter を設定する前の状態は以下の通りでした。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | > /system resource print
uptime: 5h6m15s
version: 6.26
build-time: Feb/03/2015 15:18:36
free-memory: 45.9MiB
total-memory: 64.0MiB
cpu: MIPS 24Kc V7.4
cpu-count: 1
cpu-frequency: 400MHz
cpu-load: 24%
free-hdd-space: 110.9MiB
total-hdd-space: 128.0MiB
write-sect-since-reboot: 43
write-sect-total: 34567
bad-blocks: 0%
architecture-name: mipsbe
board-name: RB750GL
platform: MikroTik
|
設定の流れ
Metarouter 機能で OpenWRT を利用する場合、以下の流れで設定を進めることになります。
- 仮想ルータへ割り当てるインターフェイスの準備
- OpenWRT イメージのダウンロード
- OpenWRT イメージのインポート(仮想ルータの作成)
- 仮想ルータへのインターフェイス割り当て
- OpenWRT の初期設定
仮想ルータへ割り当てるインターフェイスの準備
設定直前のインターフェイス状態は以下の通りです。
| > /interface ethernet print
Flags: X - disabled, R - running, S - slave
# NAME MTU MAC-ADDRESS ARP MASTER-PORT SWITCH
0 R ether1-gateway 1500 D4:CA:6D:72:20:5D enabled none switch1
1 ether2-master-local 1500 D4:CA:6D:72:20:5E enabled none switch1
2 S ether3-slave-local 1500 D4:CA:6D:72:20:5F enabled ether2-master-local switch1
3 S ether4-slave-local 1500 D4:CA:6D:72:20:60 enabled ether2-master-local switch1
4 S ether5-slave-local 1500 D4:CA:6D:72:20:61 enabled ether2-master-local switch1
|
現状を図示すると以下のようになります。ether3 〜 5 が ether2 の Slave になっています。
ether4 〜 5 は仮想ルータに割り当てる予定ですので、ether2 の Slave から解除します。
| > /interface ethernet set 3 master-port=none
> /interface ethernet set 4 master-port=none
|
設定変更後のインターフェイス状態を確認すると ether4 〜 5 の Master Port が「none」になっていることが分かります。
| > /interface ethernet print
Flags: X - disabled, R - running, S - slave
# NAME MTU MAC-ADDRESS ARP MASTER-PORT SWITCH
0 R ether1-gateway 1500 D4:CA:6D:72:20:5D enabled none switch1
1 ether2-master-local 1500 D4:CA:6D:72:20:5E enabled none switch1
2 S ether3-slave-local 1500 D4:CA:6D:72:20:5F enabled ether2-master-local switch1
3 ether4-slave-local 1500 D4:CA:6D:72:20:60 enabled none switch1
4 ether5-slave-local 1500 D4:CA:6D:72:20:61 enabled none switch1
|
図示すると以下のようになります。ether4 〜 5 が ether2 から切り離されました。
OpenWRT イメージのダウンロード
まず最初に、RouterBoard に保存されているファイル一覧を確認しておきます。まだ OpenWRT イメージはダウンロードしていません。
| > /file print
# NAME TYPE SIZE CREATION-TIME
0 web-proxy1 web-proxy store sep/28/2013 17:24:01
1 pub directory jan/02/1970 07:06:48
2 skins directory jan/01/1970 00:00:48
3 autosupout.rif .rif file 278.1KiB jan/02/1970 02:36:14
4 auto-before-reset.backup backup 28.8KiB jan/02/1970 02:56:59
|
RouterBoard の公式 Wiki によると OpenWRT イメージを以下のようにダウンロードする手順になっていますが、これでは後々、上手くいかない点が出てきます。
| > /tool fetch url="http://www.mikrotik.com/download/metarouter/openwrt-mr-mips-rootfs.tgz" mode=http
|
フォーラムの Metarouter images ページに記載のある以下コマンドだと上手くいきました。
| /tool fetch url="http://openwrt.wk.cz/attitude_adjustment/mr-mips/openwrt-mr-mips-rootfs.tar.gz"
|
OpenWRT イメージのダウンロードが完了しました。ダウンロードしたファイルが一覧に追加されています。
| > /file print # NAME TYPE SIZE CREATION-TIME
0 web-proxy1 web-proxy store sep/28/2013 17:24:01
1 pub directory jan/02/1970 07:06:48
2 skins directory jan/01/1970 00:00:48
3 autosupout.rif .rif file 278.1KiB jan/02/1970 02:36:14
4 auto-before-reset.backup backup 28.8KiB jan/02/1970 02:56:59
5 openwrt-mr-mips-rootfs.tar.gz .gz file
|
OpenWRT イメージのインポート(仮想ルータの作成)
ダウンロードした OpenWRT イメージをインポートし、仮想ルータを作成します。メモリサイズは全体のメモリ容量と相談しながら適宜、指定します。デフォルトではインポート完了直後に仮想ルータが起動してしまいます。インターフェイスの割り当てが済んでから仮想ルータを起動したいので enabled=no を指定し、インポートが完了しても仮想ルータが自動起動しないようにしておきます。
| > /metarouter import-image file-name=openwrt-mr-mips-rootfs.tar.gz memory-size=24 enabled=no
|
無事、仮想ルータがインポートされました。仮想ルータの一覧は /metarouter print コマンドで表示出来ます。今回は仮想ルータの名前として「mr1」が割り当てられました。仮想ルータ名は次の手順である「仮想ルータへのインターフェイス割り当て」時に必要です。
| > /metarouter print
Flags: X - disabled
# NAME MEMORY-SIZE DISK-SIZE USED-DISK STATE
0 X mr1 24MiB unlimited 5596kiB disabled
|
現状を図示すると以下のようになります。RouterOS 内で仮想的に OpenWRT を作成しましたが、まだ OpenWRT へインターフェイスが割り当てられていません。
仮想ルータへのインターフェイス割り当て
仮想ルータにインターフェイスを割り当てます。virtual-machine には仮想ルータの名前を指定します。仮想ルータ名は前項に記載した通り、/metarouter print コマンドで確認出来ます。
| > /metarouter interface add virtual-machine=mr1 static-interface=ether4-slave-local
> /metarouter interface add virtual-machine=mr1 static-interface=ether5-slave-local
|
仮想ルータへのインターフェイス割り当てが完了しました。仮想ルータとインターフェイスの割り当て状態は /metarouter interface print コマンドで確認することが出来ます。
| > /metarouter interface print
Flags: X - disabled, A - active
# VIRTUAL-MACHINE TYPE STATIC-INTERFACE VM-MAC-ADDRESS
0 mr1 static ether4-slave-local 02:49:E8:55:8E:E8
1 mr1 static ether5-slave-local 02:45:5F:D0:20:B1
|
現状を図示すると以下のようになります。ether4 〜 5 が仮想ルータ(mr1)に関連付けられました。
尚、後で OpenWRT 上から確認するとわかりますが OpenWRT 上でインターフェイスは以下のように認識されていました。
- ether4 → OpenWRT 上では eth0
- ether5 → OpenWRT 上では eth1
準備が出来たので仮想ルータを起動します。
| > /metarouter set 0 disabled=no
|
OpenWRT の初期設定
OpenWRT の初期設定を行う為、RouterOS 上から内部的に OpenWRT のコンソールにアクセスします。尚、コンソールから抜けて RouterOS に戻るには「Ctrl+A → Q」を押します。
コンソールアクセスすると OpenWRT の起動メッセージが見えるはずです。「Please press Enter to activate this console.」まで表示されたら、エンターキーを入力して OpenWRT にログインします。まずは root ユーザのパスワードを設定します。
| ## passwd
Changing password for root
New password:
Retype password:
Password for root changed by root
|
次に LAN のアドレスを(DHCP では無く)静的に設定します。今回は以下のパラメータを設定しました。
項目 |
値 |
IP アドレス |
192.168.253.228 |
ネットマスク |
255.255.255.0 |
ゲートウェイ |
192.168.253.254 |
DNS サーバ |
8.8.8.8 |
具体的には以下のように、uci コマンドで設定を行います。
| uci set network.lan.proto=static
uci set network.lan.ipaddr=192.168.253.228
uci set network.lan.netmask=255.255.255.0
uci set network.lan.gateway=192.168.253.254
uci set network.lan.dns=8.8.8.8
uci commit network
ifdown lan && ifup lan
|
但し、この状態ではまだ名前解決が上手く行きません。/etc/resolv.conf は以下のようになっていました。
| search lan
nameserver 127.0.0.1
|
nameserver を Google DNS 等、名前解決出来る DNS へ変更します。
| search lan
nameserver 8.8.8.8
|
インターネットアクセス出来るようになりました。OpenWRT のパッケージをアップデートします。
| ## opkg update
Downloading http://openwrt.wk.cz/attitude_adjustment/mr-mips/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/packages.
|
余談ですが、初期状態で opkg のリポジトリ等を設定している /etc/opkg.conf は以下のようになっていました。
| src/gz packages http://openwrt.wk.cz/attitude_adjustment/mr-mips/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
|
アップデートが完了したら LuCI をインストールします。
LuCI に Web アクセスする為、Web サーバを起動します。合わせて自動起動するようにも設定しておきます。
| ## /etc/init.d/uhttpd start
## /etc/init.d/uhttpd enable
|
これで LuCI にアクセス出来るようになりました。ブラウザから OpenWRT のアドレスへアクセスしてみると LuCI のログイン画面が表示されるはずです。
参考までに、この時点で RouterOS のリソース状態は以下のようになっていました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | > /system resource print
uptime: 6h21m23s
version: 6.26
build-time: Feb/03/2015 15:18:36
free-memory: 12.0MiB
total-memory: 64.0MiB
cpu: MIPS 24Kc V7.4
cpu-count: 1
cpu-frequency: 400MHz
cpu-load: 20%
free-hdd-space: 99.7MiB
total-hdd-space: 128.0MiB
write-sect-since-reboot: 9566
write-sect-total: 44090
bad-blocks: 0%
architecture-name: mipsbe
board-name: RB750GL
platform: MikroTik
|