OpenWRT(x86)を使ってVirtualBoxの仮想ネットワークのルーターを作る

nogajun
nogajun

_

2月、3月限定でネットワーク周りの仕事をしています。その中で「Raspberry Piを使ってルーターを作る」という作業があって、そのときに「OpenWRT」を使ったのですが、これが非常にいいです。 SDカードにイメージを書き込み、Raspberry Piを起動すればルーターになります。

それだけではなく、設定や管理がコマンドとWeb UIの両方でできたり、パッケージを使ってアプリを追加するとルーター内だけでFreeRadiusを使った認証が完結したり、VLAN切ったり、ルーターでやりたいほとんどの事がこれ一つでできます。

それでとても気に入ったOpenWRTですが、VirtualBoxでネットワークの検証をするときも使えるのでは?と思って設定した記録です。

イメージ

VirtualBoxのネットワーク

この画像の「OpenWRT」と書いてある部分です。外側(OpenWRTのWAN)がVirtualBoxのNATでホストのNICにつながって、内側(OpenWRTのLAN)はVirtualBoxの内部ネットワークIntnetでつながっている想定です。これだけだとOpenWRTに内側からしかアクセスできないので、ホストオンリーアダプターを使って直接アクセスできるようにしているのがポイントです。

ちなみにこの図は、LibreOffice DrawとVRT Network Equipment Galleryを使って書きました。

VirtualBoxの設定

OpenWRTのサイトにドキュメントがあるので、それも参考にするといいと思います。

OpenWRTのサイトにはx86用のイメージも置いてあるので、ダウンロードします。使ったイメージは、こちらのcombined-ext4.img.gzを使います。

VirtualBoxのvdiイメージに変換します。

   $ gunzip openwrt-19.07.6-x86-64-combined-ext4.img.gz
   $ vboxmanage convertfromraw --format VDI openwrt-19.07.6-x86-64-combined-ext4.img openwrt.vdi

VirtualBoxのマシンを作成します。このときに「仮想ハードディスクを追加しない」にしておきます。

VirtualBoxの設定

  • 名前: (適当に)
  • タイプ: Linux
  • バージョン: Linux 2.6/3.x/4.x(64-bit)
  • メモリー: 256MB
  • ハードディスク: 仮想ハードディスクを追加しない

作成したらvdiに変換したイメージを設定フォルダに移動して仮想マシンにHDDを追加します。

HDDの追加

IDEは不要なので削除して、SATAコントローラーの下に作成したvdiイメージを追加します。SATAコントローラーの「ホストのI/Oキャッシュを使う」には必ずチェックを入れてください。タイプは「AHCI」にしていますが「Virtio SCSI」のほうが良いと思います。

ネットワークアダプターの設定

ネットワークアダプターの追加の前に、後で使うホストオンリーアダプターの設定を確認してから追加します。

VirtualBoxの[ファイル]→[ホストネットワークマネージャー]を開き、デバイスがあるか確認します。なければ作成してください。

ホストネットワークマネージャー

ネットワークアダプターは3つ作ります。アダプター1は内側(LAN)用の「内部ネットワーク」、アダプター2は外側(WAN)用の「NAT」、アダプター3はホストからのOpenWRTアクセス用の「ホストオンリーアダプター」です。 設定は特に難しいところも無いのでスクリーンショットを参考にしてください。

アダプター1

アダプター2

アダプター3

OpenWRTの設定

これで仮想マシンを起動しますが、OpenWRTには内側(内部ネットワーク)からしかアクセスできません。ホストからOpenWRTにアクセスして設定を変更したいので、ホストオンリーアダプターでアクセスするための設定をします。

OpenWRTの仮想マシンを起動してメッセージが止まればEnterキーを押します。OpenWRTの初期状態はパスワードなしでrootにアクセスできるので、ホストオンリーアダプターでアクセスするNICの設定を追加します。

OpenWRTの設定は/etc/config/networkに以下の設定を追記します。

   # vi /etc/config/network

   config interface 'mgr'
           option ifname 'eth2'
           option proto 'static'
           option ipaddr '192.168.56.3'
           option netmask '255.255.255.0'

設定ではIPアドレスを192.168.56.3に設定していますが、ホストネットワークマネージャーで設定してある192.168.56.1とDHCPで使われる192.168.56.2を除いて192.168.56.0/24の範囲なら大丈夫です。

設定を追記したらネットワークをリロードします。

   # service network reload

これでホストからもアクセスできるようになったので、ブラウザで設定した192.168.56.4にアクセスしたり、SSHでアクセスできます。

まとめ

これでVirtualBoxの内部ネットワークをつなぐルーターができたので、別の仮想マシンを作ってネットワークアダプターを「内部ネットワーク」にすればIntnet内のマシンが増やして実験できます。よかったよかった。