IISを機能させ、ルーターの背後にあるネットワークの外部にアクセスするにはどうすればよいですか?[閉まっている]


9

私のマシンはWindows 7 Ultimateを実行しています。これが私がこれまでに(成功して)行ったことです:

  1. FastCGIでPHPを使用してIIS 7.5をインストール
  2. うまくいきました!http://localhost/index.phpにアクセスすると、PHPスクリプトが正常に実行されます。
  3. ipconfigを実行して、ローカルIPアドレスが192.168.1.102であることを確認しました。http://192.168.1.102/index.phpが上記のlocalhostアドレスとまったく同じように機能することを確認しました。
  4. 私のルーター管理(Linksys WRT54G2を持っています)に入り、ポート80のポート転送を192.168.1.102に設定しました。これで、ポート80が私のマシンに転送されます。
  5. Windowsファイアウォールで受信規則を設定して、ポート80でのすべてのアクティビティを許可します。
  6. 私の外部IPアドレスがGoogleのものであることがわかりました。それをXXX.XX.XX.XXと呼びましょう。

ただし、自分のマシンから、または遠く離れてネットワーク上にないコンピューターからhttp://XXX.XX.XX.XX/index.phpにアクセスしようとすると、何も表示されません。それはしばらくの間(失敗して)接続しようとしますが、最終的にはあきらめます。

これが私が思っていることです:

  1. 何が欠けていますか?私は何を忘れましたか/見落としましたか?これを機能させ、自分のローカルネットワークの外からアクセスするにはどうすればよいですか?
  2. これを機能させるとしたら、どうやってポート80以外のポートを使用できますか?それを可能にするために、どのような変更(IIS、Windowsファイアウォール、ルーター管理など)を行う必要がありますか?

よろしくお願いします!


1
ここにあなたのポートが正常に転送されているかどうかを確認してくださいyougetsignal.com/tools/open-ports
12

回答:


5

これは、発生しているHTTP.SYSの問題のように聞こえます。

以下は、localhostの外部でIISExpressを公開する方法を説明するScott Hanselmanのブログからの抜粋です。ブログの投稿は長くなり、SSLをすべて接続する方法も説明されています。しかし、私が彼の投稿から引き出した以下に投稿したコマンドは、あなたが抱えている問題を解決するのに役立つと思います。

まず、カーネルレベルでHTTP.SYSに、「URL予約」を作成することでこのURLに誰もが話しても問題ないことを伝える必要があります。管理コマンドプロンプトから:

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

次に、外部(ローカルホストだけでなく、ネットワーク上の人など)からIIS Expressと通信できるようにしたいので、IIS ExpressがWindowsファイアウォールを通過できるようにする必要があります。Windowsからグラフィカルに実行するか、次のように入力します。

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

ファイアウォールルールをすでに作成していると述べているので、最後のコマンドは必要ない場合があります。


最初のnetshコマンドを実行してURL予約を追加しましたが、これは何もしませんでした(まだローカルで機能していますが、ネットワークの外部では機能していませんでした)。他のアイデアは?
soapergem 2012

これは正しくありません。実際のIIS 7.5インスタンス(IIS Expressではない)をポート転送するために、http.sysをいじくり回す必要はありません。
TristanK

2
  1. (ネットワークの外部からのアクセス)多くの住宅用ISP(および一部のビジネスISP)は、ポート80や25などの特定のサービスポートでインバウンドトラフィックをブロックします。これは通常、帯域幅の使用により、住宅用ラインでビジネスサービスを実行できないようにするためです。別の方法は、別のポートで実行することです(以下を参照)。

  2. (ネットワーク内部からのアクセス)あなたが説明している状況は、ヘアピンNATのように聞こえます。これがヘアピンNATの概要です。NATルールをルーターに追加して、常に外部IP宛てのトラフィックを作成する必要があります。ポート80はルーターを通過し、ネットワーク内のホストからホストへ直接ではありません。警告:ルーターが実際にこれを実行できない場合があります。

  3. IIS のポートバインディングを変更してから、Webサイトを再起動します。


IISにバインディングを追加して、ポート8080で動作するようにしましたが、これもローカルで動作します。したがって、192.168.1.102:8080 / index.phpは機能します。また、Windowsファイアウォールにポート8080の受信規則を追加しましたが、それでもネットワークの外部では機能しません。Linksys WRT54G2ルーターにNATルールを追加することを検討しましたが、オンラインで見つけたヘルプには、「ポートトリガー」オプションの設定が含まれるとのことでした。私はこれをセットアップしましたが、それでも...サイコロはありません。他に何か提案はありますか?
soapergem

1
内部でアクセスできる場合、Windowsファイアウォールは問題ではありません。ポートトリガーはあなたが望むものではありません。(ルーターがサポートしている場合は)ポート転送を使用します。ルーターの外部インターフェイスのポート8080でトラフィックを192.168.1.102:8080に転送します
Joel E Salas

私は質問する前に、すでにそれを行っていました(ポート80と8080の両方でのポート転送)。どうやら、まだ何かが足りないようです。
soapergem

ルーターには、トラフィックをブロックしている可能性のある実際のファイアウォールルール(NATルール以外)がありますか?可能な場合は、pfSenseを実行するボックスをセットアップして、デバッグ用のルーターとして使用します。ルーター(ホスティングサービス用に設計されていない)が問題の原因であることはほぼ間違いありません。
Joel E Salas、2012

IISレベルで何も問題がなかったようです。ルーターが直感的ではない、またはISPがブロックしているだけです。IPが二重間接であると考えることも可能です。外部IPが何であるかについてのルーターの考えを確認してください。
TristanK

0

私も同じ問題を抱えていました。Windowsファイアウォールがアクセスをブロックしています。オフにして、もう一度確認してください。うまくいくと思います。


2
ファイアウォールをオフにするだけでは、一般に良い解決策ではありません。
user9517 2013年

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