VirtualBoxとVyOSの組み合わせでゲストOSのインストール環境を構築
自宅のMacでゲストOSを簡単に試せる仮装環境を構築できないか調べてみた。
やりたいことはざっとこんな感じ。
- LinuxやWndowsのゲストOSをインストールして、ゲストOSがインターネットにアクセス可能としたい
- ホストOS(Mac)からもゲストOSにsshでアクセスしたい
- 自宅だけでなく、外出先でも作業できるようにしたい
- 外出先でゲストOSを使う場合、IPアドレスの振り直しなどはしたくない(同じIPで使いたい)
ざっとこんなところか。
VirtualBoxでどうやって実現するか調べてみると、意外と面倒なことが判明。
①ネットワークをブリッジモードで設定
一番簡単なのはブリッジモードのネットワークを用意して、そこにゲストOSをぶら下げる方法。この方法だとゲストOSのIPをDHCPにしておけば勝手にホストOSと同じNWセグメントのIPが割り当てられるので設定が楽。
ただこの方法だと色々と問題がある。例えば外出先でWifiなどのNWに繋げた場合、ホストOSであるMacのIPは変わるし、ゲストOSのIPも当然変わる。そうなるとMacからゲストOSにsshでアクセスしたい時、通常なら/etc/hostsにホスト名を設定しているので「ssh hoge.local」みたに自宅ならできてたことが、外出先だと「ssh 192.168.x.x」と全てIPで通信しないといけない。
ゲストOS同士の通信も、自宅でできていたことが、外出先でIPアドレスが変わってできなくなることが意外と多くてよろしくない。
最悪なのが、万が一外出先でネットワークが使えないと、DHPCの場合、ゲストOSはIPアドレスすら割り当てられないので全く使い物にならない。仮にゲストOSに固定でIPを割り当てていても、ホストOS側でIPがないため、ゲストOSにアクセスするにはsshでなくゲストOSのコンソールからしかアクセスできない。
②ネットワークをNATネットワーク+ホストオンリーアダプタで設定
次にNATネットワーク+ホストオンリーアダプタで構築する方法。
イメージとしては、ゲストOSをインストールできる環境をホストOS内に用意して、ここにゲストOSをインストールする感じ。これだと自宅でも外出先でも同じIPでゲストOSにアクセスできるようになる。つまり常に「ssh hoge.local」みたいなアクセスが可能となって便利。また外出先でネットワークが使えない場合、NATネットワーク経由でインターネットにアクセスできなくなるけど、ホストオンリーアダプタ経由でゲストOSにアクセス可能なのもうれしい。
ただ問題点は、ゲストOSインストールするごとに毎回NIC2枚分の設定しないとやりたいことができない。これは結構面倒。やりたいのはゲストOSをお手軽にインストールしてMacからsshでログインしたり、ゲストOSがインターネットにアクセスさせたいだけ。この一手間は慣れると問題ないかもしれないが、個人的には煩わしい作業と思える。
③ネットワークをNATネットワーク+ホストオンリーアダプタ+VyOSで設定
最後にたどり着いたのがこの方法。VyOSを内部ネットワークからインターネットに接続するルータとして使い、ゲストOSは内部ネットワークに接続する、といったもの。
ゲストOSがインターネットに接続するには、ゲストOSを起動するだけでなく、VyOSも立ち上げないといけないといった不便さはある。ただVyOS自体はメモリもあまり消費しないし(私の環境では700M強で設定)、ゲストOSがインターネット接続不要ならVyOSを起動しなければ良いので、それほど気にしなくてもいいように思う。
一旦VyOSで環境を構築してしまえば、あとはゲストOSをインストール して、デフォルトGWにVyOSを設定すれば終わり。外出先でも自宅と同じIPアドレスでゲストOSにアクセスできるし、仮にネットワークが繋がっていなくても問題無し。
VyOSのCPU、メモリの消費にこだわらなければ、一番やりたいことができる構成。
これを調べる上で、以下のURLを参考にしました。大変内容が充実してて参考になります。VyOSの設定などはほとんど下記を参考としています。
VyOSで構築するVirtualBoxのプライベートネットワーク - Qiita
VirtualBoxで作るWebサービスの開発環境 (1)構想編 | hosiiのメモ帳