web-dev-qa-db-ja.com

Vagrantでのポート転送時の接続リセット

Ubuntu 12.04 LTS OSを実行しているVagrant/VirtualBoxがあります。ゲストポート8000​​をホストポート8888に転送するようにVagrantを設定しました。

[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 8000 => 8888 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use! 

仮想マシンが起動したら、Django devサーバーをポート8000​​で起動します。

Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

わかりました。バックグラウンドに配置でき、curl localhost:8000とサーバーからいくつかの出力を取得します

<div id="explanation">
  <p>
    You're seeing this message because you have <code>DEBUG = True</code> in your
    Django settings file and you haven't configured any URLs. Get to work!
  </p>
</div>

しかし、Firefox/Chrome/Telnetを使用してホストマシンからサーバーにアクセスしようとすると、接続リセット/接続喪失/ ERR_CONNECTION_RESETなどが発生します。

最初に、それはいくつかのiptablesのことかもしれないと思いましたが、Ubuntuはデフォルトですべてを許可していることがわかりました。ホストマシンのファイアウォールもオフにしました。どうすればこれの底に到達できますか?

30
Mark

Django 127.0.0.1:8000(デフォルト)でリッスンしていた

ここのミッチェルの答えで説明されているように Vagrantのポート転送が機能していません 0.0.0.0でリッスンしているはずです。これが彼の答えの引用です:

多くの場合、これはVM内のサーバーによって引き起こされます。これはループバックである127.0.0.1にバインドされるためです。サーバーを確実にすべてのインターフェースがアクセスできるように、0.0.0.0にバインドされています。

Djangoを使用している場合は、次のようにして開発サーバーを起動します。./manage.py runserver 0.0.0.0:8000

78
Mark

1)。プロジェクトは_python manage.py runserver 0.0.0.0:8000_として実行する必要があります。
これで問題が解決しない場合

2)。 Vagrantfileを開いて追加します
_config.vm.network "forwarded_port", guest: 8000, Host: 8001_この後
_# config.vm.network "forwarded_port", guest: 80, Host: 8080_行

私の場合、この作業;)

注:_vagrant up_を実行すると、この転送ポート情報が提供されます
_...._
_==> default: Forwarding ports..._

default: 8000 => 8001 (adapter 1)
default: 22 => 2222 (adapter 1)

2
GrvTyagi

別の解決策は sshトンネリング をvagrantで使用することです。ターミナルを開き、cdVagrantfileがあるディレクトリに移動します。 VMが稼働していると仮定して(vagrant up)、次のコマンドを実行します。

# save vagrant ssh config to a file named `vagrant-ssh-config`
vagrant ssh-config > vagrant-ssh-config

その後、ゲストのポート8000​​をホストに転送します。

ssh -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default

ブラウザを開いて127.0.0.1:8000を確認してください。

前のコマンドは、sshサーバーでシェルも開くことに注意してください。 sshサーバーでシェルなしでsshトンネルを開く場合は、-Nを追加します

ssh -N -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default
1
Levon