質問: vagrantで仮想環境を構築したのち、vagrant upすると「ssh address:127.0.0.1:2200」と表示されるため、これをホストにしてfilezilla等で接続設定をします。 しかし、仮想環境にhttpdサーバーを立てる際、vagrantfileにて「config-vm.network"private-network",ip:"192.168.33.10"」をコメントアウト設定するため、ブラウザからの接続先は「192.168.33.10」となります。 ファイル転送ソフトからの接続先は「127.0.0.1:2200」 ブラウザからの接続先は「192.168.33.10」 と異なることが不思議でならないのですが、こういうケースはvagrant特有の現象なのでしょうか? (一般的なレンタルサーバーでFTP設定した際は、どちらの同じIPだったと記憶しています)
回答: しいて言えば、Vagrant 特有なもので、一般的ではありません。 Vagrant で仮想環境を立ち上げると、自動的にローカルの適当なポート(Vagrant の実行時に決まるので固定のポートではない)が、仮想環境の 22 番ポートに転送されるようになります。Vagrant がゲストに接続するときにはこのポートが使用されます。(`vagrant ssh` とかプロビジョニングとか)。 一方、それとは別に Vagrant ではネットワークの設定を行うことができます。ネットワークの設定には下記の 3 種類があります。SSH 以外でゲストに接続するためにはこれらのいずれかを設定する必要があります。 * `forwarded_port` * `public_network` * `private_network` 質問では `private_network` について言及されていますが、これはホストに作成された仮想デバイスを用いてホストの中だけで有効なプライベートネットワークを作って、そのプライベートネットワークにゲストを接続する、というものです。 もう少し噛み砕いて説明すると、、、 * `ssh address:127.0.0.1:2200` のようなものは Vagrant がゲストに SSH に接続するためにもともと持っている仕組み - 特に設定しなくても自動的に作られる - SSH しか繋げられない * `private_network` はホストとゲストをプライベートネットワークで繋ぎたいときにする設定 - 設定すれば有効になる - SSH 以外でも接続することができる (ちなみに `private_network` には、ホストとゲストは接続せずに、ゲスト同士のみを接続する、というオプションもあります)