鉄道模型シミュレーター(VRM)を紹介するホームページ「CaldiaのVRM Room」の更新情報と、Caldia本人の日常ぐだぐだ日記。
死ぬほど苦労したので記述。
対象OS:
Windows7
Windows2008
Windows2008R2
WindowsHomeServer2011
対象プログラム:
IIS(インターネットインフォメーションサービス)7.5
現象:
IIS7.5で同一ネットワーク内は繋がるのに、ルーターの外側から接続できない人。
具体的にはFTPSで接続しようとして内部ネットワークでは問題なく繋がるのに、外部ネットワークから繋ごうとすると、ログインはできるのに、フォルダやファイル一覧を取得する箇所で停止してしまう人。
原因:
FTPS接続時はクライアントの設定にかかわらず、PASVモードでの接続を強制される。
接続確立時にIIS7.5がPASVで使用するポート番号をクライアントに通知するのだが、この時、通知されるポート番号範囲は既存設定で「49152~65535」の範囲に固定されており、この範囲のポート番号をルーター側でポート開放されていない場合、前述したように、フォルダやファイル一覧を取得する箇所(つまりPASVポートを使用してデータをやり取りするタイミング)で停止してしまう。
対策:
しかし、既存設定のポート番号の開放範囲はかなり大きく設定されており、もう少し範囲を狭めたいユーザーや、ポート番号を変更したいユーザーも居るだろう。
ここでハマったのだが、IIS7.5のPASVで使用するポートを変更するにはコマンドプロンプトでしか設定できないということ。
これがわからずに、自分は友人と完徹する羽目になった。
以下に具体的なコマンドを記述する。
※コマンドプロンプトを管理者特権で実行する
例:
コンピューターの動的ポート範囲を表示:
◆netsh int ipv4 show dynamicport tcp
コンピューターの動的ポート範囲を10000~11000に設定:
◆netsh int ipv4 set dynamicport tcp start=10000 num=1000
FTPSでサーバーに繋ぐ際に接続可能な人と、接続不可能な人がいる場合はこのあたりの設定を疑うといいだろう。
参考URL:
http://support.microsoft.com/kb/929851
以上