web-dev-qa-db-ja.com

Vagrantのポート転送が機能しない

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

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

しかし、そのポートにリクエストを送信すると失敗します。 Safariが報告するエラーは、「サーバーが予期せず接続を切断したため、Safariがページ「 http:// localhost:4567 / 」を開くことができません」です。

vagrant reloadを実行し、スクロールで[[default]-web:80 => 4567(adapter 1)]を見たので、どこでトラブルシューティングを開始すればよいですか?ありがとう。

106
Hank Gay

多くの場合、これはVM内のサーバーがループバックである127.0.0.1にバインドするため、これが原因であるという注意を追加したかったのです。すべてのインターフェイスがアクセスできるように、サーバーが0.0.0.0にバインドされていることを確認する必要があります。

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

それ以外に、スティーブが言ったことは真実です:VM内から動作することを確認し、他のいくつかの簡単なサーバーを試して、構成の問題かどうかを試してみてください。

257
Mitchell

CentOS 6.3 w/NGINXでも同じ問題が発生し、その答えはvagrantボックスの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

ローカルホストのアクセスを設定する

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

幸運を。

32
travyo

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

service iptables stop
chkconfig iptables off
27
edwinallenz

ミッチェルのような別のメモも追加したいと思います。私の場合、80から6789に転送します

$ curl -v http://localhost:6789

そして私は得た

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

次に、代わりにIPアドレスを使用し、正しいHTMLメッセージを取得しました。

0
Larry Cai