ホームネットワーク上のWEBrickに接続できません


3

私はAndroid開発者であり、多くの場合、アプリケーションにはサーバー側のコードが必要です。通常、WebアプリにはRuby on Railsを使用し、開発中にローカルマシン(Mac OS X)でWEBrickを使用してサーバーを実行します。オフィスに着く朝、私はコンソールでifconfigを実行して、その日ラップトップに与えられたIPを確認します。問題のWebアプリにリクエストを送信するときに、AndroidアプリでそのIPを使用します。

私がオフィスにいるとき、これはすべてうまくいきます。

家に帰ると、同じことをしようとし、ifconfigを介してラップトップのIPを見つけ、アプリの構成ファイルに設定しますが、宛先が見つかりません。ハードルのセットからアプリを除外するために、携帯電話のブラウザーからWebサーバーIP(例:http : //192.168.1.4 : 3000)にアクセスしようとしましたが、接続できません。Webサーバーを実行しているラップトップから試した場合、正常に動作します。同じネットワーク上の別のマシンから試しても、接続できません。

これを考えると、私はそれを私のホームネットワークのある種の構成に絞り込んだと思いますが、私は率直に言って原因が何であるか分かりません。自宅には特別なものはありません。基本的なVerizon FiOSルーター/モデムはすべてWi-Fi経由で接続されています(仕事中の電話とラップトップの両方のWi-Fi、fyi)。Verizonルーターのファイアウォールを無効にし、ポート転送を有効にしようとしましたが、ポート3000でできることはほとんど何も変わっていません。

親愛なるサーバー障害の天才、貧しい開発者を助けてください。:)

編集:

追加するフォローアップ項目もあります。Macのファイアウォールはアクティブではなく、すべての着信要求は許可されます。また、携帯電話とラップトップで同じネットワーク(192.168.1.4 Mac、192.168.1.9電話)にあることを確認しました。私は持っていないこれが動作しない理由を考えて。

編集2:

システム環境設定に入り、Web共有を有効にして、電話からWebサイトを表示しようとしましたが、接続できませんでした。したがって、これはWEBrickやRailsに関連するものではありません。マシンのファイアウォールがオフになっており、ルーターのファイアウォールがオフになっています。

編集3:

いくつかの進歩。私はラップトップへのポート3000のポート転送を設定し、外部IPを見つけて、それを使用し、正常に接続しました。ですから、私の内部ネットワークには、正しくセットアップされていないものが間違いなくあります。


そのIP:portでTCPレベルの着信試行があるかどうかを確認しましたか?私の最初の推測は、着信リクエストがブロックされることです。同じマシンからは自然にブロックされません。ルーターのファイアウォールオプションを探してみてください。
空手

私はルーターのオプションを見て回ったが、アクセスログを見つけたのではなく、一般的な設定ログだけを見つけた。ファイアウォールを完全に無効にしましたが、まだ接続できませんでした。
クリススチュワート

ルーターではありません:-)コンピューターのファイアウォールのログ(iptablesMacにあるのか、何にあるのかわかりません)。tcpdump特定の:3000ポートでリッスンして、何かが起こっているかどうかを確認することもできます。
空手

オフィスにいるときに機能するため、マシンでブロックされた着信リクエストを想像することはできません。
クリススチュワート

ルーターの設定をいつでもリセットして再構成することができます。
コバルツ

回答:


0

このrails s -p 80のようにWEBrickを実行して、ポート80を強制しましたか。ルーターに問題がある場合は、別のポートを試してみてください。

コンピューターを直接接続し、直接接続されたコンピューターからアクセスすることをお勧めします。お使いのルーターは、2つのネットワークを持つおかしなルーターの1つである可能性があります。メインワイヤレスネットワークとゲストワイヤレスネットワーク。すべてのデバイスが同じ物理ルーターに接続されていても、ユーザーは互いに分離された異なるネットワーク上にいます。ラップトップのワイヤレス設定をチェックし、そうでないことを確認します。


1
ポート80を強制的に変更しようと試みましたが、異なるネットワークの可能性を検討します。
クリススチュワート

Androidデバイスがルーターに接続したときに取得するIPとゲートウェイを確認できますか?ルーターは、接続されているデバイスと少なくともIPアドレスを一覧表示できる必要があります。
空手犬

ラップトップと電話の両方のIPを元の投稿に追加しました。ゲートウェイ情報がどこにも見つかりません。
クリススチュワート

0

一部のルーターには、ワイヤレスクライアント間の通信を無効にするオプションがあります。ルーターのワイヤレス設定を確認し、そのようなオプションが有効になっているかどうかを確認してください。「分離」モードなどと呼ばれる場合があります。ルーターの実際の製造元/モデル番号を提供できる場合は、ドキュメントを調べて、そのようなオプションがルーターで利用可能かどうかを確認するのに役立つ場合があります。

お使いの携帯電話やノートパソコンの場合は、両方を持っている192.168.1.4(あなたが説明したように)自分のIPアドレスとして、その後、彼らはありません同じネットワーク上(または真剣に誤って設定してインターネットにアクセスすることはできません)。


おかげで、私は見てみましょう。元の質問を修正しました。電話は.9で、ラップトップは.4。です。
クリススチュワート

0

一部のWindows 7マシンでは、異なるネットワーク(パブリック、ホーム、職場)があることを知っています。マシンを自宅でパブリックとして接続すると、サイトが表示されなくなる可能性があります。しかし、あなたのオフィスでは、接続は職場または自宅に設定され、Webrickが開かれました。自宅への接続を無効にし、その接続を忘れてみます。新しいものを確立し、ホームに設定してみてください。

[ネットワーク]で、現在ネットワークの場所として選択しているものに応じて、[ホームネットワーク]、[職場ネットワーク]、または[パブリックネットワーク]リンクをクリックします。(下のスクリーンショットを参照) ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください


私のラップトップはMacなので、その区別はありません。
クリススチュワート

0

どこからでも接続できるようにするには、IP 0.0.0.0にバインドするオプションを使用してWebBrickを実行する必要があります。それ以外の場合は、127.0.0.1にのみバインドし、localhostからの接続のみを受け入れます。

rails server -b 0.0.0.0


rails server --help
    -b, --binding=IP                 Binds Rails to the specified IP.
                                     Default: localhost

ソース:Rails開発者

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