web-dev-qa-db-ja.com

IIS機能していて、ネットワークの外でルーターの後ろにアクセスできるようにするにはどうすればよいですか?

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

  1. インストール済みIIS 7.5 with PHP over FastCGI
  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ファイアウォール、ルーターの管理など)を行う必要がありますか?

よろしくお願いします!

9
soapergem

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

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

まず、カーネルレベルでHTTP.SYSに、「URL予約」を行うことにより、誰でもこのURLにアクセスできるようにすることを通知する必要があります。管理コマンドプロンプトから:

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

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

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

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

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

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

  3. IISで port binding を変更してから、Webサイトを再起動します。

2
Joel E Salas

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

0
Larry Fortna