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 ガイド
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だけが開発用サーバーにアクセスできるようにしてください。
仮想マシン上のOSでrailsを起動するコマンド
$ rails s -b 0.0.0.0
これで大丈夫です
ε-(´∀`*)ホッ
ただ、あくまでもセキュリティのために変更された仕様であることを念頭に置いて運用しましょう(´・ω・`)