まくまくVagrantノート
ホストオンリーネットワークを構成する (private network)
2016-10-31

ホストオンリーネットワークの特徴

ホストオンリーネットワーク (private network) の構成を利用すると、ホストマシンと仮想マシンの間に専用のネットワークを構築できます。

ホストオンリーネットワークにはホストマシンと仮想マシンの間だけから見えるプライベート IP アドレスを割り当てるため、既存の物理 LAN 上に存在する他のマシンからは、仮想マシンの存在を知ることはできません。 既存の LAN への影響がないため、パブリックな環境でも安心して利用できるネットワーク構成と言えます(既存の物理 LAN とは異なるネットワークに割り当てて使用します)。

物理 LAN 上のマシン ----[NG]----> 仮想マシン

一方で、ホストマシンと仮想マシンは同じ専用ネットワークに所属することになるため、相互に自由なアクセスが可能です。 例えば、仮想マシンからホスト上で動作しているサービスを利用する、といったことが行えます。

ホスト <----[OK]----> 仮想マシン

ポートフォワードを利用したネットワーク構成と比べ、各マシンで動作するサーバに素のポート番号でアクセスできる(HTTP サーバにポート 80 でアクセスできる)ため、シンプルで分かりやすいネットワーク構成になります。

ホストオンリーネットワークを構成する

ホストオンリーネットワークを構築するには、config.vm.networkprivate_network を指定します。 ここでは、プライベートネットワークとして 192.168.100.0 というネットワークアドレス使用することにします。 仮想マシンには 192.168.100.10 という IP アドレスを割り当てます。 仮想マシンの IP アドレスの末尾は1にしないようにしてください(後述)。

Vagrantfile(DHCP で構成する)

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.network "private_network", ip: "192.168.100.10"
end

あとは Vagrant 仮想マシンをリロードすれば設定が反映されます。

$ vagrant reload

ホスト側に割り当てられるプライベートアドレス

ホストオンリーネットワークを構成すると、ホスト側のアドレスとしては、ネットワークアドレスの下位オクテット(最後の8ビット)が1になったアドレスが割り当てられます。 仮想マシン側のアドレスの末尾を1にしなかったのはそのためです。

ホスト側の IP アドレスを確認してみると、Host-Only Network というセクションで、192.168.100.1 と割り振られていることがわかります。

C:\> ipconfig
...
イーサネット アダプター VirtualBox Host-Only Network #4:

  接続固有の DNS サフィックス . . . :
  リンクローカル IPv6 アドレス. . . . : fe80::840f:cd57:4fa2:9c8c%20
  IPv4 アドレス . . . . . . . . . . : 192.168.100.1
  サブネット マスク . . . . . . . . : 255.255.255.0
  デフォルト ゲートウェイ . . . . . :
...

仮想マシン側からは、このアドレスを指定することでホストマシンにアクセスできます。

2016-10-31