2012-01-02 9 views
1

元来、サードパーティ製のホストから提供されるAMP Webアプリケーションを作成しました。Windowsネットワーク上のApache - ネットワーク内の外部IPに接続できません

クライアントが完成したので、クライアントはオフィスネットワーク内のサーバーで内部的にホストすることに決めました。アプリケーションはスタッフだけが利用できるようになっていますが、そのスタッフはしばしばオフサイトになります。 Windows Server 2003を実行している少なくとも1台のサーバーを使用するネットワークの設定には関与していませんでした。私が見たクライアントマシンはXPでした。

サーバー2003マシンにApache、MySQL、PHPをセットアップし、アプリケーションをインストールしました。アプリケーションはCodeIgniterフレームワーク上に構築されているので、base_urlを内部IP(192.168 ...)に設定し、ネットワーク内からテストしました。すべてうまくいった。

次に、私たちはネットワークの人にApacheのポート80を開くように頼んだ。私は外部IPにbase_urlを設定し、私の家からテストしました(外部IPをウェブアドレスとして使用しています)、うまくいきます。

ただし、ネットワーク内から外部IPを使用してアプリケーションにアクセスしようとすると、接続できません。 base_urlをネットワークIPにリセットして、ネットワークIPを使用してアクセスできますが、アプリケーション全体で使用されているbase_urlが内部IPを指しているため、外部接続時にアプリケーションが失敗します。

私はCodeIgniterに(変数を空文字列にしておくことによって)base_urlを決定させることができますが、なぜ外部IPがネットワーク内で失敗するのかを把握し、それを修正しようとします。

私たちが使用しているサーバーは、AMPスタック専用ではありません(実際には、IISを使用していたインターネットに少なくとも1つの他のアプリケーションと、オフィススキャナ用のFTPサーバーがあります)私はそこにいくつかの葛藤があるかもしれないと思います。

私はWindowsネットワークについてはほとんど知りません。クイック検索では、これがNATの可能性があると示唆されましたが、回避策はありませんでした。

ネットワークの人には何の示唆もなく、すべてがうまくいくはずだと言いました。

ネットワーク内のユーザーが外部IPを使用してApacheサーバーにアクセスできるようにすることは可能ですか?その場合、有効にするために何が必要ですか?

TYIA

+0

良い質問ですが、正に、これは[serverfault](http://serverfault.com)の質問である必要があります。 –

答えて

0

これはApache関連でもCI関連でもありません。ネットワーク内から外部IPアドレスに到達することは不可能です。

率直に言えば、私はそれがなぜ正確かはわかりません。 NAT(ネットワークアドレス変換)の仕組みや少なくとも実装方法と関係していることはわかっています。

の詳細については、の理由はserverfaultです。もしあなたが単にそれを扱わなければならないプログラマーなら、NATは通常、内部から外部、内部から外部にしか働かないということを受け入れます。

あなたの質問にはすでに解決策の1つが記載されています。base_urlは使用しないでください。また、サーバーを外部IPアドレス(企業のIPアドレスではなく、データセンターなど)で簡単に実行することもできます。

+0

"もしあなたが単にそれに対処しなければならないプログラマーなら" - うん!そして、私はCIとApacheのタグを付けました。なぜなら、その質問が両方の言及を参照していたからです。私はそれが重要だと思っていましたが、そうです、ネットワーキング/サーバーに関する質問です。とにかく、私は空の文字列にbase_urlを設定し、それはうまくいくようです。応答していただきありがとうございます。 – momo

2

クライアントのNATルータは、パケットに送信元IPアドレスと宛先IPアドレスを書き換えた後に、外部インターフェイス(ポート80)の外部インターフェイスに到着したパケットを内部マシンのポート80に転送します。ネットワーク内から

、外部IPアドレスに接続しようとするには、マシン上のデフォルトルート、ルータの内部インターフェイスにルーティングされます。このインターフェイスはではなく、をネットワークに戻すように設定されたです。

すべてのIPアドレスでリッスンするようにアプリケーションを設定します。クライアントがいくつかのホスト名(内部IPアドレスと外部IPアドレス)でクライアントがそれを知っていることをサーバーが認識していることを確認します。

ルータにNATファイアウォールルールを書き直して、内部インターフェイスのポート転送を実行することもできますが、家庭や小規模企業で一般的なオフザシェルの機器は、ではありません。簡単な仕事。より高価なギア(または自宅で作られた* BSD/Linuxルーターマシン)では、これを多大な労力を要することなく行うことができますが、不必要にトラフィックをルータに追加することになります。

+0

+1明確で詳細な回答 – momo

関連する問題