Vagrantのポート転送が機能しない[終了]


108

入門ガイドのvagrant最後で小さな問題が発生しています。私は、Apache2を実行している(Puppetを介したプロビジョニング)CentOSベースボックスで作業しています。次の行を使用して、Webリクエストのポート転送を設定しましたVagrantfile

 config.vm.forward_port "web", 80, 4567

しかし、そのポートにリクエストを出すと失敗します。Safariによって報告されたエラーは、「サーバーが予期せず接続を切断したため、Safariがページ“ http:// localhost:4567 / ”を開けません」です。

私がやったvagrant reloadとのこぎり「[デフォルト] -ウェブ:80 => 4567(アダプタ1)」スクロールで、だからここで私はこれをトラブルシューティングを開始する必要がありますか?ありがとう。


1
何てcurl -v 'http://localhost:4567/'言うの?時々、Safariはエラーメッセージを隠すのが少し上手すぎる。
Steve Losh

2
また、curl 'http://localhost:80'VM自体から機能しますか?そうでない場合、問題はポート転送ではありません。
スティーブロス

4
curlVM内から@Steve Losh が機能しています。curlホストから私にくれ(52) Empty reply from serverます。
ハンクゲイ

浮浪者のリロードは、同様の質問で私を助けます...
2015

私の場合はsymfony 3でした:-sudo php bin / console server:runを実行してサーバーを127.0.0.1:8000で実行すると、Webブラウザーからアクセスできず、仮想マシンのcurlにアクセスします。Webディレクトリでsudo php -S 0.0.0.0:8000を実行すると、127.0.0.1 :8082/app_dev.phpにアクセスできました。これがなぜ起こるか理解していないが、うまくいく。
Darius.V 2016

回答:


80

コメントだけではなく、これを実際の答えにします。

まずcurl 'http://localhost:80'、VM内から試してください。それが機能しない場合、それは間違いなくポート転送ではありません。

次:curl -v 'http://localhost:4567/'ホストマシンから試してください。CurlはSafariよりも優れたエラーメッセージを表示する場合があります。

ポート80へのアクセスを制限するファイアウォールが設定されていないことを確認します。デフォルトのVagrant VM(Ubuntu)にはファイアウォールが設定されていませんが、他のものを使用していると言ったので、価値があるかもしれませんチェックする。

それはそれではない場合は、Apacheはあなたが使用できる簡単なHTTPサーバでポート80 Pythonの船の上に記載された以外のものを作ってみる-でフォルダに移動index.htmlし、実行sudo python -m SimpleHTTPServer 80し、両方のボックスからカールしていることを打ってみてください。それが機能する場合は、おそらくApacheの構成の問題です。その場合、Apacheを使用するのに十分な経験がありません(nginxを使用)。


14
基本的に、私はRedHatとを吸うiptables。デフォルトポリシーがACCEPT着信接続用であることを確認するためにチェックしREJECTましたが、チェーンの最後のルールとしてキャッチオールルールがあるRedHatのカスタムルールチェーンに注意を払いませんでした。tl; drファイアウォールがあり、気付かなかった。
ハンクゲイ

ありがとう!その卑劣なファイアウォールルールが、RHEL 5.5で問題を引き起こした原因です。
Roosh

確認するのは簡単な方法なので、以下のRobertのコメントを転載します。root service iptables stopとして実行して、ゲストファイアウォールの問題をすばやく除外します。必要に応じて、後で再度有効にします。
Arnaud Meuret 2013年

1
奇妙なセントーシスのイメージで同じ問題がありました。iptablesほとんどすべてを制限していました。私はこのiptable centosガイドセクション3単純なルールセットの作成の解決策)に
従い

私にとってはcurlが内部で動作していたため、ネットワークを有効にVagrantfileしてコマンドを実行しましたvagrant reload
abhirathore2006

266

私は追加のメモを追加したいと思います。 127.0.0.1。これはループバックです。0.0.0.0すべてのインターフェースがサーバーにアクセスできるように、サーバーがバインドされていることを確認する必要があります。

Djangoの開発サーバーなどの一部の組み込みアプリサーバーと一部のRubyサーバーはデフォルトで 127.0.0.1は、デフォルトでデフォルトにれているため、注意が必要です。

それ以外は、スティーブが言ったことは当てはまります。それがVM内から機能することを確認し、他のいくつかの単純なサーバーを試して、構成の問題かどうかを確認してください。


8
これは、ショットガンを実行するwebrickに必要な修正でした。
Ronze 2013

これで問題は解決しました。Torqueboxを0.0.0.0にバインドするには、次のコマンドで実行します。torkboxrun -b 0.0.0.0
Bartek Skwira

3
はい、これが問題でした。0.0.0.0にバインドする必要があります。Vagrantが将来この問題を自動的に解消する方法があるのだろうか?
CMCDragonkai 2014年

1
sinatraとwebrickの同じ問題:「set:bind、 '0.0.0.0'」で問題が解決
pragmatic_programmer

これは私にとっての修正でした
sixty4bit 2015年

33

CentOS 6.3 w / NGINXでも同じ問題が発生し、迷惑な箱のiptablesに答えがあることがわかりました。

バガントボックスのbashから、次の手順に従います。

最初の現在のiptableルールのリスト

iptables -L -v

次に、現在のルールをフラッシュします。

iptables -F

TCPポート22でのSSH接続を許可する

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

INPUT、FORWARD、およびOUTPUTチェーンのデフォルトポリシーを設定する

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

localhostのアクセスを設定する

iptables -A INPUT -i lo -j ACCEPT

確立された関連する接続に属するパケットを受け入れる

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

設定を保存する

/sbin/service iptables save

変更されたルールのリスト

iptables -L -v

localhost:[port#]をカールするか、ブラウザで外部のvagrantからヒットします

CentOSのiptable構成の詳細については、以下を参照してください。

http://wiki.centos.org/HowTos/Network/IPTables

幸運を。


2
これを書いてくれてありがとう。Fedora 18でも同じ問題が発生したため、CentOSに固有の問題ではありません。それが他の誰かを助けることを願っています。:)
ベンジャミンオークス2013

4
これはCentOSの私です service iptables stop
ロバート

2
iptables -F一人で私のためにやった
code_monk

私はこの同じ問題を解決するためにこのブログの記事に記載されているいくつかのexecコマンドを使用して、これに対する固溶体を見つけtechie-notebook.blogspot.com/2014/05/...私はIのdidnとして$ {} os_pathセクションで自分の道を交換しなければなりませんでしたその変数は利用できません。
ジョシュアフリッケ2016年

27

私にとってより良い解決策はファイアウォールを無効にすることです

service iptables stop
chkconfig iptables off

+1私のために働いた。ローカルのVirtualBoxインスタンスを使用するために、ファイアウォールは必要ありませんでした。
Eduardo 2013年

一時的な修正が必要な場合は、良いトリックです
brrystrw

0

ミッチェルのようなノートも追加したいと思います。私の場合は80から6789に転送します

$ curl -v http://localhost:6789

そして私は得た

<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>

次に、代わりにIPアドレスを使用しましたが、正しいHTMLメッセージが表示されました。

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