web-dev-qa-db-ja.com

同じネットワーク上の別のコンピューターからローカルSinatraサーバーにアクセスできない

テキストメイトを介して実行する単純なSinatraサーバーがありますが、同じネットワーク上の別のコンピューターからアクセスできません。

Mac OS 10.8.3でRuby 1.9.3p327およびSinatra 1.4.1を実行しています。ファイアウォールが無効になっています。

同じシナリオを別のネットワークとコンピューターでテストしました。

コンピューターは単純なpingに応答しますが、ポート4567にtelnetで接続しようとすると、接続を確立できません。

44
Thiago Peres

セキュリティ上の問題により、開発モードで Sinatraへの最近のコミット がデフォルトのリスンアドレスを0.0.0.0からlocalhostに変更しました。

ネットワークからのアクセスを明示的に許可するには、アプリを別のモード(本番など)で実行するか、 bindオプション0.0.0.0に設定する必要があります。

これは、組み込みサーバーを使用してコマンドラインから-oオプションを使用して実行できます。

$ ./my_sinatra_file.rb -o 0.0.0.0
89
matt

Sinatraサーバーがローカルホスト(127.0.0.1)のIPアドレスのみをリッスンしていないことを確認します。

5
DGM

私は、私のような人々が頭を壁にぶつけているのを助けるかもしれない少しの追加情報で口をそろえています。

私はMacではなくWindowsマシンを使用しており、使用しているポート(Sinatraのデフォルトは4567)を一般に公開する必要がありました(大学のネットワークに接続している場合でも)。

Windows 10でこれを行うには:

  1. Windowsキーを押す
  2. ファイアウォールを検索してEnterキーを押します
  3. 詳細設定に移動
  4. 左上のインバウンドルールをクリックします
  5. 右上の新しいルールをクリックします
  6. ポートオプションをクリックします
  7. ポートを入力してください(おそらくシナトラの場合は4567)
  8. そして、domain/private/publicから選択します。

次に考慮すべきもう1つのことは、Webサーバーにアクセスできるユーザーです。あなたが誰かをしたい場合は、パブリックを選択してください。同じパブリックネットワーク上のデバイスのみを接続する方法は確かにわかりません(他の人の入力も気に入っています)。特定のIPの通過を許可することもできますが、そのためには自分で調査することをお勧めします。

0
Jellio