ログってなんぼ

エンジニアのメモです

Rails4.2:Vagrant上の仮想マシンで起動したRailsにホストのブラウザからアクセス出来ない

vagrantで起動した仮想マシンでrails sを実行し、ホストマシンのブラウザからアクセスしようとしてもエラーとなり接続できない場合のメモ。

Rails4.2以上の環境用メモ

Vagrantfile

config.vm.network "private_network", ip: "192.168.33.10"

host onlyネットワークを作っても

config.vm.network "forwarded_port", guest: 3000, host: 3030

ポートフォワードしても

host os

# /etc/init.d/iptables stop

firewallを切っても

何をしてもホストからアクセス出来ないヽ(`Д´)ノウワァァァン!!

基本に帰ってリリースノート

Ruby on Rails 4.2 リリースノート | Rails ガイド はてなブックマーク - Ruby on Rails 4.2 リリースノート | Rails ガイド

3.3 rails serverのデフォルトホスト Rackの変更 により、rails serverコマンドを実行した際のデフォルトのホストが0.0.0.0からlocalhostに変更されました。この変更は標準的なローカルでの開発ワークフローにほとんど影響を与えないはずです。http://127.0.0.1:3000 および http://localhost:3000 の動作はどちらも以前と同じであるからです。

ただし、今回の変更により、別のPCからRailsサーバーへのアクセスは以前と同じようにはできなくなります。たとえば、development環境が仮想マシン上にあり、ホストマシンからこのdevelopment環境にアクセスする場合などがこれに該当します。 このような場合、サーバーを起動する際にrails server -b 0.0.0.0とすることで、以前と同じ動作を再現できます。

以前の動作に戻す場合は、必ずファイアウォールを適切に設定し、自社ネットワーク内の信頼できるPCだけが開発用サーバーにアクセスできるようにしてください。

引用元:Ruby on Rails 4.2 リリースノート | Rails ガイド

仮想マシン上のOSでrailsを起動するコマンド

$ rails s -b 0.0.0.0

これで大丈夫です

ε-(´∀`*)ホッ

ただ、あくまでもセキュリティのために変更された仕様であることを念頭に置いて運用しましょう(´・ω・`)