※ 本ページはプロモーションが含まれています。
今まで自分のパソコン(PC)内でVagrant + VirtualBoxの仮想マシン環境を作り、仮想マシンでApacheなどのウェブサーバを起動してウェブサービスのテストをしていましたが、同じネットワーク内の別マシンから仮想マシンのApacheにアクセスを試したくなりました。
例えば、家のwifiネットワークでスマホからパソコン上の仮想マシンのウェブサーバにアクセスしてみたり、自分のパソコン上の仮想マシン上のウェブサービスを同じローカルネットワーク内にいる他の人(マシン)に公開するなどの使い方ができます。
環境は、こんな感じです。
OS:macOS Catalina
Vagrant 2.2.7
VirtualBox6.1.4
boxはCentOS7.1
Vagrantfileを編集します。自分のPCから自分のPC内に立てた仮想マシンにアクセスするだけならprivate_networkの行を有効にすればよかったですが、今回はprivate_networkではなくpublic_networkの行を有効にして使用します。
public_networkでは、ipとbridgeを指定します。ipはローカルネットワーク上で適当なプライベートIPアドレスです。
例えばローカルネットワークが192.168.11.0/24なら、192.168.11.11などでいいです。
ただし、同じローカルネットワーク内にある他のPCや仮想マシンがあるホストPCのプライベートIPと被らないようにだけ注意します。自分のPCのプライベートIPは、macならifconfigコマンドでわかります。また、システム環境設定->ネットワーク->Wi-Fi->詳細ボタンを押した後に、TCP/IPタブを選択すればわかるはずです。windowsでも同等のコマンドや環境設定でわかると思います。
次にbridgeの指定ですが、仮想マシンがVirtualBoxならVBoxManageコマンドでわかります。
$ VBoxManage list bridgedifs |grep '^Name:'
Name: en0: Wi-Fi (AirPort)
Name: p2p0
Name: awdl0
Name: en1: Thunderbolt 1
Name: en2: Thunderbolt 2
Name: bridge0
今回は無線wifiネットワークを使用したので、en0: Wi-Fi (AirPort)を指定しました。#bridgeを指定しない場合
config.vm.network "public_network", ip: "192.168.11.11"
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) en0: Wi-Fi (AirPort)
2) p2p0
3) awdl0
4) en1: Thunderbolt 1
5) en2: Thunderbolt 2
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
==> default:
default: Which interface should the network bridge to?1
以上で設定は終了です。仮想マシンを再起動して、その仮想マシン内でApacheなどのウェブサーバをインストールして起動すれば、同じローカルネットワーク環境にある別マシンから(スマホとかでも)、「http://192.168.11.11」でhttpアクセスできるようになります。