すたらブログ

文系Webプログラマの備忘録

Windows, Vagrant: LAN内の機器から仮想マシンへのアクセスを可能にする

目次


要望

あるPC内の仮想マシンに置いたWebページを、LAN内の別の機器のブラウザで開いて表示を確認したいです。

環境

  • ホストPCのOS: Windows7 64bit
  • VirtualBox 4.3.12
  • Vagrant 1.7.2
  • 我が家のLANの範囲: 192.168.1.0/24 (192.168.1.0 255.255.255.0)

手順

まず、仮想マシンに割り当てるIPアドレスを決めます。
既存の機器のIPアドレスと被らないように注意します。
下記のソフトはLAN内の機器を一括検知できるので便利です。

あとは、Vagrantfilevm.network "public_network"を追記するだけです。

私はプライベートネットワークの設定を削除して、上記のパブリックのみにしました。
(削除した行: config.vm.network 'private_network', ip: '192.168.33.10')
共有フォルダを有効にするにはプライベートが必要だという情報も見かけましたが、私が使っているバージョンでは必要ありませんでした。
実際のVagrantfileは下記のとおりです。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = 'centos65-x86_64-20140116'
  config.vm.network 'public_network', ip: '192.168.1.100'
  config.vm.synced_folder '../../server', '/var/www/html'
  config.vm.provision :chef_zero do |chef|
    chef.cookbooks_path = './'
    chef.run_list = 'recipe[my-lamp::default]'
    chef.json = {
      :php => {
        :timezone => 'Asia/Tokyo',
        :allow_from => '192.168.'
      }
    }
  end
end

余談: ブリッジアダプターを確認

VirtualBoxの設定画面のネットワークの項目を確認すると、ホストオンリーアダプターが消えてブリッジアダプターが追加されています。
Vagrantを使わない場合でも、ブリッジアダプターとして実際にホストPCがネット接続に使用しているアダプタを選ぶと、仮想マシンもLANの一員として認められます。…というのを一昨年の講師研修で教わりました。
懐かしい… (遠い目)


余談: XAMPP for Windowsの場合

XAMPPの場合は簡単です。
自分のPCのIPアドレスipconfigコマンドで調べて、スマホからそこにアクセスするだけです。
たとえば下記のように表示されたならhttp://192.168.1.20へアクセスします。

> ipconfig
イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::2596:6fa0:28fc:bb86%9
   IPv4 アドレス . . . . . . . . . . . .: 192.168.1.20
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 192.168.1.1