エンジニアになりたい

エンジニアです

Vagrantで作った仮想環境上のサーバに他の端末からアクセスする

概要

Vagrantの仮想環境上に立てたサーバに、Androidなどの端末からアクセスする

やりかた

Vagrant

Vagrantのネットワーク機能には大きく分けて3つあり、目的によって使い分ける。

参考:Vagrantのネットワーク周りのあれこれ | Septeni Engineers' Blog | セプテーニ エンジニアブログ


種類 概要
プライベートネットワーク ホストOSとゲストOS間でのみ通信が行える
ポートフォワーディング ホストOSへの特定のポートを使った接続をゲストOSに転送する
パブリックネットワーク 同一ネットワーク内のどの端末からでもゲストOSと通信が行える


今回はポートフォワーディングを使ってホストOSの特定のポートへのアクセスをゲストOSへ転送する。

Vagrantfileのネットワークの設定をを以下のようにする。

config.vm.define :db1 do |db|
    db.vm.network :forwarded_port, guest: 80, host: 8080, :bridge => "en0: Wi-Fi (AirPort)"
end

ネットワークを forwarded_portにし、ゲストOSとホストOSのポートを指定、ネットワークインタフェースに bridge オプションを付けて、Wi-Fiネットワークからのアクセスを可能にする。

この状態で

$ vagrant up

を実行する。

既にupされていた場合は

$ vagrant reload

を実行する。

ローカル

無線LANIPアドレスを確認する。

$ ifconfig
wlan0     inetアドレス:192.168.0.2

これで、仮想環境上のサーバが動いていれば、同一のネットワークに繋いでいる端末で192.168.0.2:8080にアクセス出来るはず。

f:id:pro_shunsuke:20140922060714p:plain