普段は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の特定ポートに転送することで通信できるようにする。
物理I/Fやネットワークとバーチャルの表現が難しい。。。おかしければご指摘を。
設定
VirtualBoxを起動し、VMを選んで設定をクリックします。
ネットワークから高度をチェック。ポートフォワーディングをクリックします。
右上の+ボタンでルールを追加します。
ここでは、
- Hostの8888をGuestの80に。
- Hostの2222をGuestの22に。
転送設定をしています。
VMを起動して動作を確認します。
確認
http
http://localhost:8888 にアクセスしてGuest側のWebが見えるか確認します。
見えました。
ssh
ターミナルを起動し、ポートを指定してlocalhostにsshしてみます。
ssh -p 2222 root@localhost
とりあえずroot使います。すみません。
いけるはず。
ブリッジ
環境が許すならこれが一番楽。
MAMPとかでいいところをわざわざVM作るってことは別IPでサーバ立てたいとかだろうし。
ただ、マシンがLAN上に公開されてしまうので、許可されていない、もしくは、安全ではない環境では次のNAT+ホストオンリアダプタの選択になる。
イメージ
イメージは下記のような感じ。普通にLANにマシンが追加される。IPの払い出しもLANのDHCPサーバから行われる。
設定
設定は簡単。ネットワーク設定で「割り当て」をブリッジアダプターにするだけ。
変更したらVMを起動して動作を確認。
確認
ifconfigでGuestのIPアドレスを確認し、WebおよびSSHによるアクセスが可能か確認します。
Web。ifconfigで設定されたIPのままでアクセス可能。
SSHでは下記のようにポートを指定する必要はない。
ssh root@192.168.11.10
NAT + ホストオンリーアダプタ
インターネットの接続が不要ならNATなくてもよい。が、私の環境だと必要なので調査+メモ。
CentOS7だと少し操作が違います(簡単です)。文中に注記を書きます。
イメージ
イマージは下記の通り。NATに加え、両ホストに新規に(ネットワークとそれに接続可能な)ネットワークアダプタを追加して相互に通信する。
設定
まず、Toolsメニューを選択し、Createボタンを押してネットワークとネットワークアダプタを追加します。
Createアイコンがない場合は、Toolsのメニューボタン?をクリックし、ネットワークを選択します。
CentOS7の場合はこの時点で(ネットワーク or マシンを)再起動すれば追加されたアダプタが認識され、そのIPでアクセスできます。
追加されたら、Propetiesボタンを押して、設定内容を確認しておきます。
この場合、
- ネット空間は192.168.56.0/24
- Host側に追加されたネットワークアダプタのIPは192.168.56.1
ということのようです。
次に、VM側の設定を行います。
ネットワークを選択肢、アダプタ2のタブを選び、
- ネットワークアダプタを有効化
- 割り当て:ホストオンリーアタプター
- 名前:vboxnet0(先程作ったやつ)
とします。あと、設定に利用するのでMACアドレスをメモしておきます。
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が確認できます。
eth1の方のIPアドレスでWebおよびSSHアクセスできるか確認します。
Web。
SSH。
ssh root@192.168.56.2