LoginSignup
55
48

More than 5 years have passed since last update.

VirtualBoxでHostからGuestに通信する3つの方法

Last updated at Posted at 2019-02-04

普段はVMwareを利用しておりますが、諸事情によりVirtualBoxを使うことになったのでメモ。

やりたいこと

  • Host(mac)からGuest(CentOS6.x)にhttpでアクセス(要はWebが見たい)
  • Host(mac)からGuest(CentOS6.x)にSSHでアクセス(要はログインしたい)
  • どのような場合でもGuestからのインターネットアクセスが可能であること(要はyumとかしたい)

環境

  • macOS 10.14.3
  • VirtualBox 6.0.4
  • GustOS: CentOS6.10(httpdインストール+起動済み)

方法

以下の3つの方法がとりあえずの選択肢のよう。

  • NAT + Port forwarding
  • ブリッジ
  • NAT + ホストオンリーアダプタ

それぞれのやり方を見ていく。

NAT + Port forwarding

イメージ

私の頭の中のイメージはこんな感じ。
標準設定?のNATでは、Host, Guest共にインターネットには接続できるものの、Host-Guest間での通信はできない。

そこで、Hostの特定ポートをGuestの特定ポートに転送することで通信できるようにする。

スクリーンショット 2019-02-05 6.51.15.png

物理I/Fやネットワークとバーチャルの表現が難しい。。。おかしければご指摘を。

設定

VirtualBoxを起動し、VMを選んで設定をクリックします。

スクリーンショット 2019-02-05 7.14.32.png

ネットワークから高度をチェック。ポートフォワーディングをクリックします。

スクリーンショット 2019-02-05 7.14.46.png

右上の+ボタンでルールを追加します。
ここでは、

  • Hostの8888をGuestの80に。
  • Hostの2222をGuestの22に。

転送設定をしています。

スクリーンショット 2019-02-05 7.14.51.png

VMを起動して動作を確認します。

確認

http

http://localhost:8888 にアクセスしてGuest側のWebが見えるか確認します。

スクリーンショット 2019-02-05 8.31.12.png

見えました。

ssh

ターミナルを起動し、ポートを指定してlocalhostにsshしてみます。

ssh -p 2222 root@localhost

とりあえずroot使います。すみません。

いけるはず。

ブリッジ

環境が許すならこれが一番楽。
MAMPとかでいいところをわざわざVM作るってことは別IPでサーバ立てたいとかだろうし。

ただ、マシンがLAN上に公開されてしまうので、許可されていない、もしくは、安全ではない環境では次のNAT+ホストオンリアダプタの選択になる。

イメージ

イメージは下記のような感じ。普通にLANにマシンが追加される。IPの払い出しもLANのDHCPサーバから行われる。

スクリーンショット 2019-02-05 7.30.09.png

設定

設定は簡単。ネットワーク設定で「割り当て」をブリッジアダプターにするだけ。

スクリーンショット 2019-02-05 7.23.19.png

変更したらVMを起動して動作を確認。

確認

ifconfigでGuestのIPアドレスを確認し、WebおよびSSHによるアクセスが可能か確認します。

スクリーンショット 2019-02-05 8.35.45.png

Web。ifconfigで設定されたIPのままでアクセス可能。

スクリーンショット 2019-02-05 8.37.02.png
sh

SSHでは下記のようにポートを指定する必要はない。

ssh root@192.168.11.10

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

インターネットの接続が不要ならNATなくてもよい。が、私の環境だと必要なので調査+メモ。

CentOS7だと少し操作が違います(簡単です)。文中に注記を書きます。

イメージ

イマージは下記の通り。NATに加え、両ホストに新規に(ネットワークとそれに接続可能な)ネットワークアダプタを追加して相互に通信する。

スクリーンショット 2019-02-05 7.58.58.png

設定

まず、Toolsメニューを選択し、Createボタンを押してネットワークとネットワークアダプタを追加します。

スクリーンショット 2019-02-10 5.37.51.png

Createアイコンがない場合は、Toolsのメニューボタン?をクリックし、ネットワークを選択します。

スクリーンショット 2019-02-10 5.30.47.png

CentOS7の場合はこの時点で(ネットワーク or マシンを)再起動すれば追加されたアダプタが認識され、そのIPでアクセスできます。

追加されたら、Propetiesボタンを押して、設定内容を確認しておきます。

スクリーンショット 2019-02-05 7.47.48.png

この場合、

  • ネット空間は192.168.56.0/24
  • Host側に追加されたネットワークアダプタのIPは192.168.56.1

ということのようです。

次に、VM側の設定を行います。
ネットワークを選択肢、アダプタ2のタブを選び、

  • ネットワークアダプタを有効化
  • 割り当て:ホストオンリーアタプター
  • 名前:vboxnet0(先程作ったやつ)

とします。あと、設定に利用するのでMACアドレスをメモしておきます。

スクリーンショット 2019-02-05 7.49.30.png

CentOSの以下のファイルをいじります(新規作成します)。

eth0は既にあるので、eth1とします。

vi /etc/sysconfig/network-scripts/ifcfg-eth1

追加するネットワークアダプタの情報を設定します。

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=08:00:27:FB:D4:95
IPADDR=192.168.56.2
NETMASK=255.255.255.0
NETWORK=192.168.56.0

主な解説。

  • DEVICE=eth1(ディバイス名)
  • TYPE=Ethernet
  • ONBOOT=yes(起動時に有効にするか)
  • BOOTPROTO=static(IPアドレスの割り当て方法)
  • HWADDR=08:00:27:FB:D4:95(Macアドレス。2文字ずつ、:で区切って入力)
  • IPADDR=192.168.56.2(GuestOS側のアドレス。とりあえず、2とした)
  • NETMASK=255.255.255.0(ネットマスク)
  • NETWORK=192.168.56.0(ネットワーク)

設定が終わったらアダプタを起動させます。

/etc/sysconfig/network-scripts/ifup eth1

service network restartでもいいかも。

確認

割り振ったIP(192.168.56.2)でWebおよびSSHアクセスができるか確認します。

ifconfigで見ると、eth0とeth1が確認できます。

スクリーンショット 2019-02-05 8.41.17.png

eth1の方のIPアドレスでWebおよびSSHアクセスできるか確認します。

Web。

スクリーンショット 2019-02-05 8.42.17.png

SSH。

ssh root@192.168.56.2
55
48
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
48