2017年06月05日

VirtualBox: ホストOSからゲストOSへのアクセス

VirtualBoxのネットワーク接続設定は、デフォルトでNATになっている。
ゲストOSのIPアドレスは、10.0.2.15 だった。
例えば、ゲストOSでWebサーバーを立て、サーバーにUpしたWebページを見るため、
ホストOSから、"http://10.0.2.15" にアクセスしてもエラーになった。
デフォルトのままでは、ホストOSからゲストOSが見えず、ダメ。

そこで、ホストOSとゲストOSのアクセスについて確認してみる。

以下のような状況を想定をした。
"Webページを公開するために、ローカル環境でWebサーバーを立ててテストを行う"
  • ゲストOSにWebサーバーを立てる
  • ホストOSではWebページの作成・参照
  • ホストOSからSSHでサーバーに接続し、サーバーの設定を行う
  • 公開するWebページの転送はSFTPを使う
  • ゲストOSはアプリケーションのインストールやアップデートのため、
    ホストOS側が外部ネットワークにつながる環境であれば、同じように外部ネットワークとつなげておきたい


ホストOS: Windows10 64bit
ゲストOS: Ubuntu16.04 64bit





①ブリッジアダプター


手っ取り早い方法としては、ブリッジ接続だと思う。
ホストOSと同じネットワークにつながるので、ゲストOSのIPアドレスにアクセスすればWebページが確認できる。
それにネットワークにつながっていれば、ホストOS以外のPCからもゲストOSのWebサーバーにアクセスできるので、複数PCで作業しているときに効率がいい。

ゲストOSに固定IPアドレスを設定しておけば、
ローカル環境をノートPC上で構築したとして、外出先などでローカル環境をネットワークに接続できない環境(DCHPでIPが割り振られない)でも、ゲストOSはIPを固定しているので、Webサーバーにアクセスでき作業を進めることができる。


注意点は、会社などネットワーク・PC管理がしっかりと規定されている環境での使用。
管理外のコンピュータが、勝手に社内のネットワークをつながってしまうため、ひどく怒られる可能性がある。
仮想環境でのゲストOSを、管理者に届け出して、ネットワーク接続の許可を出してもらうという正攻法があるが、それだとゲストOSの設定を自由に変更ができなくなるので、テスト環境でいろいろ試したいという場合の足枷となるし、管理者にとっても煩わしいだろう。



そこで、ブリッジ接続は、ちょっと・・・となるとNAT接続になる。

②NAT + ポートフォワーディング


特定の機能に限定したアクセスで良ければ、ポートフォワーディングを使う。

ゲストOSの設定のネットワークから
アダプターをNAT接続とし、[高度] をクリック。

[ポートフォワーディング] の設定をクリック。
virtualbox_portforward01.png

ポートフォワーディングとは、特定の機能(特定ポートに届いた通信データ)を、別の機能(別のポート)へ転送する仕組み。
これにより、ホストOS側の特定機能の通信データをゲストOSの機能へ転送する事で、ホストOSとゲストOSを接続する。

"+"マークをクリックし、設定を追加する。
virtualbox_portforward02.png

今回は、Webページの参照と、SSHの通信が目的。
以下のように設定した。
virtualbox_portforward03.png

名前

任意。接続目的がわかる名称にしておく。

プロトコル

TCPとUDPが選択可能。機能に合わせて選択。

ホストIP

空白でよい。

ホストポート

使用していないポート番号を指定。ウェルノウンポート以外にしておく。

ゲストIP

空白でよい。

ゲストポート

機能のポート番号を設定。変更してなければデフォルトポートだが、個別で変更しているのであれば適宜対応する。



ゲストOSを再起動させ、確認


ホストOSのブラウザから、上記で設定したポート番号にアクセス。
上記で設定した、
"http://localhost:50080" にアクセス。(または、"http://127.0.0.1:50080")
「It works」のページが表示された
virtualbox_portforward04.png


SSHクライアント Tera Term で接続をしてみる。
上記で設定した、
ホスト名 "localhost"(または、"127.0.0.1") : TCPポート "50022" でアクセス。
virtualbox_portforward05.png

接続できた。
virtualbox_portforward06.png



もし実際のコーディングPCが、ホストOS搭載PC以外であった場合も、ホストOS搭載PCのIPアドレス・ポート番号へアクセスすれば、Web参照、SSH接続が可能。
上記のホストOSのアドレス("localhost")を、外部ネットワークのIPアドレス(例: 192.168.1.202)に変えて、ブラウザやSSHクライアントからアクセスすればよい。




③NAT + ホストオンリー アダプター


「特定の機能だけの接続とか煩わしい、もっとざっくりと接続したい」
となると、ホストオンリー アダプターを使う。
予め、[環境設定] でホストオンリーネットワークを設定しておくこと。

ゲストOSの設定のネットワークから
アダプター1 をNAT接続(デフォルトのまま)に設定。
virtualbox_hostonly01.png


アダプター2 で
[ネットワークアダプターを有効化] にチェックを入れ、
[ホストオンリーアダプター] に設定。
virtualbox_hostonly02.png


ゲストOSが1つだけならば、ホストオンリーネットワークがDHCP設定であっても、
ゲストOSのIPアドレスは決まった割り振りになるだろうから、固定IPアドレスに設定してなくとも大丈夫と思う。
もし複数のゲストOSをホストオンリーネットワークに参加させるのであれば、固定IPアドレスに設定しておくとよい。

ホストオンリーネットワークで振られたゲストOSのIPアドレス(例:192.128.56.101)を使い、ブラウザやSSHクライアントからアクセスできる。


(補足)
Microsoft Edgeでアクセスしようとしたらダメだった。
Microsoft Edgeは、ポートフォワーディングしないとアクセスできないようだった。
原因はループバック接続の問題らしい・・・
(参考:Microsoft Edgeでローカルの仮想マシン上に構築したWebサイト(Webアプリケーション)にアクセスできない
私自身は、本来はChromeメインなので困らないのだが、
今回、試しで Edge で確認していたので、アクセスできずに悩んだ。



デメリットとしては、実際のコーディングPCが、ホストOS搭載PC以外であった場合。
他PCからゲストOSへの道がないので手間がかかる。
他PCからホストOSへのSSHポートフォワードを使って、ゲストOSと接続することになる。
だったら、②NAT + ポートフォワーディング のほうが簡単なんじゃないか。






まとめ


ローカル環境を設置するときにの外部ネットワーク環境や、実際の作業対象PCや、ゲストOSに設置するサーバー機能などから、ネットワーク接続方法を選ぶことになる。

VMware Workstation Player であればNAT設定でホストOSがつながっているので、あまり障害が無いのだが、VirtualBoxはちょっと手間がかかる。

で、何がいいのかとなると、
ローカル環境とするPC(ホストOS)と、ゲストOSが1つだけで進める場合が多いと思うので、安全かつ簡単に構築できるのは、NAT + ホストオンリー アダプター です。



VirtualBox: ネットワーク設定
VMware Workstation Player: ネットワーク設定



posted by Zorinos at 18:00| Comment(0) | Windows | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください
ブログランキング・にほんブログ村へ
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。