オムレツ工房

androidとかiPhoneとかの開発雑記

VirtualBoxでホストOS<->ゲストOS間 ゲストOS->インターネット間の通信を行う方法

基本的にWeb開発はバーチャル環境でやりたい派なのだけれど、バーチャルマシン上のWebサーバに接続したい時とか
SSHで操作したい場合なんかは、ホストOS・ゲストOS間での通信が必要になる。
けれど、開発中のWebシステムが外部のサービスを利用する場合や、リポジトリがインターネット上だったりする場合は、
ゲストOSからインターネットに出ていく通信が必要になる。

今回は、VirtualBoxでどういう設定をすれば良いかというお話。

先に、VirtualBoxが仮想OSに割り当てるネットワークアダプタにはいくつか種類があるので簡単に説明。

1.NAT 
アドレス変換。ゲストOS・インターネット間の通信ができる。
ホストOSからゲストOSへアクセスできない。
2.ブリッジアダプタ
ホスト端末が複数NICを備えている場合なんかに、一つのNICをゲストOSに割り当てる。
バーチャル上のWebサーバを外部に公開したい場合なんかはこれを使うのかな?
3.内部ネットワーク
ゲストOS「同士」で通信できるようになる。
ホストOSからゲストOSへはアクセス出来ない。
4.ホストオンリーアダプタ
ホストOS・ゲストOS間で通信可能。
ゲストOSからインターネットには出られない。

で、結論から言うと、

 ゲストOSにNATとホストオンリーアダプタの両方を設定する

ことで、解決できる。

つまり、ゲストOSがインターネットに出ていく時はNATアダプタで通信して、
ホストOSと通信する時はホストオンリーアダプタで通信するということ。

以下、手順。

1.VirtualBoxにホストオンリーネットワークを追加(実OS内部に仮想ネットワークを作るようなイメージかな?)

[VirtualBox] - [環境設定] から[ネットワーク]タブを選択。
右側にある「+」ボタンを押下。以上。IPアドレスとかを変えたければ、ドライバアイコンを押下すればOK。
だけど、基本的にはデフォルトのままでいいと思う。

2.ゲストOSにアダプタを設定する。
VirtualBoxマネージャーからゲストOSの[設定]タブを選択。
[ネットワーク]タブを選択。
アダプタ1に「NAT」を設定。
アダプタ2に「ホストオンリーネットワーク」を設定。

以上

雑記

一時、「ぼくのかんがえたさいきょうの仮想OSぐんだん」みたいな感じで、色んなディストリのLinuxを集めてはバーチャル化していたり
したなぁと思い出した。別に何に使うってわけでもないんだけど。
お気に入りはPuppy Linux。理由。軽い。可愛い。
ローカルで複数Linuxサーバを建てたい時に重宝した。