ホストからVMのRailsサーバーにアクセスできません


12

仮想マシンにRailsサーバーがあり、ホストからローカルホストにアクセスする必要があります。NAT(ポート転送-ゲスト側のポート80および3000)とブリッジアダプターの両方を試しましたが、何も機能しないようです。

どちらの場合も、ポート80にアクセスできましたが、ポート3000でローカルホストに接続しようとして失敗しました(xamppサーバーへのアクセスに問題はありませんでした)。

サーバーがゲスト側にある間に、ホストからローカルホストにアクセスする方法を知っているかどうか教えてください。

ゲストにはLinux(debian)があり、ホスト側にはWindows 7があります。VirtualBoxを使用しています。

回答:


10

ここでは、少なくとも3つの別個のコンポーネントが動作しており、それぞれを正しく構成する必要があります。

Railsバインディングアドレス

Rails(または別のサーバーアプリケーション)が開いてネットワーク接続を受信すると、IPとポートの両方にバインドされます。着信要求がこれらの両方に一致しない場合、接続を受け入れません。からrails server --help

Usage: rails server [mongrel, thin etc] [options]
-p, --port=port                  Runs Rails on the specified port.
                                 Default: 3000
-b, --binding=IP                 Binds Rails to the specified IP.
                                 Default: localhost
...

そのため、デフォルトでは、Railsはlocalhost(ループバック)ネットワークアダプター(と呼ばれるlo)に送信された要求のみを受け入れます。このアダプターは同じコンピューター内からしかアクセスできないため、受け入れられる要求はDebian VM自体からのみです。テストには適切で安全ですが、実稼働や別のコンピューターからのテストには役立ちません。

Railsを他のコンピューター(Windows 7ホストを含​​む)からアクセスできるようにするには、Debianが持つ外部からアクセス可能なIPアドレスにバインドするようRailsに指示する必要があります(以下を参照)。

ただし、簡単な方法は、Railsに特別なIPアドレスにバインドするように指示0.0.0.0することです。これは、ネットワークアダプターを意味します。そのため、Railsサーバーを次のように起動します。

rails server -p 80 -b 0.0.0.0

ネットワーク上でVMを見ることができるすべてのユーザーがWebサイトにアクセスできるようにします。

これは、他の2つのコンポーネントが機能していても、いまだに混乱しているものです。

VM IPアドレス

独自の個別のコンピューターであるDebian仮想マシンにブラウザーを向ける必要があります。

経験則でlocalhostは、常に同じコンピューターを参照します。ただし、ネットワーキングの目的上、Debian VMは独自のコンピューターです。Windows 7ホストでWebブラウザーを使用している場合、localhost常にWindows 7のみを参照します。

ここには2つのオプションがあります。

  • VirtualBox VMアダプターをブリッジモードに設定します(質問で説明したとおり)。これにより、Windows 7ホストと同じoutside / home / workネットワークにDebianが直接配置されます。その後、を実行してDebian VMのIPを確認できますifconfigeth0またはeth<something>アダプタのIPを探します。これをブラウザのアドレスバーに接続します。

  • NATアダプターとVirtualBoxポート転送を使用します。IMOこれはもっと複雑です。

Debianファイアウォール

Debianに取り組んでからしばらく経ちましたので、現在のデフォルトが何であるかはわかりませんが、上記の2つのことがうまくいかない場合は、検討する価値があるかもしれません。Debianがファイアウォールを実行している場合、別のマシンからアクセスしたいポートを開く必要があります。

お役に立てれば :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.